jwt三部分
JWT头
有效载荷
签名
说明
jwt三个子串用.分割
有效载荷一般存放用户信息,JSON对象也使用Base64 URL算法转换为字符串保存。
签名哈希部分是对上面两部分数据签名,通过指定的算法生成哈希,以确保数据不会被篡改。
secret保存在服务器端。
HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload),secret)
过程
客户端接收服务器返回的JWT,将其存储在Cookie或localStorage中。
因此一般是将它放入HTTP请求的Header Authorization字段中。
注意
任何人都可以获得令牌的所有权限。为了减少盗用,JWT的有效期不宜设置太长
为了减少盗用和窃取,JWT不建议使用HTTP协议来传输代码,而是使用加密的HTTPS协议进行传输。
头信息设置
map.put("alg", "HS256");
map.put("typ", "JWT");
API伪代码
.withClaim("iss", "Service") // payload
.withClaim("aud", "APP").withClaim("user_id", null == user_id ? null : user_id.toString())
.withIssuedAt(iatDate) // sign time
.withExpiresAt(expiresDate) // expire time
.sign(Algorithm.HMAC256(SECRET)); // signature
网友评论