繁体   English   中英

存储第三方服务的密码

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM