JWT ==> JSON WEB TOKEN
jwt由三部分组成
头 + 负载 + 签名
头部基本默认
{
"alg": "HS256",
"typ": "JWT"
}
负载是是JWT的主体内容部分
一般自定义字段 传递有效信息,但是不要包含太过私密的信息
密码自定义 指定一个密码
签名生成 => HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload),secret)
签名格式 base64位的 头.负载.签名 中间以‘.‘隔开
jwt使用
1. 引入依赖
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.18.1</version>
</dependency>
2. 生产token
通过JWT的静态方法JWT.create()生成
.withClaim("xx","xx") 自定义负载信息
.withExpiresAt(xx) 设置过期时间
.sign(Algorithm.HMAC256("密码")) 设置签名
返回值就是token的值
3. 根据签名和令牌解析数据
DecodedJWT decodedJWT = JWT.require(Algorithm.HMAC256("密码")).build().verify(token);
decodedJWT.getClaim("属性").asString() 获取负载中的属性值
decodedJWT.getxxx 有一系列方法可以使用