【问题标题】:How to handle JWT expiration如何处理 JWT 过期
【发布时间】:2020-03-24 08:16:55
【问题描述】:

我有一个问题是“让浏览器在第六天发出一个交换新令牌的请求。因此,在服务器端,创建一个名为 /token/extend 的 RESTful API,如果给定一个有效的令牌。”

假设我实现了这个概念。当令牌即将过期时,如果提供旧的有效令牌,我们将生成新的有效令牌。

现在,让我们假设,Hacker 获得了令牌。他使用此令牌与 API 进行通信。黑客交流了 6 天。在第 6 天,我们的“/token/extend” API 将为他生成新的令牌,这样他就可以再进行 6 天的通信,甚至可能永远。会不会出现这种情况?还是我在这里遗漏了什么?

【问题讨论】:

    标签: jwt


    【解决方案1】:

    强制用户在 6 天后获取新令牌的一般方法是简单地将 JWT 声明中的 exp 字段(到期)设置为 6 天后到期。用户用于获取新令牌的确切机制取决于您的实现。

    最基本的实现是让第六天的传入请求失败,迫使 API 的使用者重定向到登录页面。从那里,用户必须再次登录才能获得新的有效 JWT。更复杂的方法是使用刷新令牌。使用这种方法,当用户第一次登录时,他会收到一个有效期为 6 天的身份验证令牌(如前所述),但会收到一个稍后会过期的刷新令牌。在第六天,当用户尝试访问服务时,请求将再次失败。但是,在这种情况下,消费者(例如网站或移动应用程序)可以获取刷新令牌并在后台请求新的访问令牌。这将是一种处理强制性 6 天到期的更无缝方式。请注意,使用刷新令牌方法,用户可能永远不会知道 6 天到期。

    关于您对黑客获取他人代币的担忧,您应该忘记这一点。如果有人偷了你的钱包,他会对你造成各种各样的破坏,例如。使用您的信用卡、窃取您的身份等。同样的情况也可能发生在被盗/嗅探的 JWT 上。此处的最佳做法是确保您使用双向 SSL 进行所有通信,并鼓励您的用户不要在网吧等场所使用您的服务。

    【讨论】:

      猜你喜欢
      • 2021-12-31
      • 2019-10-02
      • 2017-02-11
      • 2016-08-26
      • 2016-07-11
      • 2019-09-13
      • 2017-02-14
      • 2018-07-28
      • 2017-02-22
      相关资源
      最近更新 更多