发送带有重定向uri片段的OAuth access_token

问题描述

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

enter image description here

最后一步是我正在努力的一步。将my_api_access_token传递给用户的唯一方法重定向uri为(EDIT:fragment not parameter)。恐怕这不是一个好习惯,但是我对OAuth没有太多经验。

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

enter image description here

任何有更多经验的人都可以向我指出从这里出发的正确方向吗? 我将不胜感激。

解决方法

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

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

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

我将首先关注默认登录并连接SPA,API和授权服务器。然后,您以后可以在不更改SPA或API中的任何代码的情况下,将对联盟的支持添加到Google / Facebook。