啥是JWT?
啥是JWT
JWT是 Json Web Token 的简写,是目前最流行的跨域认证(单点登录)的解决方案。
原理
- 客户端登录,提交 账户 + 密码 到服务端
- 服务端验证 账户 + 密码 的正确性。通过后。将用户信息加密生成
token - 服务端将
token返回客户端 - 客户端将
token存储在 本地缓存中(localStorage、sessionStorage) - 客户端重新发起请求时,会将
token信息放入请求头中。(这里不管是否跨域,因为都可以获取到localStorage、sessionStorage中的token) - 服务端解析
token还原成用户信息。验证用户信息通过后,当请求内容返回浏览器。
组成
首先看一张图

可以看出 JWT 由 三部分构成 Header(头部)+ . + Payload(载体) + . + Signature(签名)
- Header
JWT的第一部分由token的类型和算法名称构成
{
"typ":"JWT", // token的类型
"alg": "HMAC" // 算法名称(HMAC、SHA256、RSA)
}
再将这个对象进行`Base64`编码得到`Header`
- Payload
JWT的第二部分由用户信息构成
{
"name": "张三",
"id": "12346",
"isAdmin": true
}
再将这个对象进行`Base64`编码得到`Payload`
- Signature
JWT的第三部分由编码过的Header和Payload+ 密钥 。在通过header中指定的加密方式进行加密。
HMAC(Base64(Header)+ '.' + Base64(Payload), secret)
和Session对比
Session是在服务器端,JWT是在客户端。Session占用服务器内存开销,JWT占用解密时间开销。Session的状态是存储在服务器端,而Token的状态是存储在客户端。
参考
https://www.cnblogs.com/cjsblog/p/9277677.html
https://juejin.cn/post/7070379141949816868

浙公网安备 33010602011771号