门卫应用程序未保存

gre*_*inn 5 ruby ruby-on-rails oauth-2.0 doorkeeper

我让 Doorkeeper 在本地工作,但是一旦部署到生产环境中,我就会遇到一个奇怪的问题。我无法创建新应用程序,请参见下文:

$> app = Doorkeeper::Application.new :name => 'test', :redirect_uri => 'http://test.com'
=> #<Doorkeeper::Application id: nil, name: "test", uid: nil, secret: nil, redirect_uri: "http://test.com", scopes: "", created_at: nil, updated_at: nil>

$> app.save
   (0.8ms)  BEGIN
   (0.8ms)  BEGIN
  Doorkeeper::Application Exists (0.7ms)  SELECT  1 AS one FROM `oauth_applications` WHERE `oauth_applications`.`uid` = BINARY '56bf468e5a1d116e3daef75ecc49b6b6ba313a9a79815b5b4683d56851880c49' LIMIT 1
  Doorkeeper::Application Exists (0.7ms)  SELECT  1 AS one FROM `oauth_applications` WHERE `oauth_applications`.`uid` = BINARY '56bf468e5a1d116e3daef75ecc49b6b6ba313a9a79815b5b4683d56851880c49' LIMIT 1
   (0.4ms)  ROLLBACK
   (0.4ms)  ROLLBACK
=> false
Run Code Online (Sandbox Code Playgroud)

oauth_applications 表是 100% 空的。

我正在服务器上运行它(在本地它按预期工作),如果您需要更多信息,请告诉我。

编辑:

我也试过:

$>app.save!    
Run Code Online (Sandbox Code Playgroud)

并得到以下错误:

ActiveRecord::RecordInvalid: Validation failed: Redirect URI must be an HTTPS/SSL URI.
Run Code Online (Sandbox Code Playgroud)

gre*_*inn 5

我有一个非 https uri 的解决方案。在 doorkeeper.rb 配置文件中,您可以选择设置force_ssl_in_redirect_uri为false.

# config/initalizers/doorkeeper.rb

force_ssl_in_redirect_uri false
Run Code Online (Sandbox Code Playgroud)

事实证明这不是问题,而是设计使然:)


max*_*ner 4

来自错误的以下部分:

Redirect URI must be an HTTPS/SSL URI
Run Code Online (Sandbox Code Playgroud)

看来您正在使用uri 的不安全( http, not )端点。https对于某些平台(例如 Heroku),会自动启用 HTTPS 支持,因此放入https://uri 就足够了。

对于 ElasticBeanstalk 来说,这不应该是一个非常麻烦的过程。请参阅他们的文档以开始使用。您需要从域名提供商处购买 SSL 证书,然后在 ElasticBeanstalk Web 配置中找到上传和使用证书的选项(我认为该选项可能位于负载均衡器部分)。