omniauth-saml
omniauth-saml copied to clipboard
feat: Support RelayState binding by default during SSO
Some bindings define a "RelayState" mechanism for preserving and conveying state information. When such a mechanism is used in conveying a request message as the initial step of a SAML protocol, it places requirements on the selection and use of the binding subsequently used to convey the response. Namely, if a SAML request message is accompanied by RelayState data, then the SAML responder MUST return its SAML protocol response using a binding that also supports a RelayState mechanism, and it MUST place the exact RelayState data it received with the request into the corresponding RelayState parameter in the response.
In order to make standards-compliant usage of RelayState easier for implementing developers, this PR makes two changes:
- It adds a default
RelayStateparam mapping to the gem's:idp_sso_service_url_runtime_paramsconfig. - It enables the use of
RelayStatewhenOmniAuth.config.test_modeis enabled.- It does this by extending
OmniAuth::Strategy#mock_request_callto add any POSTRelayStateparams to the query string that will be used in the callback URL.
- It does this by extending
Tests have been added for both of these new behaviors.