Currently Kibana heavily relies on URL fragments to navigate between the apps and store applied filters. And since URL fragments are never sent to the server Kibana didn't preserve them during SAML handshake. Moreover URL fragments used in Kibana can be pretty large so we can't store them in the session cookie like we do for SAML request ID. We're planning to change this in 7.5 (see elastic/kibana#44513) and store full URL in the RelayState query string parameter we send to IdP and receive back once user is authenticated.
As we discussed with @jkakavas in elastic/kibana#18392 (comment) it'd make sense for _security/saml/prepare API to accept the arbitrary string as an additional argument with that will eventually be used as RelayState query string parameter in the IdP redirect URL this API returns.
cc @kobelb
Currently Kibana heavily relies on URL fragments to navigate between the apps and store applied filters. And since URL fragments are never sent to the server Kibana didn't preserve them during SAML handshake. Moreover URL fragments used in Kibana can be pretty large so we can't store them in the session cookie like we do for SAML request ID. We're planning to change this in 7.5 (see elastic/kibana#44513) and store full URL in the
RelayStatequery string parameter we send to IdP and receive back once user is authenticated.As we discussed with @jkakavas in elastic/kibana#18392 (comment) it'd make sense for
_security/saml/prepareAPI to accept the arbitrary string as an additional argument with that will eventually be used asRelayStatequery string parameter in the IdP redirect URL this API returns.cc @kobelb