JWT(Json Web Token)
JWT结构
JWT 是由三段字符串与两个.
组成,这三段字符串按顺序依次为
-
头部:头部是一个Json对象,描述了诸如签名使用的算法(eg:HS256)、令牌类型等信息
-
载荷:载荷是JWT的主体,也是Json对象,用于包含相关声明,通常包含三个部分:
-
1.标准注册声明:
-
预定义的声明,即标准规定的字段,并不强制使用,但一般推荐使用。它们有:
-
iss:JWT 的签发者/发行人
-
sub:该 JWT 面向的用户
-
aud:接收方
-
exp:JWT 的过期时间,必须大于签发时间
-
nbf:JWT 的生效时间,在这个时间之前该 token 都是无效的
-
iat:JWT 的签发时间
-
jti:JWT 唯一身份标识,主要用来作为一次性 toekn,从而避免重放攻击
-
-
-
2.公共声明
- 公共声明可以添加任何信息,一般添加用户的相关信息或业务信息。不建议添加敏感信息,因为该部分在客户端可解密。
-
3.私有声明
- 私有声明是服务器端与客户端共同定义的声明,同样不建议在这里添加敏感信息,因为 base64 是对称解密的,意味着该部分信息可以归类为明文信息。
-
-
签名:JWT 的第3部分是一个签证信息,该签证信息由 3 个部分组成:
-
header(base64加密后)
-
payload(base64加密后)
-
secret
-