https
рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди http
https
nginx рдореЗрдВ рдФрд░ github oauth рдРрдк рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдХреЙрд▓рдмреИрдХ url рдХреЗ рд░реВрдк рдореЗрдВ url рдХреЗ http рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
(# 647 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд)
рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ред
рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдХреЙрд▓рдмреИрдХ url рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ github рдкрд░ рд╕реЗрдЯ рд╣реИ, рди рдХрд┐ рдЬрд╝рдорд╛рдж рдкрд░ред
рдпрд╣рд╛рдБ:
рд╢реБрдХреНрд░рд┐рдпрд╛ @ madd86 !
@ madd86 рдореИрдВрдиреЗ рдпрд╣реА рдХрд┐рдпрд╛ рд╣реИред рджреВрд╕рд░реА рдмрд╛рдд рд╕рд┐рд░реНрдл рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░реЗ
рд╣рд╛рдп @schurig - рдЕрдкред рдЬрд▓реНрджреА to рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдЯрди рдорд╛рд░реЛ
рдореИрдВрдиреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛ рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдореМрдЬреВрдж рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЕрдлрд╕реЛрд╕ рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдпрд╣ рдЬрд╝рдорд╛рдж рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ (рдУрдорд┐рдирд╛рде рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдЗрд╕рд▓рд┐рдП рд╣рдо рдПрдХ рд╕реАрдзрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗред рдлрд┐рд░ рднреА рд╣рдо рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред
рдХреИрд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд░реЗрдВ:
рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐:
рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ_рдпреВрд░рд▓ рдпрд╣рд╛рдБ рд╕реЗ рдЖрддрд╛ рд╣реИ:
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.rn#L435
https://github.com/omniauth/omniauth/blob/8098855f6b52f5f1aecbd700e7068f204adddfdd/lib/omniauth/strategy.rn#L428
https://github.com/omniauth/omniauth/blob/8098855f6b52f5f1aecbd700e7068f204adddfdd/lib/omniauth/strategy.rn#L503
рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ RACK ENV рдареАрдХ рд╕реЗ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИрдВред рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╣рдо NGINX рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЕрдЧрд░ рд╣рдореЗрдВ рдЗрд╕реЗ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рд░реЗрд▓ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХрд░рдирд╛ рд╣реИред
рд╣рд╛рдп @schurig - рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╕рдордЭ рдЧрдпрд╛! рдХреНрдпрд╛ рдЖрдк рдПрдХ NGINX рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди рдХреЗ рд╕рд╛рде рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ? рдпрджрд┐ рдРрд╕рд╛ рд╣реИ рддреЛ рдХреГрдкрдпрд╛ рдЕрдкрдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ рдФрд░ рдЗрди рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВ:
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Port 443;
рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреА рддрд░рд╣:
рдЕрдкрдиреЗ NGINX рдФрд░ Zammad рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░реЗрдВ рдФрд░ рдореБрдЭреЗ рдмрддрд╛рдПрдВред рдЕрдкрд╛рдЪреЗ рдпреЗ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:
RequestHeader set Host zammad.example.com
RequestHeader set X-Forwarded-Proto https
RequestHeader set X-Forwarded-Port 443
рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП: рдореИрдВрдиреЗ рдПрдХ рд╢реБрд░реБрдЖрддреА рд░реЗрд▓ рд▓рд╛рдЗрди рдореЗрдВ рдУрдореНрдирд┐рдпреБрде рдПрд╕рдПрд╕рдПрд▓ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рд░реЗрд▓реНрд╕ рдЖрд░рд▓рд╛рдЗрдЬрд╝рд░ config/initializers/debug_ssl.rb
рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░реИрдХ.env рдХреЛ рдбрдВрдк рдХрд┐рдпрд╛ред
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 рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░реЗрдВ рдФрд░ рдореБрдЭреЗ рдмрддрд╛рдПрдВред рдЕрдкрд╛рдЪреЗ рдпреЗ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:
рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП: рдореИрдВрдиреЗ рдПрдХ рд╢реБрд░реБрдЖрддреА рд░реЗрд▓ рд▓рд╛рдЗрди рдореЗрдВ рдУрдореНрдирд┐рдпреБрде рдПрд╕рдПрд╕рдПрд▓ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рд░реЗрд▓реНрд╕ рдЖрд░рд▓рд╛рдЗрдЬрд╝рд░
config/initializers/debug_ssl.rb
рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░реИрдХ.env рдХреЛ рдбрдВрдк рдХрд┐рдпрд╛редрдФрд░ рдХреЛрдИ рднреА рдЬрд╛рдВрдЪрд╛ рдЧрдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред