View a markdown version of this page

Inicio de sesión SAML en grupos de usuarios de Amazon Cognito - Amazon Cognito

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Inicio de sesión SAML en grupos de usuarios de Amazon Cognito

Amazon Cognito admite el inicio de sesión único (SSO) y el SSO iniciados por el proveedor de servicios (SP-initiated). IdP-initiated Como práctica de seguridad recomendada, implemente el inicio de sesión único en su grupo de usuarios. SP-initiated En la sección 5.1.2 de la descripción V2.0 técnica del SAML se describe el SSO. SP-initiated Amazon Cognito es el proveedor de identidad (IdP) para la aplicación. La aplicación es el proveedor de servicios (SP) que recupera tokens para usuarios autenticados. No obstante, cuando utiliza un IdP externo para autenticar usuarios, Amazon Cognito es el SP. Cuando los usuarios de SAML 2.0 se autentican con un SP-initiated flujo, siempre deben realizar primero una solicitud a Amazon Cognito y redirigirlos al IdP para la autenticación.

En algunos casos de uso empresariales, el acceso a las aplicaciones internas comienza en un marcador de un panel alojado por el IdP de la empresa. Cuando un usuario selecciona un marcador, el IdP genera una respuesta SAML y la envía al SP para autenticar al usuario con la aplicación.

Puede configurar un IdP de SAML en su grupo de usuarios para IdP-initiated que sea compatible con el SSO. Cuando admite la IdP-initiated autenticación, Amazon Cognito no puede comprobar que ha solicitado la respuesta de SAML que recibe porque Amazon Cognito no inicia la autenticación con una solicitud de SAML. En el SP-initiated SSO, Amazon Cognito establece parámetros de estado que validan una respuesta de SAML con respecto a la solicitud original. Con SP-initiated el inicio de sesión, también puede protegerse contra la falsificación de solicitudes entre sitios (CSRF).

Implementa el SP-initated inicio de sesión mediante SAML

Como práctica recomendada, implemente el inicio de sesión iniciado por el proveedor de servicios (SP-initiated) en su grupo de usuarios. Amazon Cognito inicia la sesión del usuario y lo redirige al IdP. Con este método, tiene un amplio control sobre quién presenta las solicitudes de inicio de sesión. También puede permitir IdP-initiated el inicio de sesión en determinadas condiciones.

El siguiente proceso muestra cómo los usuarios completan el inicio de SP-initiated sesión en tu grupo de usuarios a través de un proveedor de SAML.

Diagrama de flujo de autenticación del inicio de sesión con SP-initiated SAML en Amazon Cognito.
  1. El usuario introduce su dirección de correo electrónico en la página de inicio de sesión. Para determinar la redirección del usuario a su IdP, puede recopilar su dirección de correo electrónico en una aplicación personalizada o invocar el inicio de sesión administrado la vista web.

    Puedes configurar tus páginas de inicio de sesión gestionadas para que muestren una lista IdPs o soliciten una dirección de correo electrónico y la asocien con el identificador de tu IDP de SAML. Para solicitar una dirección de correo electrónico, edite el estilo de marca de su inicio de sesión administrado. En Base, busque Comportamiento de autenticación y, en Pantalla de proveedor, ponga Estilo de visualización como Entrada de búsqueda de dominio.

  2. La aplicación invoca el punto de conexión de redireccionamiento del grupo de usuarios y solicita una sesión con el ID de cliente que corresponde a la aplicación y el ID del IdP que corresponde al usuario.

  3. Amazon Cognito redirige al usuario al IdP con una solicitud de SAML, firmada opcionalmente, en un elemento AuthnRequest.

  4. El IdP autentica al usuario de forma interactiva o con una sesión recordada en una cookie del navegador.

  5. El IdP redirige al usuario al punto de conexión de respuesta de SAML del grupo de usuarios con la aserción SAML cifrada opcionalmente en la carga útil de POST.

    nota

    Amazon Cognito cancela las sesiones que no reciben respuesta en un plazo de cinco minutos y redirige al usuario al inicio de sesión administrado. Cuando el usuario obtenga este resultado, recibirá un mensaje de error Something went wrong.

  6. Tras verificar la aserción SAML y asignar los atributos del usuario desde las notificaciones de la respuesta, Amazon Cognito crea o actualiza internamente el perfil del usuario en el grupo de usuarios. Por lo general, el grupo de usuarios devuelve un código de autorización a la sesión del navegador del usuario.

  7. El usuario presenta su código de autorización a la aplicación, que lo intercambia por tokens web JSON (JWT).

  8. La aplicación acepta y procesa el token de identificación del usuario como autenticación, genera solicitudes autorizadas a los recursos con un token de acceso y almacena el token de actualización.

