使用 React 存储令牌

Posted

技术标签:

【中文标题】使用 React 存储令牌【英文标题】:Store token with React 【发布时间】:2020-03-19 13:51:08 【问题描述】:

我是 Reactjs 的新手,我正在尝试使用 OpenId Connect 和 OAuth2 进行身份验证和授权。 我一直在阅读有关在哪里存储令牌的信息,联合将由 Azure AD B2C 完成,它将用作 ID 服务器:Facebook 和 Azure AD。

我恳请任何有关如何使用 Azure B2C 在后端存储令牌的链接或教程。

所以我想避免将令牌存储在浏览器中。

谢谢

【问题讨论】:

【参考方案1】:

在 SPA 中,将令牌存储在 html5 会话存储中也很常见 - 作为安全性和可用性之间的权衡 - 我在这里对此有一些说明: https://authguidance.com/2019/09/08/ui-token-management

服务器端解决方案(例如将令牌放入身份验证 cookie)通常会违背 SPA 的目标。

请注意,会话存储是经过认证和尊重的 oidc 客户端库的默认行为: https://www.google.com/amp/s/brockallen.com/2019/01/03/the-state-of-the-implicit-flow-in-oauth2/amp/

但并不总是一种万能的解决方案 - 取决于您的数据的敏感程度、是否涵盖其他风险以及您的利益相关者最关心的因素。

【讨论】:

【参考方案2】:

使用 Auth0 和 reactJS:将令牌存储在内存中,结合静默身份验证可以使用。 Azure 可以使用类似的方法,因为 OpenId Connect 支持“prompt=none”,以避免在服务器中已有会话时用户交互。

【讨论】:

以上是关于使用 React 存储令牌的主要内容,如果未能解决你的问题,请参考以下文章

使用 React Context 中的使用效果检查本地存储中是不是已经存在令牌的最佳方法

如何使用 react-redux 存储令牌并在多个 axios 请求中使用它?

在 react.js 中存储访问令牌的位置?

如何在React库的LocalStorage中存储令牌

将您的 jwt 令牌存储在 react 或 angular 或 vue 中

反应并将 jwt 令牌存储在本地存储中