diff options
Diffstat (limited to 'config')
-rw-r--r-- | config/initializers_before_autoloader/100_patch_omniauth_saml.rb | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/config/initializers_before_autoloader/100_patch_omniauth_saml.rb b/config/initializers_before_autoloader/100_patch_omniauth_saml.rb new file mode 100644 index 00000000000..d46842ed9a0 --- /dev/null +++ b/config/initializers_before_autoloader/100_patch_omniauth_saml.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +require 'omniauth/strategies/saml' + +module OmniAuth + module Strategies + class SAML + # NOTE: This method duplicates code from omniauth-saml + # so that we can access authn_request to store it + # See: https://github.com/omniauth/omniauth-saml/issues/172 + def request_phase + authn_request = OneLogin::RubySaml::Authrequest.new + + store_authn_request_id(authn_request) + + with_settings do |settings| + redirect(authn_request.create(settings, additional_params_for_authn_request)) + end + end + + private + + def store_authn_request_id(authn_request) + Gitlab::Auth::Saml::OriginValidator.new(session).store_origin(authn_request) + end + end + end +end |