Información que debe saber sobre SAML IdPs en los 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.

Información que debe saber sobre SAML IdPs en los grupos de usuarios de Amazon Cognito

Amazon Cognito procesa las aserciones de SAML por usted

Los grupos de usuarios de Amazon Cognito admiten la federación SAML 2.0 con puntos de conexión POST-binding. De esta forma, se suprime la necesidad de que la aplicación recupere o analice las respuestas de aserciones SAML, ya que el grupo de usuarios recibe directamente la respuesta SAML del IdP a través de un agente de usuario. El grupo de usuarios actúa como proveedor de servicios (SP) en nombre de la aplicación. Amazon Cognito admite el inicio de sesión único (SSO) iniciado por SP e IDP, tal como se describe en las secciones 5.1.2 y 5.1.4 de la descripción técnica de SAML V2.0.

Proporcione un certificado de firma de IdP válido

El certificado de firma de los metadatos de su proveedor de SAML no debe caducar al configurar el IdP de SAML en su grupo de usuarios.

Los grupos de usuarios admiten varios certificados de firma

Cuando el IdP de SAML incluye más de un certificado de firma en los metadatos de SAML, al iniciar sesión, el grupo de usuarios determina que la afirmación de SAML es válida si coincide con algún certificado de los metadatos de SAML. Cada certificado de firma no debe tener más de 4096 caracteres.

Mantenga el parámetro de estado del relé

Amazon Cognito y el IdP SAML mantienen la información de la sesión con un parámetro relayState.

  1. Amazon Cognito admite valores de relayState superiores a 80 bytes. Aunque en las especificaciones de SAML se establece que el valor de relayState “no debe superar los 80 bytes de tamaño”, la práctica actual del sector se desvía con frecuencia de este comportamiento. Como consecuencia, rechazar valores de relayState de más de 80 bytes interrumpirá muchas integraciones de proveedores SAML estándar.

  2. El relayState token es una referencia opaca a la información estatal mantenida por Amazon Cognito. Amazon Cognito no garantiza el contenido del parámetro relayState. No analice el contenido de forma que la aplicación dependa del resultado. Para obtener más información, consulte la especificación de SAML 2.0.

Identifique el punto final de ACS

El proveedor de identidades SAML requiere que establezca un punto de conexión del consumidor de aserción. El IdP redirige a los usuarios a este punto de conexión con la aserción de SAML. Configure el siguiente punto de conexión en el dominio de su grupo de usuarios para enlace POST de SAML 2.0 en su proveedor de identidades SAML.

https://Your user pool domain/saml2/idpresponse With an Amazon Cognito domain: https://mydomain.us-east-1.amazoncognito.com/saml2/idpresponse With a custom domain: https://auth.example.com/saml2/idpresponse

Para obtener más información sobre los dominios del grupo de usuarios, consulte Configuración de un dominio del grupo de usuarios.

No se han reproducido afirmaciones

No puede repetir ni reproducir una aserción de SAML en el punto de conexión saml2/idpresponse de Amazon Cognito. Una aserción de SAML reproducida tiene un ID de aserción que duplica el ID de una respuesta de IdP anterior.

El ID del grupo de usuarios es el ID de la entidad SP

Debe proporcionar su IdP con su ID de grupo de usuarios en el proveedor de servicios (SP)urn, también denominado URI de audiencia o ID de entidad SP. El URI de destino del grupo de usuarios tiene el siguiente formato.

urn:amazon:cognito:sp:us-east-1_EXAMPLE

Encontrará el ID de su grupo de usuarios en la descripción general del grupo de usuarios de la consola de Amazon Cognito.

Mapee todos los atributos necesarios

Configure el IdP SAML para proporcionar valores para los atributos que establezca como necesarios en el grupo de usuarios. Por ejemplo, email es un atributo obligatorio y común para grupos de usuarios. Antes de que los usuarios puedan iniciar sesión, las aserciones del IdP SAML deben incluir una afirmación que asigne al email del atributo de grupo de usuarios. Para obtener más información acerca de la asignación de atributos, consulte Especificación de asignaciones de atributos del proveedor de identidad para su grupo de usuarios.

El formato de aserción tiene requisitos específicos

