存储外部API的密码 - 最佳实践

Lan*_*ard 5 ruby authentication service

如果我构建了一个从Gmail,Twitter和Facebook访问某些数据的应用程序,我希望用户只需输入一次身份验证信息,并在几天或几周后重置,那么什么是最好的在Ruby中动态地执行此操作的方法?

我看到很多人只是拥有客户/用户凭据的配置文件,如下所示:


gmail_account:
    username: myClient
    password: myClientsPassword
Run Code Online (Sandbox Code Playgroud)

这看起来像a)它非常不安全,b)如果我想为成千上万的用户存储这类信息,它就行不通.建议的方法是什么?

我希望能够在这些服务之上构建一个接口,因此每次用户进行交易时都必须输入凭据是不可行的.

khe*_*lll 6

此类服务提供OpenAuth授权.强烈建议您查看它.


lee*_*ers 6

如果您对黑客进入您的数据库/文件系统时的潜在责任感到满意,那就去吧.平心而论,您还应该向您的用户披露他们的密码将存储在您的系统中,并让他们决定是否要为您的程序提供信任级别.

但为什么这首先出现呢?Facebook Connect和Twitter&Google使用OAuth,根本不需要存储用户密码.在某些时候,用户的cookie将过期(或者他们将尝试从另一台计算机访问您的网站),他们将不得不重新进行身份验证.您无法阻止重新身份验证 - 相反,您应该让最终用户尽可能轻松地进行处理.