JWT是什么
JWT是一种基于JSON的令牌安全验证(在某些特定的场合可以替代Session或者Cookie),一次生成随处校验
JWT的组成
JWT分为三部分:头部信息(header),消息体playload,签名( signature)
-
头部信息(header)
作用:该JWT使用的签名
内容格式:{
“alg”: “HS256”,// 签名使用的算法
“typ”: “JWT” //token类型
}将内容用Base64URL 算法转成字符串,即为header
-
消息体playload
作用:JWT的请求数据
内容格式:{
“exp” (expiration time):过期时间
“sub” (subject):主题,一般用用户id,用来标识用户会话
“iat” (Issued At):签发时间
}将内容用Base64URL 算法转成字符串,即为playload
-
签名( signature)
作用:防止数据篡改
内容格式:加密(base64编码(header) + “.” +base64编码(payload), 秘钥)
JWT = header.payload.signature
代码实现
依赖
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.7.0</version>
</dependency>
JWT工具类
public class JwtUtil {
/**
* 自定义密钥,仅服务端存储
*/
private static String secret = "ko346134h_we]rg3in_yip1!";