Su IdP de SAML debe incluir las siguientes afirmaciones en la afirmación de SAML.

  1. NameIDUna reclamación. Amazon Cognito asocia una afirmación de SAML con el usuario de destino mediante. NameID Si NameID cambia, Amazon Cognito considerará que la afirmación es para un usuario nuevo. El atributo que defina NameID en la configuración de su IdP debe tener un valor persistente.

    <saml2:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:persistent"> carlos </saml2:NameID>
  2. Una reclamación AudienceRestriction con un valor Audience que establece el ID de la entidad SP del grupo de usuarios como el objetivo de la respuesta.

    <saml:AudienceRestriction> <saml:Audience> urn:amazon:cognito:sp:us-east-1_EXAMPLE </saml:AudienceRestriction>
  3. En el caso del inicio de sesión único iniciado por un SP, un Response elemento con el InResponseTo valor del identificador de solicitud de SAML original.

    <saml2p:Response Destination="https://mydomain.us-east-1.amazoncognito.com/saml2/idpresponse" ID="id123" InResponseTo="_dd0a3436-bc64-4679-a0c2-cb4454f04184" IssueInstant="Date-time stamp" Version="2.0" xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    nota

    Las aserciones SAML iniciadas por el IdP no deben contener ningún valor. InResponseTo

  4. Un SubjectConfirmationData elemento con un Recipient valor del saml2/idpresponse punto final del grupo de usuarios y, en el caso del SAML iniciado por SP, un InResponseTo valor que coincida con el ID de solicitud de SAML original.

    <saml2:SubjectConfirmationData InResponseTo="_dd0a3436-bc64-4679-a0c2-cb4454f04184" NotOnOrAfter="Date-time stamp" Recipient="https://mydomain.us-east-1.amazoncognito.com/saml2/idpresponse"/>
Solicitudes de inicio de sesión iniciadas por SP

Cuando el Autorizar punto de conexión redirige a su usuario a la página de inicio de sesión de su IdP, Amazon Cognito incluye una solicitud SAML en un parámetro URL de la solicitud HTTP GET. Una solicitud de SAML contiene información sobre su grupo de usuarios, incluido su punto final ACS. Si lo desea, puede aplicar una firma criptográfica a estas solicitudes.

Firme las solicitudes y cifre las respuestas

Cada grupo de usuarios con un proveedor de SAML genera un key pair asimétrico y un certificado de firma para una firma digital que Amazon Cognito asigna a las solicitudes de SAML. Cada IDP de SAML externo que configure para admitir una respuesta SAML cifrada hace que Amazon Cognito genere un nuevo key pair y un certificado de cifrado para ese proveedor. Para ver y descargar los certificados con la clave pública, elija su IDP en la pestaña Experiencia de inicio de sesión de la consola de Amazon Cognito.

Para establecer la confianza con las solicitudes de SAML de su grupo de usuarios, proporcione a su IdP una copia del certificado de firma SAML 2.0 de su grupo de usuarios. Si no configura el IdP para que acepte solicitudes firmadas por su grupo de usuarios, su IdP podría ignorar las solicitudes de SAML firmadas.

  1. Amazon Cognito aplica una firma digital a las solicitudes de SAML que el usuario pasa a su IdP. Su grupo de usuarios firma todas las solicitudes de cierre de sesión único (SLO) y puede configurar su grupo de usuarios para que firme las solicitudes de inicio de sesión único (SSO) para cualquier IDP externo de SAML. Al proporcionar una copia del certificado, el IdP puede comprobar la integridad de las solicitudes de SAML de los usuarios.

  2. Su IdP de SAML puede cifrar las respuestas de SAML con el certificado de cifrado. Cuando configura un IdP con cifrado SAML, su IdP solo debe enviar respuestas cifradas.

Codifique caracteres no alfanuméricos

Amazon Cognito no acepta caracteres UTF-8 de 4 bytes, como 😐 o, que su IdP pase como valor de atributo. Puede codificar el carácter en Base64 para enviarlo como texto y, después, descodificarlo en la aplicación.

En el siguiente ejemplo, no se aceptará la notificación de atributo:

<saml2:Attribute Name="Name" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified"> <saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">😐</saml2:AttributeValue> </saml2:Attribute>

Al contrario que en el ejemplo anterior, no se aceptará la notificación de atributo siguiente:

<saml2:Attribute Name="Name" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified"> <saml2:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">8J+YkA==</saml2:AttributeValue> </saml2:Attribute>
El punto final de los metadatos debe tener una seguridad de capa de transporte válida

Si aparece InvalidParameterException al crear un IdP SAML con una URL de punto de enlace de metadatos HTTPS (por ejemplo, "Error al recuperar los metadatos del <punto de enlace de metadatos>)", asegúrese de que el punto de enlace de los metadatos tenga SSL correctamente configurado y de que haya un certificado SSL válido asociado. Para obtener más información sobre la validación de certificados, consulte ¿Qué es un certificado SSL/TLS? .

Los clientes de aplicaciones con SAML iniciado por el IdP solo pueden iniciar sesión con SAML

Cuando activas la compatibilidad con un IdP de SAML 2.0 que admite el inicio de sesión iniciado por el IdP en un cliente de aplicaciones, solo puedes añadir otro SAML IdPs 2.0 a ese cliente de aplicación. No puedes añadir el directorio de usuarios del grupo de usuarios ni todos los proveedores de identidad externos que no sean de SAML a un cliente de aplicaciones configurado de esta manera.

Las respuestas de cierre de sesión deben utilizar el enlace POST

El /saml2/logout punto final acepta LogoutResponse como HTTP POST solicitudes. Los grupos de usuarios no aceptan respuestas de cierre de sesión con HTTP GET carácter vinculante.