SP frente a SSO iniciada IdP

En este artículo se tratan los conceptos de SP y IdP SSO iniciada entre dos despliegues de federación, así como las diferencias entre estos dos flujos.

En este artículo también se explica el concepto de un estado de usuario o una URL de retorno compartida entre IdP y el SP durante el SSO de federación, que se denomina:

En este artículo se muestran ejemplos que utilizan el protocolo SAML 2.0, aunque lo mismo se aplica a otros protocolos.

Flujos SSO de Federación

Topología

Un despliegue típico de federación está formado por las siguientes entidades:

SSO iniciada por SP

Un flujo de SSO iniciado por SP es una operación de SSO de federación que se inició desde el dominio de seguridad de SP, mediante el servidor de federación de SP, la creación de una solicitud de autenticación de federación y el redireccionamiento del usuario a IdP con el mensaje y alguna cadena corta que representa el estado de la operación:

Nota sobre el estado operativo: por lo general, el estado compartido en el mensaje no debe ser demasiado largo, ya que podría romper los flujos de redirección con la longitud de la URL de redirección que supera la longitud máxima que los exploradores pueden manejar para las URL. Por lo tanto, siempre es preferible que durante el inicio de sesión único iniciado por el SP tenga el SP.

Hay dos formas de disparar un flujo de SSO iniciado por SP:

Acceso a un recurso

Este es el flujo más común para las operaciones de SSO de federación, donde el usuario intenta acceder a un recurso protegido y el sistema SSO en tiempo de ejecución determina que el usuario debe autenticarse mediante SSO de federación.

Los casos de uso en los que se utiliza este flujo pueden ser:

El flujo incluye los siguientes pasos:

  1. El explorador del usuario solicita acceso a un recurso protegido

  2. El agente web SSO intercepta la llamada, determina que el usuario debe autenticarse y emite un redireccionamiento al explorador del usuario

  3. El explorador del usuario accede al servidor SSO, redirigido por el agente web SSO

  4. El servidor SSO determina que el usuario se debe autenticar mediante SSO de federación, selecciona IdP, crea un mensaje AuthnRequest de SAML 2.0, guarda el estado operativo en el almacén del servidor SSO y redirige el explorador del usuario a IdP con el mensaje SAML y una cadena que hace referencia al estado operativo en el SP

  5. El explorador del usuario accede al servicio IdP SAML 2.0 con el mensaje AuthnRequest.

Descripción de la ilustración Accessing_Resources_Screen.jpg

Una vez que IdP recibe el mensaje AuthnRequest de SAML 2.0, el servidor determina si el usuario debe ser desafiado (aún no autenticado, la sesión ha sufrido un timeout...). Después de la posible identificación del usuario, se reanuda el flujo de SSO de federación.

  1. IdP crea una respuesta SSO con una afirmación SAML 2.0 que contiene información de usuario y datos de autenticación, y redirige el explorador del usuario al SP con el mensaje y el parámetro RelayState

  2. El explorador del usuario presenta la respuesta de SSO al servidor del SP

  3. El SP valida la afirmación de SAML 2.0 y crea una sesión de SSO para el usuario. A continuación, el servidor SSO redirige el explorador del usuario al recurso solicitado originalmente.

  4. El explorador del usuario solicita acceso al recurso. Esta vez, el agente web de SSO otorga acceso al recurso

  5. La aplicación web devuelve una respuesta al explorador del usuario

Descripción de la ilustración Accessing_Resources_Response_Screen.jpg

Como se ha mencionado anteriormente, este flujo es el más utilizado, ya que el servidor SSO de federación solo lo dispara en tiempo de ejecución, sin que sea necesario que ningún otro componente del dominio de seguridad de SP tenga en cuenta la federación.

Llamada a un Servicio de SP de Federación

Este flujo no se utiliza ampliamente, ya que implica que el SSO de federación se iniciará en el SP accediendo a un servicio en el servidor del SP y haciendo caso omiso de cualquier sesión válida existente que el usuario ya pueda tener. Como tal, se debe evitar, ya que tiene un impacto en el rendimiento en:

Los casos de uso en los que se utiliza este flujo pueden ser:

