如果我构建的应用程序可以访问Gmail,Twitter和Facebook等部分数据,我希望用户只需输入一次身份验证信息,并在几天或几周后重置,在Ruby中动态地执行此操作的最佳方法是什么?
我看到很多人只是拥有客户/用户凭据的配置文件,如下所示:
gmail_account:
username: myClient
password: myClientsPassword
这似乎是a)它非常不安全,而且b)如果我想为成千上万的用户存储这类信息,它就行不通。建议的方法是什么?
我希望能够在这些服务之上构建一个接口,因此每次用户进行交易时都必须输入凭据。
答案 0 :(得分:6)
此类服务正在提供OpenAuth授权。强烈建议您查看它。
答案 1 :(得分:6)
如果您对黑客进入您的数据库/文件系统时的潜在责任感到满意,那就去吧。平心而论,您还应该向您的用户披露他们的密码将存储在您的系统中,并让他们决定是否要为您的程序提供信任级别。
但为什么这样做呢? Facebook Connect和Twitter&使用OAuth的Google根本不需要存储用户密码。在某些时候,用户的cookie将过期(或者他们将尝试从另一台计算机访问您的网站),他们将不得不重新进行身份验证。您无法阻止重新身份验证 - 相反,您应该让最终用户尽可能轻松地进行处理。
答案 2 :(得分:2)
我认为你的应用程序需要知道明文密码。然后就无法以某种简单的方式存储它。
在文件系统中存储大量数据没有任何问题。为了获得更好的性能,您可以执行以下操作
您可以使用数据库而不是文件系统
答案 3 :(得分:1)
这就是它的工作方式,例如对于fetcmailrc,它必须是chmod到600(只有他的所有者可以重新编写和写入)。是的,它包含普通密码。
答案 4 :(得分:0)
我强烈建议您使用OAuth,但如果您必须存储密码(请绝对确定您需要这样做),您可以使用OpenSSL库来加密密码。 OpenSSL库在Ruby中的文档很少,但据我所知,它们与C OpenSSL库非常相似。由于我认为你应该使用OAuth,而不是存储密码,我会让你自己找到文档。
但是,对于OAuth方法,您需要查看OAuth gem。 Google,Twitter(我建议你使用优秀的Twitter宝石)和脸谱(它有两个看似不错的选择:RFacebook和facebooker)