如果不在本地存储中,在哪里存储刷新令牌?

信息安全 oauth2
2021-09-10 06:04:08

一般来说,建议不要将刷新令牌存储在本地存储中。Auth0文档建议不要这样做。

尽管我知道潜在的威胁,但我不知道是否有任何替代方法可以存储这些令牌,以便在 API 服务器与客户端不同时在用户会话期间保持持久性。如果令牌只存储在内存中,那么用户每次关闭标签时都必须登录,然后再次访问该站点。

最后,我认为无论如何,刷新令牌轮换将降低令牌被盗的风险。因此,鉴于此,上述建议看起来不是很有效。

1个回答

将刷新和访问令牌存储在 JavaScript 内存中通常被认为比 cookie 或其他浏览器存储要好得多。

您仍然不必担心每次都要求用户登录。授权服务器(在您的情况下为 Auth0)在幕后维护自己的会话(SSO 会话),这是持久的。因此,即使用户关闭浏览器,它仍然存在。

这意味着即使您“丢失”了存储在内存中的刷新令牌(例如,如果用户关闭了选项卡),您也只需重新运行授权代码流以获取新的刷新和访问令牌(即将用户重定向到授权服务器)。这应该对用户保持沉默(即他们不会看到登录屏幕),因为授权服务器维护的相同 SSO 会话仍将处于活动状态。