如何在 Google OAuth2 授权流程后将 JWT 从我的后端服务器发送到我的前端

Dja*_*ngo 5 authentication oauth oauth-2.0 jwt google-oauth

我正在创建一个带有 React 前端和 Java Spring Boot 后端的应用程序。

我的登录流程如下所示:

  1. 用户在前端点击登录
  2. 用户被重定向到我的服务器上的 Google Oauth 授权端点
  3. OAuth 2.0 授权流程发生:用户被重定向到 Google 并登录。Google 与我的服务器交互,首先交换授权代码,然后交换 JWT 访问令牌。我的服务器现在拥有用户的 JWT 访问令牌。
  4. 问题:我现在需要将 JWT 令牌重定向到我的 React 前端,以便每次用户想要请求访问我的服务器上受保护资源时都可以保存和使用该令牌。

现在是否存在将令牌从服务器重定向到我的 React 前端的行业标准/最佳实践?

Stack Overflow 上也有关于这个主题的类似问题,但它们至少已经有 3 年历史了,例如如何在服务器身份验证后向前端提供 JSON Web 令牌? 从那时起,隐式流已被弃用,不再建议将 JWT 存储在本地存储中,并且https://datatracker.ietf.org/doc/html/rfc6750明确不鼓励在重定向 URL 中将承载令牌传递到前端。

我想知道是否有人知道这个问题的最新解决方案。

Rya*_*sch 2

有一个针对基于浏览器的应用程序的 OAuth 2.0 的 IETF BCP 草案 - 请参阅此处。基本上,它与使用带有 PKCE(代码交换的证明密钥)的授权代码的本机移动应用程序非常相似。

FWIW 我同意不应使用隐式流程,但在我看来,您不应该在没有PKCE 的情况下使用授权代码流程,因为此流程适用于服务器端渲染的 Web 应用程序。

编辑 - Auth0(市场上最流行的 CIAM 解决方案之一)文档也说了同样的事情 - 请参阅此处

如果客户端是单页应用程序 (SPA),即使用 JavaScript 等脚本语言在浏览器中运行的应用程序,则有两个授予选项:带有代码交换证明密钥 (PKCE) 的授权代码流和带有表格邮寄。对于大多数情况,我们建议使用带有 PKCE 的授权代码流程...