JWT
时间:2021-02-02 10:33:43
收藏:0
阅读:0
JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案
背景
- 跨域认证的问题:服务器集群/跨域的服务导向架构,传统的sessionid<->cookie式认证产生session共享问题
- 解决方案
- session数据写入持久层
- 服务器无状态,数据均保存在客户端
JWT
- 原理:服务器认证后,生成一个带有签名以防用户篡改的JSON对象返回给用户,之后用户与服务端通信的时候必须携带该JSON对象,服务器只靠这个对象认定用户身份
- 数据结构
- Header:描述JWT的元数据的Json对象,使用 Base64URL 算法转成字符串。
- alg:签名的算法,默认是 HMAC SHA256(写成 HS256)
- typ:令牌类型,JWT 令牌统一写为JWT
- Payload:用来存放实际需要传递的数据的JSON 对象,使用 Base64URL 算法转成字符串,默认不加密
- iss (issuer):签发人
- exp (expiration time):过期时间
- sub (subject):主题
- aud (audience):受众
- nbf (Not Before):生效时间
- iat (Issued At):签发时间
- jti (JWT ID):编号
- Signature:对前两部分的签名,防止数据篡改 -> 服务器指定一个密钥,使用 Header 里面指定的签名算法(默认是 HMAC SHA256)产生签名。算出签名以后,把 Header、Payload、Signature 三个部分拼成一个字符串,每个部分之间用"点"(.)分隔
//公式 HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload),secret)
- Header:描述JWT的元数据的Json对象,使用 Base64URL 算法转成字符串。
- 特点
- 默认不加密,用作信息交换是推荐加密
- JWT的有效期尽可能设置短,一旦签发无法废止或变更Token权限,因为服务器无状态
评论(0)