在Rails中处理Oauth Consumer Key和Secret的正确方法是什么?

dav*_*rac 4 ruby security ruby-on-rails oauth ruby-on-rails-3

我有一个使用OAuth连接到Facebook的Rails应用程序.我正在寻找的是如何处理OAuth密钥的完整描述以及我从facebook获得的秘密.

  1. 在哪里存放?
  2. 如何将它们存放在那里?我看到一个答案说它应该是一个env变量,但我正在寻找细节:如何将它们添加到env?手动?脚本?什么剧本?应该在哪里?源控制怎么样?生产怎么样?
  3. 为了在开发,测试和生产中实现解决方案,我应该知道的任何其他细节.

我已经看到了这个问题的一些变体,但从未有过完整而详细的答案.

我真的在寻找整体流程,但也需要所有可能看起来微不足道的小细节,但对于理解这一点非常重要.

Mik*_*ord 5

您需要在代码之外存储密钥和特定于环境的配置.您应该以允许您将源代码发布到公共存储库(例如github)的方式存储它们,而不会忽略源代码管理中的任何文件.这是十二因素方法论的原则.

无论如何,要回答您的问题,您可以将这些键添加为shell变量.这假设您正在开发*nix.

$ echo "export OAUTH_SECRET='kie92j8fKEHHE92Va1njk3'" >> ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

现在,在您的Rails代码中,您可以访问所有环境变量:

ENV["OAUTH_SECRET"]
Run Code Online (Sandbox Code Playgroud)

可以在部署脚本中设置这些环境变量,该脚本会在命令行上提示您输入这些变量.这也允许团队中的每个开发人员拥有自己的密钥.