首页 > 解决方案 > 选择 oauth2 flow spa 应用程序

问题描述

我们正在构建一个带有 SPA 客户端 (reactjs) 和 nodejs 服务器的全栈应用程序,它们在 API Rest 中发布资源。

我需要使用 azuread 或 keycloack 等身份提供者对用户进行身份验证。

我想使用 OpenIdConnect 协议(基于 Oauth2),但我不知道我需要哪个流。

我读到 PKCE 的授权代码最适合 SPA,但我不明白为什么?如果我获得 access_token,我可以在哪里将其保存在我的 SPA 中?保存这个令牌是否安全?

您为这种架构推荐哪种流程?

标签: reactjsoauth-2.0openidflowpkce

解决方案


使用 OAuth 2.1,它非常简单。

选择表单的流程只有两种:

  1. 涉及用户时使用 PKCE 的授权代码。
  2. ClientCredentials 流,当您在没有用户参与的情况下进行机器对机器通信时。

不再推荐所有其他流程。

如果您不想在 SPA 应用程序中处理令牌,那么您可以让后端为您处理所有这些,如下图所示:

在此处输入图像描述

在 SPA 和后端之间,您只有一个经典的 cookie 会话。


推荐阅读