我一直在阅读 Aaron Parecki 的基于浏览器的应用程序草案(意思是使用 React 或 Angular 开发的 SPA)使用 OAuth 2 以及 OWASP 安全指南的身份验证最佳实践,这让我感到非常困惑:
localStorage
,这是 OWASP 指南推荐的。它有某种额外的保护吗?我是否应该在其中放入一些额外的摘要并将其放入 cookie 中并进行匹配? 一些引用:
最佳答案
SPA 的标准选项是使用 iframes to silently renew tokens 而根本不使用刷新 token 。
我写的关于 UI token storage 的文章可能也很有趣——因为解决方案在很大程度上是安全性和可用性之间的权衡。
最安全的选择是将 token 存储在浏览器内存中 - 但刷新页面意味着用户被重定向到再次登录。因此,将 HTML5 session 存储用于短期访问 token 是很常见的。
我的 Cloud SPA 使用不支持标准的 AWS Cognito(因为它很便宜)。
相反,它向 SPA 发出刷新 token 。我的解决方案使用了一种中间立场,即在 HTML5 session 存储中存储访问 token ,在内存中存储刷新 token 。
有 2 个选项可用 here :
也许这会变得更简单,我想每个人都同意当前基于标准的指南是模棱两可的。
到 2020 年初,iframe 解决方案和基于内存或 session 的存储是最标准的 - 正如使用最广泛的 SPA 安全库的作者在 this article 中所做的那样。
关于angular - SPA 中 token 存储和刷新的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59850356/