1. 什么是JWT
Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。
通 俗 说 : \color{#FF3030}{通俗说:} 通俗说:
- 在数据传输过程中还可以完成数据加密,签名等相关处理。
2.JWT应用场景
- 授 权 : \color{#FF3030}{授权:} 授权::一旦用户登陆,每个后续请求包括JWT,从而允许用户访问该令牌的路由和资源:单点登录
- 信 息 交 换 : \color{#FF3030}{信息交换:} 信息交换:信息交换 :在A,B系统之前信息传输。
JWT 原理
JWT组成
header.payload.signature用点隔开
- 头部(header)
{
"typ": "JWT",
"alg": "HS256"
}
Base64 编码
- 有效载荷(payload)
{
"uid": "1234567890",
"name": "John Doe",
"admin": true
}
Base64 编码
-
签名(signature)
-
该部分是签名,以token的前两部分作为明文,用共同协商好的秘钥进行签名。
-
如:用的第一部分选择的算法是HMAC-SHA256,执行以下操作得出签名值
HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
使用JWT
1. 引 入 依 赖 : \color{#9B30FF}{1.引入依赖:} 1.引入依赖:
<!-- https://mvnrepository.com/artifact/com.auth0/java-jwt -->
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.10.3</version>
</dependency>
2. 生 成 t o k e n : \color{#9B30FF}{2.生成token:} 2.生成to