Los casos de uso en los que se utiliza este flujo incluyen los siguientes pasos:

  1. El explorador del usuario accede al SP para iniciar un flujo de SSO de federación especificando opcionalmente

    1. URL a la que se debe redirigir el explorador del usuario después de terminar el SSO de federación

    2. IdP que se va a utilizar

  2. El servidor SSO selecciona IdP si no se proporciona y selecciona la URL de devolución por defecto si no se proporciona, crea un mensaje AuthnRequest de SAML 2.0, guarda el estado operativo en el almacén del servidor SSO y redirige el explorador del usuario a IdP con el mensaje SAML y una cadena que hace referencia al estado operativo en el SP

  3. El explorador del usuario accede al servicio IdP SAML 2.0 con el mensaje AuthnRequest.

Descripción de la ilustración IdP_Service_with_AuthnRequest_Screen.jpg

Una vez que IdP recibe el mensaje AuthnRequest de SAML 2.0, el servidor determina si el usuario debe ser desafiado (aún no autenticado, la sesión ha sufrido un timeout...). Después de la posible identificación del usuario, se reanuda el flujo de SSO de federación:

  1. IdP crea una respuesta SSO con una afirmación SAML 2.0 que contiene información de usuario y datos de autenticación, y redirige el explorador del usuario al SP con el mensaje y el parámetro RelayState

  2. El explorador del usuario presenta la respuesta de SSO al servidor del SP

  3. El SP valida la afirmación de SAML 2.0 y crea una sesión de SSO para el usuario. A continuación, el servidor SSO redirige el explorador del usuario al recurso solicitado originalmente.

  4. El explorador del usuario solicita acceso al recurso. Esta vez, el agente web de SSO otorga acceso al recurso

  5. La aplicación web devuelve una respuesta al explorador del usuario

Descripción de la ilustración IdP_Service_with_Response_Screen.jpg

Este flujo rara vez se debe utilizar, ya que el SSO de federación se dispara de forma estática, incluso si el usuario ya tiene una sesión de SSO válida. Además, implica que algunos componentes del dominio de seguridad del SP deben conocer el servicio del SP.

IdP SSO iniciada

Un flujo de SSO iniciado por IdP es una operación de SSO de federación que se ha iniciado desde el dominio de seguridad IdP, mediante el servidor de federación IdP creando una respuesta de SSO de federación y redirigiendo al usuario al SP con el mensaje de respuesta y un estado operativo opcional:

Como se indica en la sección anterior, el estado compartido en el mensaje no debe ser demasiado largo, ya que podría romper los flujos de redirección con la longitud de la URL de redirección que supera la longitud máxima que los exploradores pueden manejar para las URL.

Este flujo se utiliza normalmente cuando los usuarios de IdP necesitan acceder a recursos alojados por un SP, pero no es el mejor enfoque para SSO de federación, ya que no tiene en cuenta ninguna sesión válida existente en el SP que el usuario ya podría tener. Como tal, se debe evitar, ya que tiene un impacto en el rendimiento en:

Los casos de uso en los que se utiliza este flujo pueden ser:

Los casos de uso en los que se utiliza este flujo incluyen los siguientes pasos:

  1. El explorador del usuario accede a IdP para iniciar un flujo de SSO de federación especificando

    1. El SP que se va a utilizar

    2. Opcionalmente, la dirección URL a la que se debe redirigir el explorador del usuario después de terminar el SSO de federación

  2. Después de haber identificado al usuario, IdP crea una respuesta SSO con una afirmación SAML 2.0 que contiene información de usuario y datos de autenticación, y redirige el explorador del usuario al SP con el mensaje y el parámetro RelayState

  3. El explorador del usuario presenta la respuesta de SSO al servidor del SP

  4. El SP valida la afirmación de SAML 2.0 y crea una sesión de SSO para el usuario. A continuación, el servidor SSO redirige el explorador del usuario al recurso solicitado originalmente.

  5. El explorador del usuario solicita acceso al recurso. Esta vez, el agente web de SSO otorga acceso al recurso

  6. La aplicación web devuelve una respuesta al explorador del usuario

Descripción de la ilustración SSO_Response_Screen.jpg

Conclusión

Como se ve en los distintos flujos, el mejor enfoque en un despliegue de federación es que el servidor SSO de federación lo dispare en tiempo de ejecución, cuando lo considere necesario el servidor SSO. Los otros casos tienen un enfoque estático y siempre ejercen un flujo de SSO de federación, incluso si no es necesario (si el usuario ya tiene una sesión válida, por ejemplo) y realizan un impacto innecesario en las operaciones de federación:

Más recursos de aprendizaje

Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.

Para obtener documentación sobre el producto, visite Oracle Help Center.