JWT 笔记

Kyou12138 / 2024-11-07 / 原文

总结

  1. 由header、payload、signature三部分构成,并由英文句号拼接一起
  2. payload中存储了部分数据,可减少后端数据库查询
  3. header和payload只是用base64编码,并未加密,payload有敏感数据要手动加密
  4. jwt在过期时间到之前没法撤销,想要即时登出用户,可以采用类似oauth2.0协议中的做法:
    • 认证后颁布2个token,access token(jwt)和refresh token(可不为jwt,存储在redis中)。访问token设置较短的过期时间,如10分钟,刷新token设置较长的过期时间,如7天,每次访问token失效时,使用刷新token去获取访问token,直至刷新token在redis中失效,所以登出可以把刷新token从redis中删除(会引入新问题:双token如何实现无感刷新?前端拦截器或定时轮询查看访问token是否失效,失效则主动刷新)

JWT (JSON Web Token) 结构

image
image
header和payload使用base64解码后可以得到对应的json数据

header(头部)

alg:表示加密算法
typ: 表示Token类型,JWT | JWS | JWE

payload(实际传递的数据)

分为注册声明(claims)和自定义声明两类,如下图
image

signature(签名)

保证数据不被篡改,只需再进行一次加密得出签名,对比签名是否一致,不一致就是被篡改了
image

JWT工作流程

image

个人笔记备忘,整理自知行小课