¿Qué es RelayState?
Como describe
OASIS
:
"A veces se utiliza un campo específico de enlace llamado RelayState para coordinar mensajes y acciones de IdPs y SPs, por ejemplo, para permitir que un IdP (con el que se inició el SSO) indique la URL de un recurso deseado al comunicarse con un SP."
En otras palabras, RelayState es un parámetro de URL que usamos para indicar a nuestro Proveedor de Identidad a dónde debe enviar la respuesta de vuelta (¿directamente a WebGUI? ¿Fiori? ¿NWBC?...).
Iniciado por Proveedor de Identidad vs Iniciado por Proveedor de Servicios
Para configurar correctamente el RelayState, es necesario comprender la diferencia entre el flujo de autenticación iniciado por IDP y el iniciado por SP.
El flujo de autenticación iniciado por SP es cuando se introduce la URL del Proveedor de Servicios y se redirige al IDP y, por lo tanto, el IDP sabe quién está iniciando el flujo de autenticación SAML. Esto es importante porque el Proveedor de Identidad puede servir a más de un SP, por lo que sabe quién está enviando la solicitud. No necesitamos modificar la URL para decirle al IDP quiénes somos.
El iniciado por IDP es cuando se introduce la URL del IDP en el navegador y, por lo tanto, el IDP no sabe quién está enviando la SAMLRequest. Ahí es donde entra en juego el saml2sp. Podemos usar el
http://idpurl?saml2sp=spname
. Esto se describe
aquí
.
Requisitos previos para usar RelayState
-
Ya tienes un entorno autenticando a través de SAML2
-
Estás utilizando un flujo de autenticación iniciado por IDP
Cómo configurar RelayState en AS ABAP
-
Primero, puedes abrir la transacción
SAML2
desde tu AS ABAP a través de SAPGUI.
-
Haz clic en
Configuración del Proveedor de Servicios
y desplázate hacia abajo hasta
Mapeo de RelayState.
-
Como puedes ver, tenemos dos columnas:
RelayState
y
Ruta de la Aplicación
. En el primero puedes usar cualquier nombre porque es solo un alias (usaremos este nombre como parámetro de URL). El segundo es la ruta a tu URL/Servicio (por ejemplo, /sap/bc/...).
-
Por lo tanto, crea un alias para tu servicio y especifica la ruta.
-
¡Listo! Has configurado el RelayState. Vamos a probarlo.
-
Introduce la URL de tu IDP utilizando el parámetro saml2sp y el RelayState.
-
En mi caso, sería:
http://myidpurl:50200/saml2/idp/sso?saml2sp=ABAP_N50_SP&RelayState=fiori
-
Como puedes ver, he sido redirigido a Fiori y no a la ruta predeterminada.
Conclusión
Para concluir, RelayState es un parámetro de URL que podemos utilizar para redirigir al usuario a una aplicación diferente después de que finalice el flujo de autenticación.
Referencias
Pedro Pascal
Se unió el 07/03/2018