1. JWT是什么?2. JWT有什么用?3. JWT的结构是怎么样的?4. JWT有什么优势?5. Bearer验证6. Maven 依赖
1. JWT是什么?JSON Web Token是一个用于在各方之间安全地传输信息的令牌。
此令牌可以验证和信任,因为它是数字签名的。
JWT可以使用密钥(HMAC算法)或使用RSA或ECDSA的公/私钥进行签名。
2. JWT有什么用?
授权:这是JWT最常见的使用场景。用户登录后,每个后续请求都将携带JWT,从而允许用户访问该令牌允许的路由,服务和资源。单点登录是当今广泛使用JWT的一项功能,因为它的开销很小且能够在不同的域中轻松使用。
信息交换:JWT是可以在各个应用服务之间安全传输信息的好办法。
3. JWT的结构是怎么样的?JWT由以 . 分隔的三部分组成
完整格式为 Header.Payload.Signature
xxxxx.yyyyy.zzzzz
Header(头): 由 令牌的类型 + 签名算法 组成JSON字符串
如
{
"alg": "HS256",
"typ": "JWT"
}
1. base64UrlEncoded(Header)生成JWT的第一部分
Payload(负载):其中包含声明Claims。Claims是关于1个实体(用户)和附加数据。
Claims由三种类型:注册声明,公共声明,私有声明。
如
{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}
2. base64UrlEncoded(Payload)生成JWT的第二部分
Signature(签名):要创建签名部分,
必须获取被编码的Header + 被编码的Payload + secret + Header中指定的算法,
如 如果您想使用 HMAC SHA256 算法,签名将通过以下方式创建:
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret
)
3.这样就生成了JWT的第三部分
4. JWT有什么优势?
通用:因为json的通用性,所以JWT是可以进行跨语言支持的,像JAVA,JS,PHP等很多语言都支持。
紧凑:JWT的构成简单,字节占用小,可以放在HTTP请求头中,便于传输。
扩展:JWT是自我包涵的,包含了必要的所有信息,不需要在服务端保存会话信息, 非常易于应用的扩展。
5. Bearer验证Bearer验证也属于HTTP协议标准验证,它随着OAuth协议而开始流行Bearer验证的标准请求方式:
Authorization: Bearer [BEARER_TOKEN]
Authorization: Bearer [JWT_TOKEN]
6. Maven 依赖
com.auth0 java-jwt 3.4.0



