4

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

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

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

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

4

1 回答 1

13

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

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

方法一

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

简单的例子

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

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

方法二

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

于 2013-08-14T20:27:50.043 回答