JWT全称Json web token ,是一个开放标准(RFC 7519) ,用来在各方之间安全地传输信息。JWT可被验证和信任,因为它是数字签名的。
JWT组成
组成 | 作用 | 内容示例 |
---|---|---|
Header(头) | 记录令牌类型,签名的算法等 | {“alg”:“HS256”,“typ”:“JWT”} |
Payload(有效载荷) | 携带一些用户信息 | {“userId”:“1”,“username”:“zhangsan”} |
Signature | 防止token被篡改,确保安全性 | 计算出来的签名,一个字符串 |
公式
-
一个JWT Token = Base64(Header).Base64(Payload).Base64(Signature)
- 示例:aaaa.bbbbb.ccccc
-
Signature = Header指定的签名算法(Base64(header).Base64(payload),秘钥)
- 例如:HS256(“aaaa.bbbbb”, FÈXfF)
工具类
基于 jjwt
库,这是一个Java圈子比较流行的一个 JWT
操作库。
TIPS
jjwt
GitHub:https://github.com/jwtk/jjwt- 本工具类来自个人开源的认证、授权框架 Light Security
-
加依赖
<dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-api</artifactId> <version>0.10.7</version> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-impl</artifactId> <version>0.10.7</version> <scope>runtime</scope> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt-jackson</artifactId> <version>0.10.7</version> <scope>runtime</scope> </dependency>
-
工具类:
import io.jsonwebtoken.*; import io.jsonwebtoken