JWT自动刷新草案

一:前言

Web系统中使用JWT已经非常普遍了,关于JWT的技术方案非常多,本人也凑了一篇技术汇总草稿来献丑,说是草稿是因为自己感觉整体的技术考虑还没有周全,因此暂时称呼草稿,好了,下面进入正题。

二:思考的技术点:

1.首先token自动刷新功能和正常的业务请求必须分开,防止有人获取了JWT后,能无限次获取更新(当然由于刷新token也有期限,也不可能)token。

2.刷新token的凭证也必须是有一个固定的有效期,不能无限期有效(第一条提到)。

3.刷新token的凭证必须也是相对安全的,要么在服务器端存储,要么在客户端存储。如果在服务器端存储,那么可以存储在数据库或者其他地方,而存储在客户端的话,可以存储在内存或者cookie中,但要注意,必须对客户端的刷新凭证做安全保护。保护措施有:首先必须进行加密;如果使用cookie存储,则必须配置:阻止 JavaScript 访问、防止 CSRF 攻击、签名、加密操作。

4.客户端的刷新操作需在正常token失效前进行,这个操作需要距离正常token失效有一定的重叠期。

5.后端接收到刷新操作后,需要对提交的刷新凭证进行验证,验证内容有:必须是有效期内的凭证;刷新凭证的唯一凭据必须等于正常访问的凭据;验证通过后;生成并发放新的token,由客户端接收后刷新存储后使用。

6.刷新凭证失效后,无法获取新的token,客户端本次操作即彻底结束,需要再次登录后才能继续。

三:思考与总结

刷新token本身的技术难度不大,但需要考虑的方面不少,而且从HTTP本身的无状态来看,其实也没有绝对的安全,只能在设计的时候尽量考虑周全。本文如有不妥之处,欢迎批评指正!

posted @ 2025-07-06 13:20  Shapley  阅读(18)  评论(0)    收藏  举报