jwt的token自动续约_JWT(JSON Web Token)自动延长到期时间

本文探讨了JWT的令牌自动续约问题,指出频繁生成新令牌可能导致的安全性和存储问题。介绍了Auth0的刷新令牌解决方案,以及适用于Web应用和移动应用的不同策略。建议在JWT过期前刷新,或设置短期令牌并由客户端定时更新。还提到了第三方库jwt-autorefresh的使用。
摘要由CSDN通过智能技术生成

JWT的刷新问题

想对新REST API实施基于JWT的身份验证,但是令牌中设置了到期时间,感觉使用不太方便,那么问题来了,是否可以自动延长这个过期时间呢?如果用户频繁使用应用程序,就不希望用户每X分钟后需要重新登录。老是要用户登录,从用户体验的角度来说,肯定是非常糟糕的。

但延长过期时间会创建一个新的令牌(而且同时旧的令牌仍然有效,直到它过期)。并且在每个请求之后生成一个新的令牌,感觉是比较愚蠢的做法。另外,当有多个令牌同时有效时,感觉还会有安全问题。当然,我可以使用黑名单使旧的令牌失效,但是我需要存储令牌。而JWT的优点之一就是无需存储空间。

我找到了Auth0如何解决它的方式。他们不仅使用JWT令牌,还会刷新令牌:https://docs.auth0.com/refresh-token

但是还是同样的问题,为了实现这一点(不使用Auth0),我需要存储刷新令牌并维护它们的到期时间。那么这么做到底有什么用呢?为什么不只有一个令牌(不是JWT)并且在服务器上保持到期?

是否还有其他选择?是不是JWT不适合这种情况呢?

最佳解决方法

我在Auth0公司工作,我参与了刷新令牌功能的设计。

这一切都取决于应用的类型,下面是我们推荐的方法。

Web应用程序

一个好的模式是在它过期之前刷新令牌。

将令牌过期时间设置为一周,并在每次用户打开Web应用程序并每隔一小时刷新令牌。如果用户超过一周没有打开过应用程序,那他们就需要再次登录,这是可接受的Web应用程序UX(用户体验)。

要刷新令牌,API需要一个新的端点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值