Saltar al contenido principal
Cloud availabilityOSS availability

IdP-initiated SSO (solo SAML)

El IdP-initiated SSO es un proceso de inicio de sesión único donde el Proveedor de Identidad (IdP) controla principalmente el flujo de autenticación. Este proceso comienza cuando un usuario inicia sesión en la plataforma del IdP, como un portal de la empresa o un panel de identidad centralizado. Una vez autenticado, el IdP genera una aserción SAML y dirige al usuario al Proveedor de Servicios (SP) para acceder a la aplicación o servicio.

IdP-initiated SSO

Riesgos y consideraciones

El IdP-initiated SSO puede introducir varias vulnerabilidades de seguridad que las organizaciones deben tener en cuenta. Dado que el proceso de autenticación es iniciado por el IdP sin una solicitud directa del usuario, puede ser susceptible a varios ataques, incluyendo Cross-Site Request Forgery (CSRF).

Esta falta de autenticación iniciada por el usuario puede llevar a accesos no autorizados si no se implementan las salvaguardas adecuadas. Además, la dependencia de un único punto de autenticación aumenta el riesgo de una violación de seguridad, ya que comprometer el IdP podría exponer todas las aplicaciones conectadas.

Por lo tanto, se recomienda encarecidamente utilizar SP-initiated SSO, que proporciona un flujo de autenticación más seguro y controlado, asegurando que los usuarios soliciten explícitamente acceso a los servicios.

Conectar IdP-initiated SSO con aplicaciones Logto OIDC

Logto como proveedor de OpenID Connect (OIDC) no admite IdP-initiated SSO. Sin embargo, puedes configurar Logto como un SP para admitir IdP-initiated SSO con tu IdP empresarial utilizando SAML. Esta configuración te permite aprovechar las capacidades de autenticación de Logto mientras mantienes el control del IdP sobre el flujo de autenticación.

nota:

Por defecto, esta función no está habilitada en Logto. Si necesitas que IdP-initiated SSO esté habilitado para tu inquilino, por favor contacta a nuestro equipo de soporte.

Requisitos previos

Antes de configurar IdP-initiated SSO, primero necesitas crear un conector SAML. Navega a la Consola > SSO empresarial y sigue la guía paso a paso para configurar un conector SAML con tu IdP.

Una vez que el conector SAML esté configurado, puedes habilitar el método de inicio de sesión SSO en la sección Experiencia de inicio de sesión, y probar el flujo SP-initiated SSO para asegurarte de que la configuración sea correcta. Asegúrate de que el SP-initiated SSO funcione como se espera antes de proceder con IdP-initiated SSO.

Habilitar IdP-initiated SSO

Una vez que la función IdP-initiated SSO esté habilitada para tu inquilino, deberías ver una pestaña adicional en la página de configuración de tu conector SAML, llamada IdP-initiated SSO. Habilita el interruptor IdP-initiated SSO para activar la función para el conector.

Seleccionar la aplicación SP

A diferencia de SP-initiated SSO, donde el flujo de autenticación comienza desde el SP, IdP-initiated SSO requiere una aplicación SP del lado del cliente para redirigir a los usuarios después del proceso de autenticación. Puedes seleccionar la aplicación SP de la lista de aplicaciones registradas en el menú desplegable Aplicación predeterminada.

Solo las aplicaciones Traditional Web App y Single Page App son compatibles con IdP-initiated SSO. Asegúrate de seleccionar el tipo de aplicación adecuado según tu caso de uso.

nota:

En el lado de tu IdP, deja el parámetro RelayState en VACÍO para que el flujo IdP-initiated SSO funcione correctamente. Logto manejará la redirección basada en la aplicación SP predeterminada seleccionada.

Configurar el flujo de autenticación IdP-initiated

Para conectar IdP-initiated SAML SSO con OIDC, Logto proporciona dos opciones de configuración para manejar la solicitud de autenticación.

Cuando el IdP inicia el flujo SSO y envía la aserción SAML a Logto, se creará una sesión de aserción SSO iniciada por IdP. Logto redirigirá al usuario a la aplicación SP predeterminada para iniciar una solicitud de autenticación OIDC estándar en el lado del cliente.

Para configurar esta opción, selecciona la tarjeta Redirigir al cliente para autenticación iniciada por SP en la pestaña IdP-initiated SSO de la configuración del conector SAML.

Flujo SP-initiated SSO
  1. Proporciona una URL de redirección del cliente para redirigir al usuario a la aplicación SP predeterminada después del flujo IdP-initiated SSO. Logto redirigirá al usuario a esta URL con el parámetro de consulta ?ssoConnectorId={connectorId} añadido a la URL. La aplicación cliente debe manejar la redirección e iniciar la solicitud de autenticación OIDC. (Recomendamos usar una ruta o página dedicada en tu aplicación cliente para manejar la solicitud de autenticación IdP-initiated SSO).

  2. Maneja la solicitud de autenticación OIDC en el lado del cliente usando el parámetro de consulta ssoConnectorId para identificar el conector SAML que inició el flujo de autenticación IdP-initiated SSO.

  3. Pasa el parámetro de autenticación inicio de sesión directo en la solicitud de inicio de sesión a Logto para completar el flujo de autenticación SSO.

