【问题标题】:How,and why, to implement Oauth in a rails application? [closed]如何以及为什么在 Rails 应用程序中实现 Oauth? [关闭]
【发布时间】:2013-08-16 23:22:39
【问题描述】:

所以我正在创建一个应用程序,除了一些远程触摸屏之外,它实际上只与另一个 Rails 应用程序通信。该应用程序仅适用于拥有这些触摸屏之一的个人和管理员。因此,我真的没有看到能够使用 twitter、facebook 等登录的意义。但是,我需要使用请求/访问令牌进行某种 http 身份验证,以便 1. 验证用户和 2. 能够得出什么用户正在与服务器通信(以及何时)。我花了大约一个星期(我是 Rails 新手)研究 Oauth、omniauth 等,我在问两件事:

  1. 因为我在自己的两组应用程序之间进行身份验证,所以哪种 gem 最适合我的情况?

  2. 我将在哪里编写请求/访问令牌的逻辑?

我真的找不到任何好的教程

【问题讨论】:

    标签: ruby-on-rails ruby authentication oauth token


    【解决方案1】:

    如果您不需要与现有身份提供者进行任何形式的集成,那么您只需要Devise。它为您提供了一种管理用户帐户的简单方法,用户将使用他们的电子邮件地址和密码登录。

    对另一个应用程序进行身份验证变得更加棘手。

    方法一

    如果您不需要两个应用程序之间的太多通信,您可以让用户登录到主应用程序,然后生成一个临时令牌,用户可以在辅助应用程序中使用。最后,让辅助应用程序在与主应用程序的所有通信中包含此字符串。现实世界的例子包括 Pivotal Tracker,它为用户提供了一个 API 密钥,他们可以在 GitHub 上的网络挂钩中使用该密钥。

    简单的例子

    1. 用户访问 Main.com 并使用电子邮件和密码登录。
    2. Main.com 为用户生成一个临时令牌。
    3. 用户向 Sub.com 提供令牌。
    4. Sub.com 使用 <user>:<token>@main.com/some/path?some=query 联系 Main.com

    这有很多安全问题,但对于非关键用例来说已经足够了。您可能希望使用 SSL 来保护令牌。

    方法二

    但是,方法 1 不是很安全。更健壮和安全的解决方案是让主应用程序成为 OAuth 提供者,然后让辅助应用程序使用 OAuth 对主应用程序进行身份验证。这是一个Railscast,它解释了如何使用DoorKeeper 做到这一点。您可以在辅助应用中使用 OmniAuth。

    【讨论】:

    • 我听取了您对方法 2 的建议,我已经开始设计和工作,安装了 oauth2 并配置了门卫。 1.用户登录时如何提取用户ID? 2. 当用户请求访问另一个资源时?
    • 我认为 RailsCast 链接已失效,因为您现在必须支付 10 美元才能观看。这就是为什么我们现在喜欢在答案中包含所有相关信息,而不是提供任何链接,而不是来源或进一步阅读。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    • 2019-07-02
    • 2014-08-02
    • 2016-04-18
    • 2011-07-09
    • 1970-01-01
    相关资源
    最近更新 更多