8

我正在构建一个与 Ruby on Rails 后端对话的 iPhone 应用程序。Ruby on Rails 应用程序还将为 Web 用户提供服务。restful_authentication 插件是提供快速和可定制的用户身份验证的绝佳方式。但是,我希望 iPhone 应用程序的用户在新列中存储一个由手机的唯一标识符 ([[UIDevice device] uniqueIdentifier]) 自动创建的帐户。稍后,当用户准备好创建用户名/密码时,帐户将更新为包含用户名和密码,iPhone 唯一标识符保持不变。用户在设置用户名/密码之前不能访问该网站。然而,他们可以使用 iPhone 应用程序,因为该应用程序可以使用它的标识符来验证自己。

修改 restful_authentication 以执行此操作的最佳方法是什么?创建插件?或者修改生成的代码?

替代框架怎么样,例如 AuthLogic。允许 iPhone 将生成的身份验证令牌锁定到其 UUID,然后让用户稍后创建用户名/密码的最佳方法是什么?

4

4 回答 4

6

我认为您不应该单独使用电话标识符进行身份验证,因为它不是秘密,而且可能也是可猜测/可预测的。不要忘记,如果有人想破解您的网络应用程序,他们不必使用您的代码 - 他们只需猜测设备 ID 并尝试使用任何网络客户端来弄乱您的用户数据。

您应该将设备 ID 视为类似于用户名 - 它用于识别而不是身份验证。我建议您让用户选择一个密码,或者更好地自动生成一个随机代码,以配合它 - 然后发送设备 ID +此密码/代码首先注册设备,然后对设备进行身份验证。

你也可以打赌,一些用户将拥有不止一台设备——要么他们最终会更换一台,要么你会得到像 Stephen Fry 这样带着 4 部 iPhone 的人。为了解决这个问题,我建议你寻找一种方法来实例化 restful_authentication 两次,一次用于验证用户,第二次用于验证设备。我没有使用过这个插件,但我希望你只需要使用不同的表参数来实现这一点。然后在您的应用程序逻辑中允许用户将多个设备与其帐户相关联。

要安全地做到这一点,要么从设备上执行此操作,要么让设备显示一个随机代码,然后他们将其输入网络应用程序以证明他们拥有该设备(这听起来比实际更痛苦 - 这与苹果使用的过程相同在 iTunes、Apple TV 和远程应用程序中 - 看看他们是如何做到的 - 所以这对用户来说不会那么令人惊讶)。

(还要确保在生成任何随机密码时使用加密随机数生成器作为基础 - 可能有一个 iPhone API 用于此 - 否则您的密码可能是可预测的)。

于 2008-12-14T01:27:53.660 回答
0

您是否尝试过使用其他身份验证方案,例如Authlogic?我发现 restful_authentication 相当侵入性(尽管我使用bort作弊)。

于 2008-12-09T14:36:44.927 回答
0

在 Rails链接文本中生成随机密码 我正在为我的一个项目使用 Restful_authentication 插件。作为我的用户创建工作流程的一部分,系统应该为新用户生成一个随机密码。

于 2009-01-06T17:07:29.850 回答
0

您如何看待使用 UDID 和使用 UDID + 站点范围定义的盐生成的随机密码?

就像是:

salt = 'afG553Dvbf3'

udid = '1234567890'
pass = Digest::MD5.hexdigest(udid + salt)

并在下次连接时将该密码发送到 iPhone。

于 2010-04-03T02:47:20.823 回答