门卫应用程序不保存

时间:2016-04-05 21:45:54

标签: ruby-on-rails ruby oauth-2.0 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

oauth_applications表是100%空的。

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

修改

我也尝试过:

$>app.save!    

并收到以下错误:

ActiveRecord::RecordInvalid: Validation failed: Redirect URI must be an HTTPS/SSL URI.

2 个答案:

答案 0 :(得分:4)

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

# config/initalizers/doorkeeper.rb

force_ssl_in_redirect_uri false

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

答案 1 :(得分:3)

从错误的以下部分:

Redirect URI must be an HTTPS/SSL URI

您似乎正在使用uri的非安全(http,而不是https)端点。对于某些平台(如Heroku),会自动启用HTTPS支持,因此在uri中放置https://就足够了。

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