Ruby on rails 没有cookie的Rails中的OAuth?

Ruby on rails 没有cookie的Rails中的OAuth?,ruby-on-rails,oauth,devise,omniauth,rails-api,Ruby On Rails,Oauth,Devise,Omniauth,Rails Api,通常,Rails中的OAuth由OmniAuth处理,可以直接使用,也可以与Desive一起使用。然而,这在仅API的后端似乎不起作用;OmniAuth依赖于Cookie,并拥有自己的(不透明)中间件,而Cookie对本机客户端的性能不太好。这就是为什么我在寻找一种不用cookies的OAuth方法。我试图建立一个独立的前端和后端网站;在我看来,OAuth通过网页的工作流程是 用户单击我前端的一个按钮,链接到OAuth提供程序,在我的前端有一个回调 用户在提供者页面中进行身份验证和授权,并使用凭

通常,Rails中的OAuth由OmniAuth处理,可以直接使用,也可以与Desive一起使用。然而,这在仅API的后端似乎不起作用;OmniAuth依赖于Cookie,并拥有自己的(不透明)中间件,而Cookie对本机客户端的性能不太好。这就是为什么我在寻找一种不用cookies的OAuth方法。我试图建立一个独立的前端和后端网站;在我看来,OAuth通过网页的工作流程是

  • 用户单击我前端的一个按钮,链接到OAuth提供程序,在我的前端有一个回调
  • 用户在提供者页面中进行身份验证和授权,并使用凭据重定向到我的前端
  • 我的前端从查询字符串中捕获令牌,并将它们发送到服务器以登录或注册一个新帐户,如AJAX。服务器在使用会话标识符响应之前验证并保存令牌
  • 来自前端的未来AJAX在某些头或查询字符串中附加了会话标识符
  • 我想我知道如何从头做起;实际上,我已经创建了一个完全忽略cookie的Redis会话存储,会话标识符是从
    授权
    头中提取的。(不,JWT不是解决方案,因为它不能轻易撤销。Redis可以。)但是我仍然想知道是否有任何解决方案可以使用,或者Desive或OmniAuth是否已经覆盖了cookieless服务器


    FWIW,我在macOS Sierra上,每个gem都是最新版本。

    我认为您可以为omniauth提供不同的会话存储:

    您还可以在Desive上禁用基于cookie的会话,或者简单地用自己的流覆盖登录/注销

    您可以滚动您自己的oauth流,您可以检查一些omniauth策略,看看如何为每个提供者执行这些操作

    它基本上是,通过带有特定参数的URL重定向,直到您获得令牌

    在我现在开发的东西上,我基本上使用omniauth通过Oauth2登录,并设计基于电子邮件的登录。使用omniauth,我使用响应哈希创建自己的会话,我基本上劫持Desive sign_以使用自己的“方法”登录。然后,在整个用户体验中,我都依赖于相同的会话


    不确定如何使用API,但只要您能够验证Oauth流是否正确,并且您有他们的电子邮件,然后就可以定期执行任何操作以保持他们登录。

    我认为您可以为omniauth提供不同的会话存储:

    您还可以在Desive上禁用基于cookie的会话,或者简单地用自己的流覆盖登录/注销

    您可以滚动您自己的oauth流,您可以检查一些omniauth策略,看看如何为每个提供者执行这些操作

    它基本上是,通过带有特定参数的URL重定向,直到您获得令牌

    在我现在开发的东西上,我基本上使用omniauth通过Oauth2登录,并设计基于电子邮件的登录。使用omniauth,我使用响应哈希创建自己的会话,我基本上劫持Desive sign_以使用自己的“方法”登录。然后,在整个用户体验中,我都依赖于相同的会话

    不知道如何使用API来实现,但只要您能够验证Oauth流是否正确,并且您有他们的电子邮件,那么您就可以定期做任何事情来让他们登录