开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot):JWT 介绍】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/667/detail/11441
JWT 介绍
内容介绍
一、什么是JWT
二、JWT 的规则
三、如何运用 JWT
一、什么是 JWT
- Token 是按照一定规则生成字符串,字符串可以包含用户信息。
- Token 也可以叫令牌。这个过程的术语叫自包含令牌。
- 规则可以自己约定。假如约定根据ip用户名存到字符串中,然后把它们做一个编码,再加密这样一种规则。但是规则到底怎么定?每个公司,每个人的想法都不同,所以产生了一种比较通用,比较官方的解决方案,这个方案就是JWT。
- JWT就是给大家规定好的一种规则,使用JWT可以生成字符串,里面包含用户信息。
二、JWT 的规则
典型的 JWT 字符串:eyJhbGci0iJIUzI1NiIsInR5cCI6IkpXvcJ9.eyJzdWIi0iIxMjM0NTY30DkwIiwibmFtZSI6IkpvaG4gRG91IiwiaWF0IjoxNTE2MjM5MDIyfQ.Sf1KxwRJSMeKKF2QT4fwpMeJf36P0k6yJV_adQssw5c
这个字符串有三种颜色,并且这个字符串做了编码。这就是JWT的规则。
这个规则是什么,接下来做个介绍。
三种颜色代表 token 字符串用 JWT 生成的包含的三部分。
第一部分 JWT 头信息
1 {
2 “alg”:“HS256”,
3 “typ”:”JWT”
4 }
第二部分 有效载荷 包含主体信息(用户信息)
1 {
2 “sub“:”1234567890“,
3 “name“:”helen“,
4 “admin“:”ture“
5 }
第三部分 签名哈希 防伪标志
HMACSHA256(base64UrlEncode(header)+"."+base64UrlEncode(claims),secret)
Header 头信息
claims 主体部分
base64 和 secret 做 HS256的这种编码方式,最终生成字符串。
字符串的三个部分用“.“隔开
三.如何运用 JWT
在今天的源码中给大家提供了工具类 叫 JwtUtils。这个工具类直接复制就可以运用。
引入 JWT 依赖
1
2
3
4 io.jsonwebtoken
5 jjwt
6
7
Dwt 在后续的登录注册中都会用到,把 jwt 放到 common 模块中,为了其他模块都能共用这套工具。