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