// Ejemplo en React
import { Prompt, useLogto } from '@logto/react';
import { useEffect } from 'react';
import { useNavigate, useSearchParams } from 'react-router-dom';

const SsoDirectSignIn = () => {
const { signIn } = useLogto();
const [searchParams] = useSearchParams();

useEffect(() => {
const ssoConnectorId = searchParams.get('ssoConnectorId');
if (ssoConnectorId) {
void signIn({
redirectUri,
prompt: Prompt.Login,
directSignIn: {
method: 'sso',
target: ssoConnectorId,
},
});
}
}, [searchParams, signIn]);
};
  • redirectUri: El redirect_uri para redirigir al usuario después de que se complete el flujo de autenticación OIDC.
  • prompt=login: Obliga al usuario a iniciar sesión usando la identidad de IdP-initiated SSO.
  • directSignIn=sso:{connectorId}: Especifica el método de inicio de sesión directo como sso y el ID del conector SAML de destino. Este parámetro activará el flujo de autenticación SSO directamente sin mostrar la página de inicio de sesión. El usuario será autenticado automáticamente usando la sesión de aserción SSO iniciada por IdP preservada si el ID del conector coincide y la sesión es válida.

Este método asegura que el flujo de autenticación sea seguro y siga el protocolo OIDC estándar, mientras mantiene el control del IdP sobre el proceso de autenticación. La aplicación cliente puede aprovechar la sesión de aserción SSO iniciada por IdP para autenticar al usuario sin pasos de inicio de sesión adicionales, manteniendo el flujo de autenticación seguro y controlado. La aplicación cliente aún puede validar los parámetros state y PKCE para asegurar que la solicitud de autenticación sea segura.

nota:

Este método está disponible para aplicaciones Traditional Web App y Single Page App. Y se recomienda para todos los casos de uso.

Opción B: Autenticar directamente al usuario con IdP-initiated SSO

En ciertas circunstancias, el SP puede no ser capaz de manejar el callback de IdP-initiated SSO e iniciar la solicitud de autenticación OIDC. En este caso, Logto proporciona una opción alternativa para autenticar directamente al usuario con la sesión de aserción SSO iniciada por IdP.

Esta opción se considera menos segura y no se recomienda. El flujo de autenticación omite el protocolo OIDC estándar. Como la solicitud de autenticación es iniciada por el IdP, la aplicación cliente puede no ser capaz de validar la solicitud de autenticación de manera segura. Por ejemplo, la aplicación cliente no puede validar los parámetros state y PKCE para asegurar que la solicitud de autenticación sea segura.

aviso:

Este método no está disponible para aplicaciones Single Page App, ya que requiere que la aplicación cliente maneje la solicitud de autenticación de manera segura usando el parámetro PKCE. Si necesitas implementar IdP-initiated SSO para una aplicación SPA, por favor usa la opción anterior.

Para configurar esta opción, selecciona la opción Iniciar sesión directamente usando IdP-initiated SSO en la pestaña IdP-initiated SSO de la configuración del conector SAML.

Flujo IdP-initiated SSO
  1. Selecciona el URI de redirección posterior al inicio de sesión para redirigir al usuario de vuelta a la aplicación cliente después de la autenticación exitosa. Esta URL se usará como el redirect_uri en la solicitud de autenticación OIDC. El URI debe ser uno de los URIs de redirección permitidos registrados en la aplicación cliente.

    nota:

    Se recomienda encarecidamente usar un URI de redirección dedicado para IdP-initiated SSO. Dado que la solicitud de autenticación es no solicitada, la aplicación cliente debe gestionar la respuesta de manera independiente, separada del flujo de autenticación estándar iniciado por SP.

  2. Personaliza los parámetros de la solicitud de autorización si es necesario usando el editor json de Parámetros de autenticación adicionales (siguiendo el tipo Map<string,string>).

    Por ejemplo, por defecto Logto solo solicita los alcances openid y profile. Puedes añadir alcances o parámetros adicionales a la solicitud de autenticación.

    {
    "scope": "email offline_access"
    }
    • añade el alcance adicional email para solicitar la dirección de correo electrónico del usuario.
    • añade el alcance offline_access para solicitar el token de actualización.

    También te recomendamos proporcionar un parámetro state personalizado para validar la respuesta de autenticación de manera segura.

    {
    "state": "custom-state-value"
    }

    La aplicación cliente debe validar el parámetro state en la respuesta del código de autorización para asegurar que la solicitud de autenticación sea válida.