您当前位置:资讯中心 >服务器 >浏览文章

面试官:什么是JWT?为什么要用JWT?

来源:互联网 日期:2023/12/6 9:10:28 阅读量:(0)

目前传统的后台管理系统,以及不使用第三方登录的系统,使用 JWT 技术的还是挺多的,因此在面试中被问到的频率也比较高,所以今天我们就来看一下:什么是 JWT?为什么要用 JWT?

1、什么是 JWT?

JWT(JSON Web Token)是一种开放标准(RFC 7519),用于在网络上安全传输信息的简洁、自包含的方式。它通常被用于身份验证和授权机制。JWT 由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。

头部(Header)包含了关于生成该 JWT 的信息以及所使用的算法类型。

载荷(Payload)包含了要传递的数据,例如身份信息和其他附属数据。JWT 官方规定了 7 个字段,可供使用:

  • iss (Issuer):签发者。
  • sub (Subject):主题。
  • aud (Audience):接收者。
  • exp (Expiration time):过期时间。
  • nbf (Not Before):生效时间。
  • iat (Issued At):签发时间。
  • jti (JWT ID):编号。

签名(Signature)使用密钥对头部和载荷进行签名,以验证其完整性。

JWT 官网:https://jwt.io/

2、为什么要用 JWT?

JWT 相较于传统的基于会话(Session)的认证机制,具有以下优势:

  • 需服务器存储状态传统的基于会话的认证机制需要服务器在会话中存储用户的状态信息,包括用户的登录状态、权限等。而使用 JWT,服务器无需存储任何会话状态信息,所有的认证和授权信息都包含在 JWT 中,使得系统可以更容易地进行水平扩展。
  • 域支持由于 JWT 包含了完整的认证和授权信息,因此可以轻松地在多个域之间进行传递和使用,实现跨域授权。
  • 应微服务架构在微服务架构中,很多服务是独立部署并且可以横向扩展的,这就需要保证认证和授权的无状态性。使用 JWT 可以满足这种需求,每次请求携带 JWT 即可实现认证和授权。
  • 自包含JWT 包含了认证和授权信息,以及其他自定义的声明,这些信息都被编码在 JWT 中,在服务端解码后使用。JWT 的自包含性减少了对服务端资源的依赖,并提供了统一的安全机制。
  • 扩展性JWT 可以被扩展和定制,可以按照需求添加自定义的声明和数据,灵活性更高。

总结来说,使用 JWT 相较于传统的基于会话的认证机制,可以减少服务器存储开销和管理复杂性,实现跨域支持和水平扩展,并且更适应无状态和微服务架构。

3、JWT 基本使用

在 Java 开发中,可以借助 JWT 工具类来方便的操作 JWT,例如 HuTool 框架中的 JWTUtil。

HuTool 介绍:https://doc.hutool.cn/pages/JWTUtil/

使用 HuTool 操作 JWT 的步骤如下:

  • 添加 HuTool 框架依赖
  • 生成 Token
  • 验证和解析 Token

(1)添加 HuTool 框架依赖

在 pom.xml 中添加以下信息:

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.16</version>
</dependency>
关键字:
声明:我公司网站部分信息和资讯来自于网络,若涉及版权相关问题请致电(63937922)或在线提交留言告知,我们会第一时间屏蔽删除。
有价值
0% (0)
无价值
0% (10)

分享转发:

发表评论请先登录后发表评论。愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。