Cuando un usuario se autentica y recibe una adjudicación de código de autorización, el grupo de usuarios devuelve tokens de ID, de acceso y de actualización. El token de identificación es un objeto de autenticación para la administración de OIDC-based identidades. El token de acceso es un objeto de autorización con ámbitos de OAuth 2.0. El token de actualización es un objeto que genera nuevos ID y tokens de acceso cuando los tokens actuales del usuario han caducado. Puede configurar la duración de los tokens de los usuarios en el cliente de aplicación del grupo de usuarios.

También puede elegir la duración de los tokens de actualización. Una vez que caduque el token de actualización de un usuario, este debe volver a iniciar sesión. Si se ha autenticado a través de un IdP SAML, la duración de la sesión de usuario se establece en función de la caducidad de los tokens del usuario y no de la caducidad de la sesión del usuario con su IdP. Su aplicación debe almacenar el token de actualización de cada usuario y renovar su sesión cuando caduque. El inicio de sesión administrado mantiene las sesiones de los usuarios en una cookie del navegador que es válida durante 1 hora.

Implemente el inicio de IdP-initiated sesión mediante SAML

Al configurar su proveedor de identidad para el inicio de sesión con IdP-initiated SAML 2.0, puede presentar las aserciones de SAML en el saml2/idpresponse punto final del dominio de su grupo de usuarios sin necesidad de iniciar la sesión en el. Autorizar punto de conexión Un grupo de usuarios con esta configuración acepta las afirmaciones de IdP-initiated SAML de un proveedor de identidad externo del grupo de usuarios compatible con el cliente de la aplicación solicitada.

Diagrama de flujo de autenticación del inicio de sesión con IdP-initiated SAML en Amazon Cognito.
  1. Un usuario solicita el inicio de sesión mediante SAML en su aplicación.

  2. La aplicación invoca un navegador o redirige al usuario a la página de inicio de sesión del proveedor SAML.

  3. El IdP autentica al usuario de forma interactiva o con una sesión recordada en una cookie del navegador.

  4. El IdP redirige al usuario a la aplicación con la aserción SAML en el cuerpo de POST.

  5. La aplicación añade la aserción SAML al cuerpo de POST de una solicitud, en el punto de conexión saml2/idpresponse del grupo de usuarios.

  6. Amazon Cognito emite un código de autorización para su usuario.

  7. El usuario presenta su código de autorización a la aplicación, que lo intercambia por tokens web JSON (JWT).

  8. La aplicación acepta y procesa el token de identificación del usuario como autenticación, genera solicitudes autorizadas a los recursos con un token de acceso y almacena el token de actualización.

