- 什么是JJWT?
JJWT是一个提供端到端的JWT创建和验证的Java库。永远免费和开源(Apache License,版本2.0),JJWT很容易使用和理解。它被设计成一个以建筑为中心的流畅界面,隐藏了它的大部分复杂性。
- 什么是JSON Web Token(JWT)
JSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。和 Cookie-Session 的模式不同,JSON Web Token(JWT)使用 Token 替换了 SessionId 的资源访问和状态的保持。
- JWT的组成
Jwt由头部、载荷、签名三部分组成,头部包含元数据,通常用来记录JWT所用的算法。
例如:
Header:
{
"typ": "JWT",
"alg": "HS256"
}
将这个头部使用Base64编码过后,就得到的JWT的第一段字符串
载荷:载荷用来承载JWT中的有效信息,通常包括三部分
- 公共的声明
可以存放自定义的信息,但是由于载荷仍旧使用的Base64进行编码,所以不建议在载荷中存放敏感信息。
- 私密的声明
私密的声明用来存放提供者和消费者共同定义的数据。但是由于载荷仍旧使用的Base64进行编码,所以不建议在载荷中存放敏感信息。
- 标准中注册的声明
iss:jwt的签发者
sub:jwt的面向用户
aud: 接收jwt的一方
exp: jwt的过期时间
nbf: 定义在什么时间之前,该jwt都是不可用的.
iat: jwt的签发时间
jti: jwt的唯一身份标识,主要用来作为一次性token,从而回避重放攻击。
将载荷进行base64编码之后,得到第二部分字符串,不建议在载荷中存放过多的数据。