https
Leiten Sie http
in https
in Nginx um und verwenden Sie die http-Version der URL als Rückruf-URL in der Github Oauth-App-Einstellung
(im Zusammenhang mit # 647)
Es hat bei mir funktioniert.
Denken Sie daran, dass die Rückruf-URL tatsächlich auf Github und nicht auf Zammad eingestellt ist.
Hier:
Danke @ madd86 !
@ madd86 das habe ich getan. Die andere Sache ist nur die Problemumgehung, damit es funktioniert
Hallo @schurig - ups. Drücken Sie die Taste zu früh 😁
Ich habe das Verhalten analysiert und kann das Problem reproduzieren, das Sie haben. Leider liegt es außerhalb des Bereichs von Zammad (von Ominauth erstellt), sodass wir keine direkte Lösung anbieten können. Trotzdem werden wir es weiter analysieren, um die beste Lösung zu finden, damit es funktioniert.
So reproduzieren Sie:
Aktuellen Zustand:
Die redirect_url kommt von hier:
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
Es scheint, dass einige dieser RACK ENVs nicht richtig eingestellt sind. Sollte überprüft werden, ob wir dies über das NGINX-Conf beeinflussen können oder ob wir es irgendwie im Rails-Kontext tun müssen.
Hallo @schurig - ich glaube ich habe es verstanden! Laufen Sie mit einer NGINX-Installation? Wenn ja, aktualisieren Sie bitte Ihre Konfiguration und fügen Sie diese beiden Zeilen hinzu:
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Port 443;
Wie im Screenshot:
Starten Sie NGINX und Zammad neu und lassen Sie es mich wissen. Apache sollte diese Zeilen sein:
RequestHeader set Host zammad.example.com
RequestHeader set X-Forwarded-Proto https
RequestHeader set X-Forwarded-Port 443
Für die Aufzeichnung: Ich habe dieack.envs über einen Initialisierer ausgegeben, der die Omniauth-SSL-Erkennung in einem neuen Rails-Initialisierer überschreibt. config/initializers/debug_ssl.rb
:
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
Und keine der überprüften Vars wurde gesetzt.
Das war das Problem! Vielen Dank!! 😍 ❤️
Danke für die Rückmeldung! Commit ist auf dem Weg. 🚀 bis zur nächsten Ausgabe.
Versuchen Sie diese Antwort, es hat bei mir funktioniert
https://stackoverflow.com/a/41466634/1770571
@salmagomaa dies löst das Problem nicht und war ein Fehler in Zammad.
Bitte versuchen Sie nicht, Beiträge zu recyceln - das Problem wurde bereits behoben.
Hilfreichster Kommentar
Hallo @schurig - ich glaube ich habe es verstanden! Laufen Sie mit einer NGINX-Installation? Wenn ja, aktualisieren Sie bitte Ihre Konfiguration und fügen Sie diese beiden Zeilen hinzu:
Wie im Screenshot:
Starten Sie NGINX und Zammad neu und lassen Sie es mich wissen. Apache sollte diese Zeilen sein:
Für die Aufzeichnung: Ich habe dieack.envs über einen Initialisierer ausgegeben, der die Omniauth-SSL-Erkennung in einem neuen Rails-Initialisierer überschreibt.
config/initializers/debug_ssl.rb
:Und keine der überprüften Vars wurde gesetzt.