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

时间:2012-08-15 12:11:44

标签: ruby-on-rails ruby ruby-on-rails-3 security oauth

我有一个使用OAuth连接到Facebook的Rails应用程序。我正在寻找的是如何处理来自facebook的OAuth密钥和秘密的完整描述。

  1. 在哪里存放?
  2. 如何将它们存放在那里?我看到一个答案说它应该是一个env变量,但我正在寻找细节:如何将它们添加到env?手动?脚本?什么剧本?应该在哪里?源控制怎么样?生产怎么样?
  3. 为了在开发,测试和制作中实施解决方案,我应该知道的任何其他细节。
  4. 我已经看到了这个问题的一些变体,但从未有过完整而详细的答案。

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

2 个答案:

答案 0 :(得分:5)

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

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

$ echo "export OAUTH_SECRET='kie92j8fKEHHE92Va1njk3'" >> ~/.bash_profile

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

ENV["OAUTH_SECRET"]

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

答案 1 :(得分:0)

大多数人都创建了自己的config.yml。这很容易做到。 Here是创建config.yml

的详细说明