了解刷新令牌

问题描述 投票:0回答:2

在我学习网络开发的过程中,我现在正在研究 JWT,我不明白刷新令牌有什么意义。如果我要在客户端有一个长期存在的令牌刷新 tpken,我最好不要有一个短期的。为什么不只轮换一个长寿的呢?

刷新令牌不是同样容易被盗吗?

authentication jwt refresh-token express-jwt
2个回答
0
投票

不,不是。刷新令牌是可以用来延长访问权限的东西,通常这意味着访问令牌的到期时间被延长。

现在,建议对 JWT 进行加密,并且一些刷新令牌可以在 JWT 内部以加密的方式发送。假设您获得 100 个刷新令牌,并且需要每 5 分钟发送一次。这意味着如果一切顺利的话,会话将持续 500 分钟。

由于访问令牌是从一个方向发送到另一个方向的,因此有可能某些东西获得了所述访问令牌的所有权。这意味着任何获得访问权限的人都能够伪造请求,声称这是一个有效的会话并发送该访问令牌。

现在,如果您的访问令牌是短暂的,并且您的应用程序在使用它时其生命周期每五分钟推迟一次,那么如果您的服务器在很长一段时间后不按面值接受您的访问令牌,您将得到更好的保护,因为时间越长,监听的中间人“无意中听到”你的令牌并伪造请求的可能性就越高。

因此刷新令牌让 IDP 知道您仍在使用该访问令牌。如果您不刷新该访问令牌,那么您的 IDP 将能够检测到伪造品,因为它们缺乏自我刷新。然而,如果您没有刷新令牌,那么您的安全性就会降低,缺乏这种保护。


0
投票

为了了解刷新令牌的用途,让我们考虑一个使用 JWT 的简单网站。一般工作流程可能如下所示:

  • 用户通过将其 JWT 传递到站点来执行登录
  • 网站检查声明(例如
    exp
    )并验证 JWT 是否有效
  • 网站返回访问令牌刷新令牌(前者在后者之前过期)
  • 当访问即将到期时,用户使用刷新令牌请求新的访问令牌

最后一步是关键一步,也是您问题的中心步骤。如果我们“没有”使用刷新令牌,那么用户可能会发现其访问令牌在会话中的某个随机点已过期。届时,该网站将别无选择,只能重定向用户以再次登录。相反,使用刷新令牌,用户会话可以在后台自动更新访问和刷新令牌,而无需用户知道或必须进行显式登录。这带来了更好的用户体验。

© www.soinside.com 2019 - 2024. All rights reserved.