如何在 API 模式下使用 Doorkeeper 处理 OAuth 流程?

jon*_*ngo 5 ruby-on-rails oauth-2.0 single-page-application doorkeeper reactjs

场景很简单:

  • 带有 Doorkeeper 提供程序的仅限 Rails API 的服务器
  • 一个移动应用程序和一个SPA(比如说 React),用户希望使用电子邮件和密码进行注册和登录

当您拥有普通的Rails Stack时,您需要定义一个重定向authorizeUrl用户的位置,以提供其凭据并使用授权代码返回到 Web/移动应用程序。在 API 模式下,基本上您的“authorizeUrl”位于同一个应用程序内。

OAuth当您的提供商无法提供登录页面(因为是仅 API 服务器)时,处理流程的适当方法是什么

Flo*_*Flo 1

您必须在 React 中构建一个登录表单,该表单发送一个 HTTP POST 请求来获取 OAuth 令牌,例如 /oauth/token,其中包含用户输入的凭据(在请求正文中,以及客户端 ID/秘密(取决于您的OAuth 服务器配置)。

然后,在响应时,您将获得一个访问令牌,您可以将其添加到每个后续请求的授权标头中,以便您的服务器知道其合法请求。

通常,如果您使用Axios作为 HTTP 客户端,则可以使用拦截器将访问令牌添加到每个请求中(如此处所述:https ://medium.com/swlh/handling-access-and-refresh-tokens-using-axios -拦截器-3970b601a5da)。

这是“标准”OAuth 工作流程,我不确定您的后端堆栈是否意味着有关身份验证的一些自定义,但似乎此工作流程仍然有效。