簡體   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