外界的Omniauth战略

时间:2017-04-21 17:22:23

标签: ruby oauth devise

我为Google登录设置了设计+ omniauth。它在网络上运行良好。我现在正在考虑将oauth登录集成到iOS / Android客户端。

我一直关注https://developers.google.com/identity/sign-in/ios/backend-auth,发现我用于oauth的库做了这些事情(https://github.com/zquestz/omniauth-google-oauth2/blob/master/lib/omniauth/strategies/google_oauth2.rb)。

我不清楚的是,如果我可以在常规网络工作流程之外使用omniauth策略(即从rails console)来构建伪request.env["omniauth.auth"]。有可能吗?根据文档https://developers.google.com/identity/sign-in/ios/backend-auth#using-a-google-api-client-library我想在Ruby中做相同的操作(并且我不清楚我是否可以直接使用Devise来完成此操作)。

1 个答案:

答案 0 :(得分:-1)

在控制台中模拟请求非常简单。您可以轻松地向控制台提供的app变量发出请求:

app.get('/') # => 200
app.response # => #<ActionDispatch::TestResponse:0x007fc73e4db220>

对于处理身份验证,标准rails应用程序在Web上使用基于cookie /会话的身份验证策略。在您第一次进行身份验证后,一些信息会存储在会话中(通常作为cookie),您和服务器将在每次请求时来回传递。

由于移动客户端不依赖cookie,我们需要不同的身份验证策略:token-based authentication

这是一个适用于Omniauth的高级实现:

  1. 用户请求通过向Omniauth端点发出请求,通过Omniauth proivder进行访问
  2. 应用程序处理凭据
  3. 应用程序向客户端提供签名的令牌
  4. 客户端存储该令牌并将其与每个请求一起发送
  5. 服务器验证令牌并使用数据进行响应
  6. 要处理移动请求,您需要注意遵循提供商Omniauth gem的细则。

    Token身份验证曾经被编入Devise,但它被删除了。值得庆幸的是,有一些宝石将令牌身份验证添加到Devise: