https
перенаправить http
на https
в nginx и использовать http-версию URL-адреса в качестве URL-адреса обратного вызова в настройке приложения github oauth
(относится к # 647)
У меня это сработало.
Помните, что URL-адрес обратного вызова фактически установлен на github, а не на Zammad.
Здесь:
Спасибо @ madd86 !
@ madd86 вот что я сделал. Другое дело - обходной путь, чтобы он работал
Привет @schurig -
Я проанализировал поведение и могу воспроизвести возникшую у вас проблему. К сожалению, это выходит за рамки 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
Кажется, некоторые из этих RACK ENV не установлены должным образом. Следует проверить, можем ли мы повлиять на это через конфигурацию NGINX или нам нужно сделать это как-то в контексте Rails.
Привет @schurig - думаю, я понял! Вы используете установку NGINX? Если да, обновите свою конфигурацию и добавьте эти две строки:
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
Для записи: я сбросил rack.envs через инициализатор, перезаписав обнаружение SSL Omniauth в новом инициализаторе rails 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
И ни один из проверенных варов не был установлен.
Это была проблема! Спасибо!! 😍 ❤️
Спасибо за ответ! Фиксация уже в пути. 🚀 до следующего выпуска.
Попробуйте этот ответ, это сработало со мной
https://stackoverflow.com/a/41466634/1770571
@salmagomaa это не решает проблему и являлось ошибкой в Zammad.
Постарайтесь не перерабатывать сообщения - проблема уже решена.
Самый полезный комментарий
Привет @schurig - думаю, я понял! Вы используете установку NGINX? Если да, обновите свою конфигурацию и добавьте эти две строки:
Как на скриншоте:
Перезагрузите NGINX и Zammad и дайте мне знать. В Apache должны быть такие строки:
Для записи: я сбросил rack.envs через инициализатор, перезаписав обнаружение SSL Omniauth в новом инициализаторе rails
config/initializers/debug_ssl.rb
:И ни один из проверенных варов не был установлен.