【发布时间】:2021-09-26 12:15:15
【问题描述】:
我正在创建一个带有 React 前端和 Java Spring Boot 后端的应用程序。
我的登录流程如下所示:
- 用户在前端点击登录
- 用户被重定向到我服务器上的 Google Oauth 授权端点
- OAuth 2.0 授权流程发生:用户被重定向到 Google 并登录。Google 与我的服务器交互,首先交换授权代码,然后交换 JWT 访问令牌。我的服务器现在拥有用户的 JWT 访问令牌。
- 问题:我现在需要将 JWT 令牌重定向到我的 React 前端,以便每次用户想要请求访问我服务器上的受保护资源时都可以保存和使用令牌。李>
现在是否有将令牌从服务器重定向到我的 React 前端的行业标准/最佳实践?
Stack Overflow 上有关于这个主题的类似问题,但是它们至少有 3 年的历史,例如How to provide frontend with JSON web token after server authentication? 从那时起,隐式流已被弃用,不再建议将 JWT 存储在本地存储中,https://datatracker.ietf.org/doc/html/rfc6750 明确不鼓励在重定向 URL 中将不记名令牌传递到前端。
我想知道是否有人知道此问题的最新解决方案。
【问题讨论】:
-
通过授权流程,
code使用重定向到您的回调端点发送回您的前端应用程序。您只需使用令牌端点(POST 请求)使用该代码。 RFC6749, section 4.1 清楚地解释了这个过程。 -
您好,感谢您的评论,但您的建议似乎是在我的服务器和我的前端之间分裂我的授权代码流。这不是我想做的。我更愿意在我的后端服务器上完成整个授权流程,因为 Spring boot 在验证、缓存令牌和创建授权用户方面完成了所有工作。我的问题是更多,在 Google 和我的服务器之间的授权流程完成并且我已经有一个 JWT 访问令牌之后,我如何才能将该 JWT 令牌从我的服务器传递到我的前端。
-
行业标准/最佳实践是不要混合客户端身份验证和服务器端身份验证。
-
@DaImTo,感谢您的回复,我的所有身份验证都在服务器上进行,我只需要某种方式将完全身份验证的用户 JWT 从我的服务器传递到我的 React 前端。整个 OAuth 2.0 授权流程发生在我的后端服务器上。
-
那么您对 JWT 的所有使用也应该在后端。
标签: authentication oauth-2.0 oauth jwt google-oauth