San*_*ane 2 development-environment production-environment oauth-2.0
在开发和生产环境中使用 OAuth2 身份验证的最佳策略是什么?
例如,我想创建一个基于开源 Web 的 GitHub 客户端。我已将我的客户注册为 GitHub 应用程序。根据 OAuth2 规范,我必须在注册应用程序时指定重定向 url。我应该使用什么 redirect_url,基于 localhost 还是真实的生产 url?如果我使用基于 localhost(用于开发),我的生产站点显然会停止工作(反之亦然)。
将 client_id 和 client_secret 存储在公共代码中是否安全?如果不是,存储它的最佳策略是什么(即在一些未添加到源版本控制系统的配置文件中)?
对于 rails,我使用了一个名为figaro的 gem 。
您定义特定于环境的变量 (config/application.yml):
CALENDAR_SCOPE: https://www.googleapis.com/auth/calendar
production:
CLIENT_ID: 393sdfgsdfg.apps.googleusercontent.com
CLIENT_SECRET: sdfgdfsgsg
OAUTH2_REDIRECT: http://mydomain/users/auth/google_oauth2/callback
etc...
development:
CLIENT_ID: 24asdfsadfas.apps.googleusercontent.com
CLIENT_SECRET: asdfsadf
OAUTH2_REDIRECT: http://localhost:3000/users/auth/google_oauth2/callback
etc....
Run Code Online (Sandbox Code Playgroud)
然后在代码中使用这些:
client = Google::APIClient.new({:auto_refresh_token => false})
client.authorization.scope = ENV['CALENDAR_SCOPE']
client.authorization.client_id = ENV['CLIENT_ID']
client.authorization.client_secret = ENV['CLIENT_SECRET']
client.authorization.redirect_uri = ENV['OAUTH2_REDIRECT']
etc...
Run Code Online (Sandbox Code Playgroud)
您必须记住在启动服务器时设置环境。例如:
thin -e production start
Run Code Online (Sandbox Code Playgroud)
或者
thin -e development start
Run Code Online (Sandbox Code Playgroud)
您可能希望忽略 application.yml 文件。
| 归档时间: |
|
| 查看次数: |
2903 次 |
| 最近记录: |