如何以及为什么在rails应用程序中实现Oauth?

Lon*_*rde 3 ruby authentication ruby-on-rails oauth token

因此,除了一些远程触摸屏之外,我正在创建一个真正仅与另一个rails应用程序通信的应用程序.该应用仅适用于拥有其中一个触摸屏和管理员的个人.因此,我真的没有看到能够使用twitter,facebook等登录的重点.但是,我需要一些使用请求/访问令牌的http身份验证,以便1.验证用户和2.能够派生用户与服务器通信的内容(以及何时).我花了大约一个星期(我是一个新手)研究Oauth,omniauth等,我问了两件事:

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

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

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

Jam*_*Lim 12

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

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

方法1

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

琐碎的例子

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

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

方法2

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