Rails:从头开始的令牌身份验证

时间:2012-03-10 21:14:53

标签: ruby-on-rails authentication token

我有一个rails应用程序我想开始启用一些iOS集成。我有一个基本的身份验证系统,主要是从头开始构建Sorcery

我的理解是移动集成基本上有两种选择:HTTP Basic Auth或Token Auth。从我迄今为止所能找到的内容来看,令牌认证是首选方法。

我不熟悉令牌认证是什么或它应该如何工作,我真的没有找到任何合适的指南,除了一些关于如何在设计中使用相关模块的教程库。

所以,我的问题是,Token身份验证的基本理论是什么,以及rails中的from-scratch令牌身份验证系统会是什么样子?我理解为整个系统共享代码对于SO答案可能有点过分,但如果有人能帮助我理解这样一个系统应该如何工作的基本原理图,我将非常感激。我也很乐意接受任何关于如何从头开始做这些好材料的链接,因为主要问题是我找不到这样的东西。

谢谢!

3 个答案:

答案 0 :(得分:10)

Devise和Authlogic有一个很好的令牌认证解决方案。您可以使用其中一个宝石,也可以自己检查源代码以获取灵感。

以下是我对令牌认证的工作原理的理解:

  1. 用户使用用户名/密码组合登录 发布请求。
  2. 您对用户进行身份验证并生成唯一令牌 将其存储在数据库中。
  3. 您将此令牌发送回iOS设备。
  4. 设备将此令牌存储在内存中。
  5. 对api的任何后续调用都需要将此令牌作为传入 另一个用于授权用户的参数。
  6. 要使此过程安全,此令牌需要过期 日期以及iOS设备和服务器之间的通信 必须通过SSL加密。
  7. 为方便起见,您可以将用户凭据存储在设备上 使用iOS钥匙串。
  8. 我希望这会有所帮助。

答案 1 :(得分:3)

我认为这里有三个困难。

  1. 很少有关于认证技术的书籍
  2. 关键字“令牌身份验证”在安全/身份验证字段中使用起来很困惑。
  3. Rails相关文档往往是“如何做到”。
  4. 因此,谷歌搜索不会为此目的透露好资源。我很了解这个领域,但这很困难,特别是由于理由2。

    在我的理解中,“令牌”在此处作为系统中经过身份验证的身份,并在身份验证系统和授权系统之间提供桥梁。但要理解这一点,你必须了解整个系统。

    让我提供一些关于认证技术书籍和一些论文的指针。

    1. Butler Lampson做了很多与工作相关的认证,有些文章是了解认证/授权框架的非常好的材料。这可能会有所帮助。其中一个例子是Computer security in the real world(2004)
    2. 为公钥基础结构(PKI)编写的书可能会有所帮助。有几个这样的。例如Understanding PKI: Concepts, Standards, and Deployment Considerations, 2nd edition
    3. 希望这有帮助。

答案 2 :(得分:2)

ember-auth 为使用devise和ember的rails进行令牌身份验证提供了很好的教程。但是,它也可以应用于巫术或自定义身份验证系统。我认为这是对ember.js App进行身份验证的最佳方法。

https://github.com/heartsentwined/ember-auth-rails-demo