Los siguientes pasos describen el proceso general de configuración e inicio de sesión con un proveedor de IdP-initiated SAML 2.0.

  1. Cree o designe un grupo de usuarios y un cliente de aplicación.

  2. Cree un IdP SAML 2.0 en el grupo de usuarios.

  3. Configure su IdP para que admita el inicio del IdP. IdP-initiated SAML introduce consideraciones de seguridad a las que no están sujetos otros proveedores de SSO. Por este motivo, no puedes añadir aplicaciones que no sean de SAML IdPs, ni siquiera el propio grupo de usuarios, a ningún cliente de aplicaciones que utilice un proveedor de SAML al iniciar sesión. IdP-initiated

  4. Asocia tu proveedor de IdP-initiated SAML a un cliente de aplicaciones de tu grupo de usuarios.

  5. Dirija al usuario a la página de inicio de sesión del IdP SAML y recupere una aserción SAML.

  6. Dirija al usuario al punto de conexión saml2/idpresponse del grupo de usuarios con la aserción SAML.

  7. Reciba los tokens web JSON (JWT).

Para aceptar aserciones de SAML no solicitadas en el grupo de usuarios, debe tener en cuenta su repercusión en la seguridad de la aplicación. Cuando aceptas solicitudes, es probable que se produzcan intentos de suplantación de identidad y CSRF. IdP-initiated Aunque su grupo de usuarios no puede verificar una sesión de inicio de IdP-initiated sesión, Amazon Cognito valida los parámetros de solicitud y las afirmaciones de SAML.

Además, la aserción SAML no debe contener ninguna notificación InResponseTo y debe haberse emitido en los seis minutos anteriores.

Debe enviar las solicitudes con SAML a su. IdP-initiated /saml2/idpresponse En el caso de las solicitudes de autorización de inicio de sesión gestionadas SP-initiated y gestionadas, debes proporcionar parámetros que identifiquen el cliente de la aplicación solicitada, los ámbitos, el URI de redireccionamiento y otros detalles como parámetros de cadena de consulta en HTTP GET las solicitudes. Sin embargo, en el caso de las afirmaciones de IdP-initiated SAML, los detalles de la solicitud deben tener el formato de un RelayState parámetro en el cuerpo de la solicitud. HTTP POST El cuerpo de la solicitud también debe contener la aserción SAML como parámetro SAMLResponse.

El siguiente es un ejemplo de solicitud y respuesta para un IdP-initiated proveedor de SAML.

POST /saml2/idpresponse HTTP/1.1 User-Agent: USER_AGENT Accept: */* Host: example.auth.us-east-1.amazoncognito.com Content-Type: application/x-www-form-urlencoded SAMLResponse=[Base64-encoded SAML assertion]&RelayState=identity_provider%3DMySAMLIdP%26client_id%3D1example23456789%26redirect_uri%3Dhttps%3A%2F%2Fwww.example.com%26response_type%3Dcode%26scope%3Demail%2Bopenid%2Bphone HTTP/1.1 302 Found Date: Wed, 06 Dec 2023 00:15:29 GMT Content-Length: 0 x-amz-cognito-request-id: 8aba6eb5-fb54-4bc6-9368-c3878434f0fb Location: https://www.example.com?code=[Authorization code]
Consola de administración de AWS
Para configurar un IdP para SAML IdP-initiated
  1. Cree un grupo de usuarios, un cliente de aplicación y un proveedor de identidades de SAML.

  2. Desvincule todos los proveedores de identidades de redes sociales y de OIDC del cliente de aplicación, si tiene alguno asociado.

  3. Vaya al menú Proveedores sociales y externos de su grupo de usuarios.

  4. Edite o añada un proveedor de SAML.

  5. En Inicio de sesión con IdP-initiated SAML, selecciona Aceptar SP-initiated y aseveraciones de SAML. IdP-initiated

  6. Seleccione Save changes (Guardar cambios).

API/CLI

Para configurar un IdP para SAML IdP-initiated

Configure IdP-initiated SAML con el IDPInit parámetro de una solicitud de API CreateIdentityProvidero UpdateIdentityProvideruna solicitud. El siguiente es un ejemplo ProviderDetails de un IdP que admite IdP-initiated SAML.

"ProviderDetails": { "MetadataURL" : "https://myidp.example.com/saml/metadata", "IDPSignout" : "true", "RequestSigningAlgorithm" : "rsa-sha256", "EncryptedResponses" : "true", "IDPInit" : "true" }