啥是JWT?

啥是JWT

JWTJson Web Token 的简写,是目前最流行的跨域认证(单点登录)的解决方案。

原理

  • 客户端登录,提交 账户 + 密码 到服务端
  • 服务端验证 账户 + 密码 的正确性。通过后。将用户信息加密生成 token
  • 服务端将 token 返回客户端
  • 客户端将 token 存储在 本地缓存中(localStoragesessionStorage
  • 客户端重新发起请求时,会将token信息放入请求头中。(这里不管是否跨域,因为都可以获取到 localStoragesessionStorage 中的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的第三部分由编码过的HeaderPayload + 密钥 。在通过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

posted @   skylei  阅读(359)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示