【问题标题】:Omniauth, Devise, Open ID, CanCan - Whats what and When do I use which solution for a Rails API appOmniauth、Devise、Openid、CanCan - 什么是什么以及什么时候为 Rails API 应用程序使用哪种解决方案
【发布时间】:2012-08-21 07:08:31
【问题描述】:

所以我正在开发一个 Rails 应用程序 - 主要提供 API,我想通过一个好的授权系统来锁定它。我创建了渲染 HTML 的 Rails 应用程序,为此我使用了 Devise 和 CanCan。这次我想为我的客户提供 JSON。我基本上有以下要求:

  1. 需要一个强大的授权系统
  2. 用户应该能够使用现有应用程序登录,例如 facebook、twitter、linked in 和 google
  3. 应该有完整的堆栈授权可用

现在这是我编写的第一个提供 API 的应用程序,因此我开始研究,到目前为止,我发现了人们使用的以下解决方案:

  1. 我看到人们将 Devise 与 CanCan 一起使用
  2. 我看到人们谈论使用 Oauth2 http://railscasts.com/episodes/353-oauth-with-doorkeeper?autoplay=true
  3. 我听说...“使用门卫”
  4. 我听说使用...“使用omniauth”

所以基本上我 1 天的研究基本上只是让我更加困惑。当我使用这些和我的要求时,我将使用哪种组合!我正在努力理解字母汤,有人可以帮助我理解这一点

【问题讨论】:

    标签: ruby-on-rails openid authorization oauth-2.0 omniauth


    【解决方案1】:

    Devise 是适用于所有类型的 Rails 应用程序的身份验证引擎。 Devise 允许针对用户名/密码进行身份验证、令牌身份验证(适用于 API)和 oauth 提供者(例如 Google、Facebook 等)。这显然允许您拒绝访问 API,除非用户通过您提供的服务之一登录。

    CanCan 是一个在 Devise 之上运行的授权系统,允许用户根据他们在系统中的角色访问系统的某些部分。 CanCan 有一个非常灵活的 DSL 提供 cancannot 方法来允许或拒绝访问视图或控制器操作。

    如果您想在 API 之上推出自己的 oauth 解决方案,Doorkeeper 是一个 oauth 提供者的瑰宝。如果您希望您的应用程序以与 Google 或 Facebook 相同的方式为用户提供身份验证端点,这将是这样的。根据你上面的说法,我认为不是这样。

    鉴于您在上面提供的要求,我相信 Devise 和 CanCan 将是我会选择的路线。这将允许用户首先通过用户名/密码或某些 oauth 提供者进行身份验证,然后允许令牌身份验证访问您的 API。然后,您可以通过 CanCan 锁定对特定操作的访问。

    【讨论】:

    • @ConnorLeech Omniauth 提供通过各种提供商登录的策略,例如 Google、Twitter 和 Facebook。这些策略作为 Rack Middleware 提供,允许它们在任何基于 Rack 的应用程序中使用。
    猜你喜欢
    • 1970-01-01
    • 2011-10-08
    • 1970-01-01
    • 2015-08-08
    • 1970-01-01
    • 2011-07-05
    • 2018-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多