设计和rails 3中的http身份验证

ed1*_*d1t 10 ruby iphone authentication devise ruby-on-rails-3

我有一个在rails 3上使用devise的应用程序.我想启用http身份验证,以便我可以通过iPhone应用程序对我的Web应用程序进行身份验证.如何从我的iPhone应用程序进行身份验证?

这是安全的还是我应该以不同方式进行身份验证?

Mat*_*ani 6

从设计的角度来看,您有3个选择:

1)使用基本的http身份验证:您的iPhone应用程序有一个秘密密钥 - 在您的iPhone应用程序代码中烘焙 - 用于通过Web应用程序验证每个请求.谷歌搜索:"设计基本的http身份验证"

2)您可以通过在iPhone应用程序中使用公共证书和在Web应用程序上使用私有证书来使用https.这是配置正确的大量工作,因为您的IPhone应用程序和Rails服务器通过加密通道交换消息,所以它非常安全.安全性对您的rails代码也是透明的,因为身份验证是在传输级别完成的.

3)iPhone应用程序使用https连接到Web应用程序,获取一个身份验证令牌,然后通过常规http调用Web应用程序.由于密钥可以过期,因此比1更安全,实现相当多的工作并且可扩展性很高.(http://matteomelani.wordpress.com/2011/10/17/authentication-for-mobile-devices/)

大多数应用使用解决方案1.

希望这有帮助.

编辑:实现http身份验证(基本或摘要)我建议你看看:

http://api.rubyonrails.org/classes/ActionController/HttpAuthentication/Basic.htmlhttps://github.com/plataformatec/devise/wiki/How-To:-Use-HTTP-Basic-Authentication

具体步骤取决于您的Rails服务器堆栈.

编辑2:我不认为Devise提供了获取auth_token的方法.我可以看到你可以尝试几种解决方案:

  • 当用户登录服务器时,检索authentication_token并将其放入cookie中.除非您使用共享密钥对其进行加密,否则不太安全.

  • 您可以提供您的iPhone应用程序用于获取用户令牌的https Web服务.您的iPhone应用程序将在收到用户登录请求后立即发出请求.

对不起,我对一些真正的代码无法提供更多帮助.