【问题标题】:Send OAuth access_token with redirect uri fragment使用重定向 uri 片段发送 OAuth access_token
【发布时间】:2020-12-08 15:23:34
【问题描述】:

我有一个与我的 REST 后端通信的单页应用程序 (SPA)。 除了电子邮件/密码身份验证之外,我还想添加 Google 和 Facebook 等社交登录。因此,我实现了授权代码流程,如下图所示。该流程无法使用 XHR 请求完成,因此我们必须重定向用户。

最后一步是我正在努力的一步。将 my_api_access_token 传递给用户的唯一方法是重定向 uri 的(编辑:片段不是参数)。恐怕这不是一个好的做法,但我对 OAuth 没有太多经验。

我正在考虑的另一个解决方案是隐式流程。在这里,我们将直接获得一个 access_token,并且对我的 API 的 XHR 请求将起作用。 这感觉有点不安全,而且并非所有大公司都支持隐式流程(例如 Github OAuth)。

任何有更多经验的人能指出我从这里往哪里走的正确方向吗? 我会很感激任何讨论。

【问题讨论】:

  • Google 不会让您向重定向 uri 添加参数。我不完全确定你想要做什么,但我认为你想多了。我也不确定你的问题是什么。
  • @DaImTo 使用授权代码流,我不会将参数添加到 google 重定向 uri,而是添加到从我的后端服务器到前端的最后一步的重定向。我刚刚看到的是google似乎将隐式流中的access_token作为redirect uri参数传递。

标签: rest oauth oauth-2.0 google-oauth


【解决方案1】:

通常的解决方案包括以下步骤:

  • SPA 使用客户端安全库通过授权代码流 (PKCE) 管理登录
  • SPA 重定向到云授权服务器,而不是 API
  • 授权服务器可以进一步重定向到 Google 或 Facebook
  • SPA 接收授权码并通过 HTTP POST 将其换成访问令牌
  • SPA 向 API 发送访问令牌
  • API 验证访问令牌

要了解高级行为,请查看我的Messages Write Up,并查看我的Initial Code Sample

我将首先关注默认登录并连接 SPA、API 和授权服务器。然后,您可以稍后将联合支持添加到 Google/Facebook,而无需更改您的 SPA 或 API 中的任何代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-11
    • 2019-03-21
    相关资源
    最近更新 更多