[英]Storing Passwords for Third Party Services
我的应用程序是ruby-on-rails,但是我希望这个问题的任何答案都可能与框架无关。
我的应用程序使用Rails ActionMailers a-la通过gmail SMTP发送电子邮件:
mail = MyActionMailerSubclass.setup_email
options = { :address => "smtp.gmail.com",
:port => 587,
:domain => 'mydomain.com',
:user_name => 'myuser@mydomain.com',
:password => 's3cur3p@s$w0rd',
:authentication => 'plain',
:enable_starttls_auto => true }
mail.delivery_method :smtp, options
mail.deliver
好的,那太好了……在应用程序代码中,我的gmail密码是纯文本格式。 或者,我可以将其以纯文本格式存储在数据库中。 显然两者都不可接受。
撒盐和哈希处理,通常的技术在这里行不通,因为我需要将密码发送到gmail。
那么,有什么策略可以保护第三方服务的密码?
最终,用户名和密码甚至都不属于我,它们将属于应用程序最终用户。
Gmail的SMTP服务器支持两种身份验证机制:PLAIN和XOAUTH。 PLAIN机制要求您知道用户的纯文本密码,很高兴您不准备存储这些密码。
查看Gmail使用的OAuth协议。 我从未使用过它,只是发现Gmail支持SMTP,所以我无济于事,但是我想这正是您想要的。 OAuth是一种服务(例如Gmail)允许第三方服务(例如您的服务)代表用户执行一组有限操作的方式,而无需使用其密码登录。
如果该应用程序是私有的,那么这应该无关紧要,但是我猜它是针对公共/开源应用程序的。
如果是这种情况,请将该文件的基本示例添加为config / initializers / mail.rb.example并将真实内容添加到您的.gitignore文件中,以使其永远不会提交。 之后,向自述文件中添加说明,人们需要将其复制到mail.rb.example文件中,以复制到mail.rb ,以使应用程序按预期工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.