在我学习网络开发的过程中,我现在正在研究 JWT,我不明白刷新令牌有什么意义。如果我要在客户端有一个长期存在的令牌刷新 tpken,我最好不要有一个短期的。为什么不只轮换一个长寿的呢?
刷新令牌不是同样容易被盗吗?
不,不是。刷新令牌是可以用来延长访问权限的东西,通常这意味着访问令牌的到期时间被延长。
现在,建议对 JWT 进行加密,并且一些刷新令牌可以在 JWT 内部以加密的方式发送。假设您获得 100 个刷新令牌,并且需要每 5 分钟发送一次。这意味着如果一切顺利的话,会话将持续 500 分钟。
由于访问令牌是从一个方向发送到另一个方向的,因此有可能某些东西获得了所述访问令牌的所有权。这意味着任何获得访问权限的人都能够伪造请求,声称这是一个有效的会话并发送该访问令牌。
现在,如果您的访问令牌是短暂的,并且您的应用程序在使用它时其生命周期每五分钟推迟一次,那么如果您的服务器在很长一段时间后不按面值接受您的访问令牌,您将得到更好的保护,因为时间越长,监听的中间人“无意中听到”你的令牌并伪造请求的可能性就越高。
因此刷新令牌让 IDP 知道您仍在使用该访问令牌。如果您不刷新该访问令牌,那么您的 IDP 将能够检测到伪造品,因为它们缺乏自我刷新。然而,如果您没有刷新令牌,那么您的安全性就会降低,缺乏这种保护。
为了了解刷新令牌的用途,让我们考虑一个使用 JWT 的简单网站。一般工作流程可能如下所示:
exp
)并验证 JWT 是否有效最后一步是关键一步,也是您问题的中心步骤。如果我们“没有”使用刷新令牌,那么用户可能会发现其访问令牌在会话中的某个随机点已过期。届时,该网站将别无选择,只能重定向用户以再次登录。相反,使用刷新令牌,用户会话可以在后台自动更新访问和刷新令牌,而无需用户知道或必须进行显式登录。这带来了更好的用户体验。