惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

爱范儿
爱范儿
量子位
大猫的无限游戏
大猫的无限游戏
小众软件
小众软件
J
Java Code Geeks
B
Blog
V
V2EX
博客园 - 三生石上(FineUI控件)
Blog — PlanetScale
Blog — PlanetScale
aimingoo的专栏
aimingoo的专栏
Y
Y Combinator Blog
F
Fortinet All Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
A
About on SuperTechFans
D
DataBreaches.Net
阮一峰的网络日志
阮一峰的网络日志
博客园 - Franky
H
Help Net Security
宝玉的分享
宝玉的分享
Martin Fowler
Martin Fowler
酷 壳 – CoolShell
酷 壳 – CoolShell
MongoDB | Blog
MongoDB | Blog
L
LangChain Blog

博客园 - Shapley

项目心得 进程间通讯方式 C#使用MCP协议调用大模型示例 SQL Server LEAD函数实践 sql server行专列一例 数据库字段排序方法两则 Sql Server生成ULID例子 审批流进化记 winform+Task+async 献丑贴:Task.Run中foreach优化 Sql Server Begin TRY sample No service for type 'Microsoft.AspNetCore.Mvc.ViewFeatures.Filters.ValidateAntiforgeryTokenAuthorizationFilter' has been registered. 某低代码平台自定义控件技术点 Element-plus的el-date-picker控件动态切换中英文方案 Chrome浏览器无法查看页面跳转前的请求日志及解决办法 element-plus上传视频并生成缩略图(封面)方案 Ajax方法POST的两种提交方式 H5项目在微信浏览器运行实录 Sql Server变量声明及使用技巧 修改Dify的Nginx对外访问端口 Task with Console(with SemaphoreSlim) Task实战 asp.net core 9.0发布centos7.9 Barrier CountdownEvent
JWT自动刷新草案
Shapley · 2025-07-06 · via 博客园 - Shapley

一:前言

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本身的无状态来看,其实也没有绝对的安全,只能在设计的时候尽量考虑周全。本文如有不妥之处,欢迎批评指正!