使用 Rails 服务器和 React 客户端进行单点登录

jre*_*eid 5 security ruby-on-rails single-sign-on doorkeeper reactjs

我有一个 Rails API 和一个用 React 编写的客户端,嵌入到网站 A 中。我想使用单点登录,以便登录网站 A 并访问我的 React 应用程序的用户自动登录到 API。我使用 Devise 来管理用户,使用 Doorkeeper 来处理 OAuth2。

这是想要的场景:

  • 用户登录到作为提供商的网站 A

  • 用户转到React应用程序(嵌入在网站A中),一些用户信息由网站A传递到React应用程序

  • 如果用户不知道 Rails API,请检查提供商是否为网站 A 并通过 Devise 存储用户

  • 从 API 获取该用户的访问令牌和用户信息并发回 React App

我无法添加到网站 A 的路由,因此无法安装常用的 OAuth2 流程。

我的想法是将识别用户的签名从网站 A 传递到 React 应用程序,并将其发送到 API 以对用户进行身份验证。我尝试使用doorkeeper-grants_assertion gem,但我无法解决这个问题。

在这种情况下,我应该为用户使用哪种授权流程?如何将此策略集成到omniauth 中?

任何帮助将非常感激。