什么是 JWT?
JSON Web Token,通过数字签名的方式,以 JSON 对象为载体,在不同的服务终端之间安全的传输信息。也就是把信息安全的封装,通过json的形式进行传递。
JWT 有什么用?
JWT 最常见的场景就是授权认证,一旦用户登录,后续每个请求都将包含JWT,系统在每次处理用户请求的之前,都要先进行 JWT 安全校验,通过之后再进行处理。
JWT 的组成
JWT 由 3 部分组成,用.拼接
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6ImphY2siLCJyb2xlIjoiYWRtaW4iLCJzdWIiOiJhZG1pbi10ZXN0IiwiZXhwIjoxNjI0MTczNzQwLCJqdGkiOiI0MjI2YzQyYi0yYTcyLTQ5YzItOTRhNS00ZGE2NDNlYTMxYWQifQ.ECeFy7INfyHInz7HViRVULY85IWJBg90cCqp8oOdcJk
这三部分分别是:
-
Header
{ 'typ': 'JWT', 'alg': 'HS256' }
-
Payload 载荷(存放有效信息的地方)
{ "sub": 'hello', 标准中注册的声明 "name": 'jack', 公共的声明 "admin":true,私有的声明 }
-
Signature 签名
var encodedString = base64UrlEncode(header) + '.' + base64UrlEncode(payload);
//对header和payload进行64位加密,然后拼接在一起
var signature = HMACSHA256(encodedString, 'secret');
//对上面的结果再次进行加密
需要的依赖
pom.xml
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>