oauth-2.0 - 开发和生产中的 OAuth2

标签 oauth-2.0 development-environment production-environment

在开发和生产环境中使用 OAuth2 身份验证的最佳策略是什么?

例如,我想创建一个基于 Web 的开源 GitHub 客户端。我已将我的客户端注册为 GitHub 应用程序。根据 OAuth2 规范,我必须在注册应用程序时指定重定向 url。我应该使用什么 redirect_url,基于本地主机还是真实的生产 url?如果我使用基于本地主机(用于开发),我的生产站点显然会停止工作(反之亦然)。

在公共(public)代码中存储 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....

然后在您的代码中使用这些:

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...

您必须记住在启动服务器时设置环境。例如:

thin -e production start

thin -e development start

您可能想要忽略 application.yml 文件。

关于oauth-2.0 - 开发和生产中的 OAuth2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18855743/

相关文章:

oauth-2.0 - Microsoft 图 API 访问 token 生命周期

mysql - 设置网站的测试副本

php - Vagrant 命令未运行,正在安装开发机

交响乐 4 : Uncaught RuntimeException: APP_ENV environment variable is not defined

c# - 在 Entity Framework 中将数据从一个提供者实时传输到另一个提供者

command - 如何使 symfony 4 命令仅在开发环境中注册并在产品中禁用?

c# - 在启用 Azure 目录的情况下通过 Azure 代理访问本地 Api

带有 OAuth2 的 Facebook v2.4 停止工作,只获取名称和 ID

node.js - 当我只想对 API 进行准系统测试时,为什么 MSDN 告诉我创建 OAuth2.0 客户端?

development-environment - 是否有具有大/可配置舞台分辨率的可视化编程语言?