关于双JWT的流程记录

鉴权问题一直是个经典问题,从最初的cookie-session方案,到token方案,再到使用签名保证准确性的JWT方案
一直到OAuth2.0,这里我在项目中对于原来的传统授权方式使用双JWT进行改造

为什么要使用双token

由于token的过期时间在token生成后就难以更改,所有token的过期时长不宜设置过长:

  • 当用户信息发生更改时,token中的信息无法及时更改
  • 增加token中信息泄露的风险
  • token过期时间短的话,用户需要不停登陆,体验较差

即可以实现被窃取到accessToken也无所谓,只是短时间内有效,而在accessToken过期时,前端调用续期接口再次获取新的双token,实现安全,静默续期等功能,我这里画了一张流程图供参考
具体代码不展示

客户端浏览器首次登陆,获取到accessToken和refreshToken
accessToken是短期凭证,每次请求放在请求头携带过去,用于鉴权
refreshToken是长期凭证,存放在localStorage中,只有当请求携带accessToken,响应了过期时
refreshToken才出马,调用续期接口,获取新的双token,用于下一周期的请求

由于refreshToken存放在localStorage,无需担心CRSF攻击
accessToken是短期凭证,即便被窃取了,也只是短期有效,影响不会太大

posted @ 2024-12-04 13:17  风乐  阅读(42)  评论(0)    收藏  举报