https
設定しますnginxでhttp
をhttps
にリダイレクトし、githuboauthアプリ設定でコールバックURLとしてhttpバージョンのURLを使用します
(#647に関連)
それは私のために働いた。
コールバックURLは実際にはZammadではなくgithubに設定されていることに注意してください。
ここに:
ありがとう@ madd86 !
@ madd86それが私がしたことです。 もう1つは、機能するようにするための回避策です。
こんにちは@ schurig -ups。 早めにボタンを押してください😁
私は行動を分析し、あなたが抱えている問題を再現することができます。 残念ながら、これはZammadの範囲外であるため(Ominauthによって実行されます)、直接修正を提供することはできません。 それでも、それをさらに分析して、それを機能させるための最良の解決策を見つけます。
再現方法:
現在の状態:
redirect_urlはここから来ます:
https://github.com/intridea/omniauth-github/blob/master/lib/omniauth/strategies/github.rb#L5
https://github.com/intridea/omniauth-oauth2/blob/master/lib/omniauth/strategies/oauth2.rb#L47
https://github.com/omniauth/omniauth/blob/8098855f6b52f5f1aecbd700e7068f204adddfdd/lib/omniauth/strategy.rb#L435
https://github.com/omniauth/omniauth/blob/8098855f6b52f5f1aecbd700e7068f204adddfdd/lib/omniauth/strategy.rb#L428
https://github.com/omniauth/omniauth/blob/8098855f6b52f5f1aecbd700e7068f204adddfdd/lib/omniauth/strategy.rb#L503
それらのRACKENVのいくつかが正しく設定されていないようです。 NGINX confを介してこれに影響を与えることができるかどうか、またはRailsコンテキストで何らかの方法でそれを行う必要があるかどうかを確認する必要があります。
こんにちは@ schurig-私はそれを手に入れたと思います! NGINXインストールで実行していますか? その場合は、構成を更新して、次の2行を追加してください。
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Port 443;
スクリーンショットのように:
NGINXとZammadを再起動して、私に知らせてください。 Apacheは次の行である必要があります。
RequestHeader set Host zammad.example.com
RequestHeader set X-Forwarded-Proto https
RequestHeader set X-Forwarded-Port 443
記録のために:新しいrails初期化子config/initializers/debug_ssl.rb
Omniauthssl検出を上書きする初期化子を介してrack.envsをダンプしました:
Rails.application.config.to_prepare do # to_prepare ensures that the monkey patching happens before the first request
OmniAuth::Strategy.class_eval do # reopen the class
protected
def ssl? # redefine the ssl? method
# DEBUG/CUSTOMIZATION
File.write('/tmp/omniauth.log', request.env.inspect)
# DEBUG/CUSTOMIZATION
request.env['HTTPS'] == 'on' ||
request.env['HTTP_X_FORWARDED_SSL'] == 'on' ||
request.env['HTTP_X_FORWARDED_SCHEME'] == 'https' ||
(request.env['HTTP_X_FORWARDED_PROTO'] && request.env['HTTP_X_FORWARDED_PROTO'].split(',')[0] == 'https') ||
request.env['rack.url_scheme'] == 'https'
end
end
end
また、チェックされた変数はどれも設定されていません。
これが問題でした! ありがとう! 😍❤️
フィードバックをお寄せいただきありがとうございます! コミットはその途上にあります。 🚀次の号まで。
この答えを試してみてください
https://stackoverflow.com/a/41466634/1770571
@salmagomaaこれは問題を解決せず、Zammad内のバグでした。
投稿をリサイクルしないようにしてください-問題はすでに解決されています。
最も参考になるコメント
こんにちは@ schurig-私はそれを手に入れたと思います! NGINXインストールで実行していますか? その場合は、構成を更新して、次の2行を追加してください。
スクリーンショットのように:
NGINXとZammadを再起動して、私に知らせてください。 Apacheは次の行である必要があります。
記録のために:新しいrails初期化子
config/initializers/debug_ssl.rb
Omniauthssl検出を上書きする初期化子を介してrack.envsをダンプしました:また、チェックされた変数はどれも設定されていません。