首页 > 解决方案 > 这是一种可以接受的刷新 JWT 的方法吗?

问题描述

我正在重建一个现有的 Web 应用程序,它使用 JWT 来管理身份验证。我对 JWT 还很陌生,所以我正在学习它们应该如何工作,同时,我试图理解为什么 Web 应用程序的当前实现是这样的。

当前版本的流程如下:

  1. 当用户成功登录或注册时,将返回一个用户对象以及一个 JWT 属性。此 JWT 作为 Authorization 标头包含在后续 API 调用中。
  2. 每隔十分钟,就会向 API 端点发出一个 get 请求/refresh-token
  3. 如果成功,则响应正文包含成功消息,并且响应标头包含更新的授权标头。
  4. 所有后续的 10 分钟定时获取请求以/refresh-token使用在步骤 1 中返回的原始 JWT,依此类推。

从我到目前为止所读到的内容来看,这与任何推荐的方法都不相关。

在较新的版本中复制此流程是否足够安全,还是我最好不要复制?

编辑:我只在前端工作——API 暂时没有更新,所以我仅限于它当前返回的内容。

标签: securityauthenticationjwt

解决方案


我相信这篇文章总结了当前的技术状态:https ://auth0.com/blog/refresh-tokens-what-are-they-and-when-to-use-them/ 。你通常有两个令牌。短暂的访问令牌和寿命更长的刷新令牌。这样您就不需要每 x 分钟调用一次身份验证服务器,但您可以按需进行。

我不知道你是否也需要处理黑名单?我相信当您将访问令牌和刷新令牌分开时,黑名单会更容易(只需将刷新令牌列入黑名单)。但我相信你也可以处理这个问题,可能以更复杂的方式。

话说回来。你所拥有的并没有错。除了上面指出的之外,我很难指出你在做的方式中的任何缺陷。


推荐阅读