ruby-on-rails – 为第三方服务存储密码

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 为第三方服务存储密码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的应用程序是 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

好的,那很好……我的应用程序代码中有纯文本密码.或者我可以用纯文本将其存储在数据库中.显然两者都是不可接受的.

Salting和hashing,通常的技术不会在这里工作,因为我需要将密码发送到gmail.

那么,为第三方服务保护密码有哪些策略?

最终用户名和密码甚至不属于我,它们将属于应用程序最终用户.

解决方法

Gmail的SMTP服务器支持两种身份验证机制:PLAIN和XOAUTH. PLAIN机制要求您知道用户的明文密码,我很高兴您不准备存储这些密码.

请查看Gmail使用的OAuth协议.我还没有使用它,我发现Gmail支持SMTP,所以我不能再帮助了,但我会说这正是你想要的. OAuth是一种服务(例如Gmail)允许第三方服务(例如您的)代表用户执行一组有限操作而无需使用其密码登录的方式.

猜你在找的Ruby相关文章