SPA中令牌存储和刷新的选项

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SPA中令牌存储和刷新的选项相关的知识,希望对你有一定的参考价值。

[我一直在阅读Aaron Parecki的基于浏览器的应用程序草案(意为SPA,例如使用React或Angular开发的SPA),使用OAuth 2以及OWASP安全准则进行身份验证最佳实践,这让我感到非常困惑:

  1. RFC的草案提到了旋转刷新令牌。现在在坚持REST的无状态约束的同时我该怎么做?是否在cookie和刷新令牌中也包含随机字符串的摘要,并检查它们是否相等?
  2. 在浏览器中存储刷新令牌的正确方法(或更确切地说是一些更安全的方法是什么?我已经检查了okta的JS身份验证库,默认情况下它使用localStorage,这是OWASP指南推荐的。它有某种额外的保护吗?我应该在其中添加一些摘要,然后也将其放入Cookie中并与之匹配吗?
  3. OWASP建议会话ID对于客户端应该完全不透明,但是如果我们使用JWT,它是否违反了这一原则?这是否意味着我应该始终使用对称密码来加密我的JWT?

一些参考:

答案
SPA的标准选项是使用iframes to silently renew tokens,而根本不使用刷新令牌。
另一答案
在上一个答案中,您提到“首先考虑了同源部署”。我为您提供了完美的solution(SuperTokens),它实现了旋转刷新令牌,并且是一个完整的解决方案。即,它负责cookie的前端管理以及后端和数据库层。一点点细节:

以上是关于SPA中令牌存储和刷新的选项的主要内容,如果未能解决你的问题,请参考以下文章

带有存储在 cookie 中的刷新令牌的 SPA - 如何使用 IdentityServer4 进行配置?

为啥刷新令牌对于 SPA 来说被认为是不安全的?

在客户端的哪里存储刷新令牌?

在 AngularJS SPA 中使用刷新令牌

如何处理 React Spa 上的刷新令牌?

带有 JWT 的 AngularJS 或 SPA - 到期和刷新