系统时间更改后 JWT 刷新
Posted
技术标签:
【中文标题】系统时间更改后 JWT 刷新【英文标题】:JWT refresh after system time change 【发布时间】:2017-08-19 18:47:18 【问题描述】:我正在开发一个 web 前端来配置一个硬件设备(几乎就像一个路由器),它运行一个 nodejs 后端来为配置的 Angular 前端提供服务。我使用 JWT 来保护后端的无状态请求。一个特点是通过前端设置系统时间,通过向后端发出命令,设置本地机器时间,来处理时区。问题是,当时间更改超过过去 30 分钟时,由于会话超时,用户会被注销。解决它的最佳方法是什么?我的方法是将超时设置为无限期,更改系统时间并将超时更改回 30 分钟,使用刷新令牌。还有其他想法吗?谢谢。
【问题讨论】:
【参考方案1】:您可以实现刷新令牌。因此,只要访问令牌过期,用户就可以使用刷新令牌请求新的访问令牌。
【讨论】:
【参考方案2】:如果您问我,当系统时间可以更改时,在 JWT 中使用过期时间是没有意义的。所以我的选择是:
- 根本不使用过期时间
- 使用刷新令牌
- 撤销所有已发行的令牌
- 时间历史:通过计算旧代币的发行日期来接受旧代币。您可以通过添加唯一且增量的jti
标识符来了解令牌的发布时间。当系统时间发生变化时,存储当前的jti值和旧时间与当前时间的差
jti - time diff
超过最大过期时间可以清空列表
【讨论】:
谢谢,我现在实现了刷新令牌策略,似乎工作正常。以上是关于系统时间更改后 JWT 刷新的主要内容,如果未能解决你的问题,请参考以下文章