

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.

# Uso de proveedores de identidades SAML con un grupo de usuarios
<a name="cognito-user-pools-saml-idp"></a>

Puede elegir que los usuarios web y de aplicaciones móviles inicien sesión a través de un proveedor de identidades (IdP) SAML como [Microsoft Active Directory Federation Services (ADFS)](https://msdn.microsoft.com/en-us/library/bb897402.aspx) o [Shibboleth](http://www.shibboleth.net/). Debe elegir un IdP SAML compatible con el [estándar SAML 2.0](http://saml.xml.org/saml-specifications).

Con el inicio de sesión gestionado, Amazon Cognito autentica a los usuarios de IdP locales y de terceros y emite tokens web JSON (). JWTs Con los tokens que emite Amazon Cognito, puede consolidar varios orígenes de identidad en un estándar universal de OpenID Connect (OIDC) en todas sus aplicaciones. Amazon Cognito puede procesar las aserciones de SAML de los proveedores externos y convertirlas en ese estándar de SSO. Puede crear y administrar un IDP de SAML en Consola de administración de AWS, a través de o con AWS CLI la API de grupos de usuarios de Amazon Cognito. Para crear su primer IdP de SAML en Consola de administración de AWS, consulte. [Adición y administración de proveedores de identidad de SAML a un grupo de usuarios](cognito-user-pools-managing-saml-idp.md)

![\[Información general sobre la autenticación con inicio de sesión de SAML\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/scenario-authentication-saml.png)


**nota**  
La federación con inicio de sesión a través de un IdP de terceros es una característica de los grupos de usuarios de Amazon Cognito. Los grupos de identidades de Amazon Cognito, también denominados identidades federadas de Amazon Cognito, son una implementación de la federación que debe configurar por separado en cada grupo de identidades. Un grupo de usuarios puede ser un IdP de terceros para un grupo de identidades. Para obtener más información, consulte [Grupos de identidades de Amazon Cognito](cognito-identity.md).

## Referencia rápida para la configuración del IdP
<a name="cognito-user-pools-saml-idp-reference"></a>

Debe configurar el IdP SAML para que acepte solicitudes y envíe respuestas a su grupo de usuarios. La documentación de su IdP SAML contiene información acerca de cómo añadir su grupo de usuarios como aplicación o relación de confianza para el IdP SAML 2.0. En la documentación siguiente se indican los valores que debe proporcionar para el ID de entidad del SP y la URL de servicio de consumidor de aserción (ACS).Referencia rápida de los valores de SAML del grupo de usuarios

**ID de entidad del SP**  

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

**URL del ACS**  

```
https://Your user pool domain/saml2/idpresponse
```

Debe configurar el grupo de usuarios para que sea compatible con el proveedor de identidades. A continuación, indicamos los pasos generales para agregar un IdP SAML externo.

1. Descargue los metadatos de SAML de su IdP o recupere la URL del punto de conexión de metadatos. Consulte [Configuración de un proveedor de identidades de SAML externo](cognito-user-pools-integrating-3rd-party-saml-providers.md).

1. Añada el IdP nuevo al grupo de usuarios. Cargue los metadatos de SAML o proporcione la URL de los metadatos. Consulte [Adición y administración de proveedores de identidad de SAML a un grupo de usuarios](cognito-user-pools-managing-saml-idp.md).

1. Asigne el IdP a los clientes de aplicación. Consulte [Ajustes específicos de una aplicación en los clientes de aplicación](user-pool-settings-client-apps.md).

**Topics**
+ [Referencia rápida para la configuración del IdP](#cognito-user-pools-saml-idp-reference)
+ [Información que debe saber sobre SAML IdPs en los grupos de usuarios de Amazon Cognito](cognito-user-pools-saml-idp-things-to-know.md)
+ [Distinción entre mayúsculas y minúsculas en los nombres de usuario SAML](#saml-nameid-case-sensitivity)
+ [Configuración de un proveedor de identidades de SAML externo](cognito-user-pools-integrating-3rd-party-saml-providers.md)
+ [Adición y administración de proveedores de identidad de SAML a un grupo de usuarios](cognito-user-pools-managing-saml-idp.md)
+ [Inicio de sesión SAML en grupos de usuarios de Amazon Cognito](cognito-user-pools-SAML-session-initiation.md)
+ [Cierre de sesión de usuarios de SAML con un cierre de sesión único](cognito-user-pools-saml-idp-sign-out.md)
+ [Firma y cifrado de SAML](cognito-user-pools-SAML-signing-encryption.md)
+ [Nombres e identificadores de proveedor de identidades SAML](cognito-user-pools-managing-saml-idp-naming.md)

# Información que debe saber sobre SAML IdPs en los grupos de usuarios de Amazon Cognito
<a name="cognito-user-pools-saml-idp-things-to-know"></a>

La implementación de un IdP SAML 2.0 está sujeta a algunos requisitos y restricciones. Consulte esta sección cuando implemente el IdP. También encontrará información útil para solucionar errores durante la federación de SAML con un grupo de usuarios.

**Amazon Cognito procesa las aserciones SAML en su lugar**  
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) que inicia el SP o inicia el IdP, tal y como se describe en las secciones 5.1.2 y 5.1.4 de [Información general sobre cuestiones técnicas de SAML V2.0](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0-cd-02.html).

**Facilitación de un certificado de firma de IdP válido**  
El certificado de firma de los metadatos del proveedor SAML no debe estar caducado cuando configure el IdP 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 de longitud.

**Conservación del 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.

1. El token `relayState` es una referencia opaca a la información de estado que Amazon Cognito mantiene. 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](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html).

**Identificación del punto de conexión 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.auth.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](cognito-user-pools-assign-domain.md).

**Imposibilidad de repetir aserciones reproducidas**  
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 entidad del SP**  
Debe proporcionar el IdP con el ID del grupo de usuarios en el `urn` del proveedor de servicios (SP), también denominado *URI de audiencia* o *ID de entidad del SP*. El URI de destino del grupo de usuarios tiene el siguiente formato.  

```
urn:amazon:cognito:sp:us-east-1_EXAMPLE
```
Puede encontrar el ID del grupo de usuarios en la opción **Información general sobre el grupo de usuarios** de la [consola de Amazon Cognito](https://console.aws.amazon.com/cognito/home).

**Asignación de todos los atributos obligatorios**  
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 [Asignación de atributos de IdP a perfiles y tokens](cognito-user-pools-specifying-attribute-mapping.md).

**El formato de aserción tiene requisitos específicos**  
El IdP SAML debe incluir las siguientes notificaciones en la aserción SAML.  
+ Una notificación `NameID`. Amazon Cognito asocia una aserción SAML al usuario de destino mediante `NameID`. Si `NameID` cambia, Amazon Cognito considerará que la afirmación es para un usuario nuevo. El atributo que defina en `NameID` en la configuración del IdP debe tener un valor persistente. Para asignar usuarios de SAML a un perfil de usuario coherente en el grupo de usuarios, asigne a la notificación `NameID` de un atributo un valor que no cambie.

  ```
  <saml2:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:persistent">
    carlos
  </saml2:NameID>
  ```

  Un valor `Format` en la notificación `NameID` del IdP de `urn:oasis:names:tc:SAML:1.1:nameid-format:persistent` indica que el IdP está transfiriendo un valor inmutable. Amazon Cognito no necesita esta declaración de formato y asigna el formato `urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified` si el IdP no especifica un formato para la notificación `NameID`. Este comportamiento cumple con la sección 2.2.2 *Nombre de tipo complejo IDType*, de [la especificación SAML 2.0](https://groups.oasis-open.org/higherlogic/ws/public/download/35711/sstc-saml-core-errata-2.0-wd-06-diff.pdf/latest).
+ Una notificación `AudienceRestriction` con un valor `Audience` que establezca el ID de entidad del SP del grupo de usuarios como objetivo de la respuesta.

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

  ```
  <saml2p:Response Destination="https://mydomain.auth.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 un valor `InResponseTo`.
+ Un elemento `SubjectConfirmationData` con un valor `Recipient` del punto de conexión `saml2/idpresponse` del grupo de usuarios y, para el SAML iniciado por el SP, un valor `InResponseTo` 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.auth.us-east-1.amazoncognito.com/saml2/idpresponse"/>
  ```

**Solicitudes de inicio de sesión iniciadas por el SP**  
Cuando el [Autorizar punto de conexión](authorization-endpoint.md) 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 el punto de conexión del ACS. Si lo desea, puede aplicar una firma criptográfica a estas solicitudes.

**Firma de solicitudes y cifrado de las respuestas**  
Cada grupo de usuarios con un proveedor SAML genera un par de claves asimétricas y un *certificado de firma* para una firma digital que Amazon Cognito asigna a las solicitudes de SAML. Cada IdP SAML externo que configure para admitir una respuesta de SAML cifrada hace que Amazon Cognito genere un nuevo par de claves y un *certificado de cifrado* para dicho proveedor. Para ver y descargar los certificados con la clave pública, seleccione su IdP en el menú **Proveedores sociales y externos** de la consola de Amazon Cognito.  
Para establecer confianza con las solicitudes de SAML de su grupo de usuarios, proporcione al IdP una copia del certificado de firma de SAML 2.0 del grupo de usuarios. El IdP podría no tener en cuenta las solicitudes de SAML firmadas por su grupo de usuarios si no configura el IdP para que acepte las solicitudes 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) de cualquier IdP externo de SAML. Cuando proporciona una copia del certificado, el IdP puede comprobar la integridad de las solicitudes de SAML de los usuarios. 

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

**Codificación de caracteres no alfanuméricos**  
Amazon Cognito no acepta caracteres UTF-8 de cuatro bytes (como 😐 o 𠮷) que el 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 de conexión de los metadatos debe tener una seguridad de capa de transporte válida**  
Si `InvalidParameterException` al crear un IDP de SAML con una URL de punto de enlace de metadatos HTTPS, por ejemplo, ve «Error al recuperar los metadatos *<metadata endpoint>* de», asegúrese de que el punto de enlace de metadatos tenga SSL correctamente configurado y de que haya un certificado SSL válido asociado a él. Para obtener más información sobre la validación de certificados, consulta [¿Qué es](https://aws.amazon.com/what-is/ssl-certificate/) un certificado? SSL/TLS .

**El punto de conexión de metadatos debe estar en un puerto TCP estándar para HTTP o HTTPS**  
Amazon Cognito solo acepta metadatos URLs para proveedores de SAML en los puertos TCP estándar 80 para HTTP y 443 para HTTPS. Como práctica recomendada de seguridad, aloje los metadatos de SAML en una URL cifrada con TLS con el prefijo `https://`. Introduzca los metadatos URLs en el formato *`http://www.example.com/saml2/metadata.xml`* o. *`https://www.example.com/saml2/metadata.xml`* La consola de Amazon Cognito URLs solo acepta metadatos con el `https://` prefijo. También puede configurar los metadatos del IdP con [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)y. [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html)

**Los clientes de aplicación 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 podrá añadir el directorio de usuarios en el grupo de usuarios *ni tampoco* todos los proveedores de identidades externos que no sean de SAML a un cliente de aplicación configurado de esta manera.

**Las respuestas de cierre de sesión deben utilizar enlace POST**  
El punto de conexión `/saml2/logout` acepta `LogoutResponse` como solicitudes de `HTTP POST`. Los grupos de usuarios no aceptan respuestas de cierre de sesión con enlace `HTTP GET`.

**Rotación de certificados de firma de metadatos**  
Amazon Cognito almacena en caché los metadatos de SAML durante un máximo de seis horas cuando proporciona los metadatos con una URL. Al realizar cualquier rotación de certificados de firma de metadatos, configure su fuente de metadatos para publicar *tanto* el certificado original como el nuevo durante al menos seis horas. Cuando Amazon Cognito actualiza la caché desde la URL de los metadatos, considera que cada certificado es válido, y su IdP de SAML puede empezar a firmar las aserciones de SAML con el nuevo certificado. Una vez transcurrido este período, puede eliminar el certificado original de los metadatos publicados.

## Distinción entre mayúsculas y minúsculas en los nombres de usuario SAML
<a name="saml-nameid-case-sensitivity"></a>

Cuando un usuario federado intenta iniciar sesión, el proveedor de identidades (IdP) SAML pasa un `NameId` único a Amazon Cognito en la aserción SAML del usuario. Amazon Cognito identifica a un usuario federado de SAML por su reclamación `NameId`. Independientemente de la configuración de distinción entre mayúsculas y minúsculas del grupo de usuarios, Amazon Cognito reconoce un usuario federado que regresa de un IdP SAML cuando pasa su notificación `NameId` única que distingue entre mayúsculas y minúsculas. Si se asigna un atributo como `email` a `NameId`, y el usuario cambia la dirección de correo electrónico, no podrá iniciar sesión en la aplicación.

Asigne `NameId` en las aserciones SAML de un atributo IdP con valores que no cambian.

Por ejemplo, Carlos tiene un perfil de usuario en el grupo de usuarios que distingue mayúsculas de minúsculas de una aserción SAML de Active Directory Federation Services (ADFS) que ha pasado un valor `NameId` de `Carlos@example.com`. La siguiente vez que Carlos intente iniciar sesión, su IdP de ADFS pasa un valor `NameId` de `carlos@example.com`. Dado que `NameId` debe coincidir exactamente en mayúsculas y minúsculas, el inicio de sesión no se produce con éxito.

Si los usuarios no pueden iniciar sesión después de que cambie su `NameID`, elimine sus perfiles de usuario del grupo de usuarios. Amazon Cognito creará nuevos perfiles de usuario la siguiente vez que se inicie sesión.

**Topics**
+ [Referencia rápida para la configuración del IdP](#cognito-user-pools-saml-idp-reference)
+ [Información que debe saber sobre SAML IdPs en los grupos de usuarios de Amazon Cognito](cognito-user-pools-saml-idp-things-to-know.md)
+ [Distinción entre mayúsculas y minúsculas en los nombres de usuario SAML](#saml-nameid-case-sensitivity)
+ [Configuración de un proveedor de identidades de SAML externo](cognito-user-pools-integrating-3rd-party-saml-providers.md)
+ [Adición y administración de proveedores de identidad de SAML a un grupo de usuarios](cognito-user-pools-managing-saml-idp.md)
+ [Inicio de sesión SAML en grupos de usuarios de Amazon Cognito](cognito-user-pools-SAML-session-initiation.md)
+ [Cierre de sesión de usuarios de SAML con un cierre de sesión único](cognito-user-pools-saml-idp-sign-out.md)
+ [Firma y cifrado de SAML](cognito-user-pools-SAML-signing-encryption.md)
+ [Nombres e identificadores de proveedor de identidades SAML](cognito-user-pools-managing-saml-idp-naming.md)

# Configuración de un proveedor de identidades de SAML externo
<a name="cognito-user-pools-integrating-3rd-party-saml-providers"></a>

Si desea agregar un proveedor de identidades (IdP) de SAML a su grupo de usuarios, debe introducir algunas actualizaciones de configuración en la interfaz de administración de su IdP. En esta sección se describe cómo dar formato a los valores que debe proporcionar a su IdP. También puede obtener información sobre cómo recuperar el documento de metadatos de URL estática o activa que identifica el IdP y las notificaciones de SAML en el grupo de usuarios.

Para configurar las soluciones del proveedor de identidades (IdP) SAML 2.0 de terceros para que funcionen con la federación de grupos de usuarios de Amazon Cognito, debe configurar el IdP SAML para que realice una redirección a la siguiente URL del servicio de consumidor de aserción (ACS): `https://mydomain.auth.us-east-1.amazoncognito.com/saml2/idpresponse`. Si su grupo de usuarios tiene un dominio de Amazon Cognito, puede encontrar la ruta del dominio del grupo de usuarios en el menú **Dominio** de su grupo de usuarios en la [consola de Amazon Cognito](https://console.aws.amazon.com/cognito/home).

Algunos tipos de SAML IdPs requieren que introduzcas en el `urn` formulario el identificador URI de audiencia o identificador de entidad SP. `urn:amazon:cognito:sp:us-east-1_EXAMPLE` Puede encontrar el ID del grupo de usuarios en la opción **Información general sobre el grupo de usuarios** de la consola de Amazon Cognito.

Asimismo, debe configurar el IdP SAML para que proporcione los valores de todos los atributos designados como *atributos obligatorios* en el grupo de usuarios. Normalmente, `email` es un atributo obligatorio para los grupos de usuarios, y en tal caso, el IdP SAML deberá proporcionar algún tipo de notificación `email` en su aserción SAML y será preciso asignar la notificación del atributo de dicho proveedor.

La siguiente información de configuración para soluciones de IdP SAML 2.0 de terceros es un buen punto de partida para configurar la federación con los grupos de usuarios de Amazon Cognito. Para obtener la información más actualizada, consulte directamente la documentación de su proveedor.

Para firmar las solicitudes de SAML, debe configurar el IdP para que confíe en las solicitudes firmadas por el certificado de firma del grupo de usuarios. Para aceptar respuestas de SAML cifradas, debe configurar el IdP para que cifre *todas* las respuestas de SAML del grupo de usuarios. Su proveedor dispondrá de documentación sobre la configuración de estas características. Para ver un ejemplo de Microsoft, consulte [Configuración del cifrado de tokens SAML de Microsoft Entra](https://learn.microsoft.com/en-us/entra/identity/enterprise-apps/howto-saml-token-encryption).

**nota**  
Amazon Cognito solo necesita el documento de metadatos del proveedor de identidades. Es posible que su proveedor también ofrezca información de configuración personalizada para la federación de SAML 2.0 con IAM o AWS IAM Identity Center. Para obtener información sobre cómo configurar la integración de Amazon Cognito, consulte las instrucciones generales para recuperar el documento de metadatos y administrar el resto de la configuración de su grupo de usuarios.


| Solución | Más información | 
| --- | --- | 
| ID de Microsoft Entra | [Metadatos de federación](https://learn.microsoft.com/en-us/entra/identity-platform/federation-metadata) | 
| Okta | [How to Download the IdP Metadata and SAML Signing Certificates for a SAML App Integration](https://support.okta.com/help/s/article/Location-to-download-Okta-IDP-XML-metadata-for-a-SAML-app-in-the-new-Admin-User-Interface) | 
| Auth0 | [Configure Auth0 as SAML Identity Provider](https://auth0.com/docs/authenticate/protocols/saml/saml-sso-integrations/configure-auth0-saml-identity-provider) | 
| Identidad de ping () PingFederate | [Exportación de metadatos de SAML desde PingFederate](https://docs.pingidentity.com/integrations/contentful/configuring_single_sign-on/pf_contentful_integration_exporting_saml_metadata_from_pf.html) | 
| JumpCloud | [SAML Configuration Notes](https://jumpcloud.com/support/saml-configuration-notes) | 
| SecureAuth | [SAML application integration](https://docs.secureauth.com/2104/en/saml-application-integration.html) | 

# Adición y administración de proveedores de identidad de SAML a un grupo de usuarios
<a name="cognito-user-pools-managing-saml-idp"></a>

Tras configurar el proveedor de identidades para que funcione con Amazon Cognito, podrá añadirlo a los grupos de usuarios y los clientes de aplicación. En los siguientes procedimientos se muestra cómo crear, modificar y eliminar proveedores de SAML en un grupo de usuarios de Amazon Cognito.

------
#### [ Consola de administración de AWS ]

Puede usar el Consola de administración de AWS para crear y eliminar proveedores de identidad de SAML (). IdPs

Para poder crear un IdP SAML, necesitará el documento de metadatos de SAML facilitado por el IdP externo. Para obtener instrucciones sobre cómo obtener o generar el documento de metadatos de SAML necesario, consulte [Configuración de un proveedor de identidades de SAML externo](cognito-user-pools-integrating-3rd-party-saml-providers.md).

**Para configurar un IdP SAML 2.0 en su grupo de usuarios**

1. Vaya a la [consola de Amazon Cognito](https://console.aws.amazon.com/cognito/home). Si se le solicita, escriba sus credenciales de AWS .

1. Elija **User Pools** (Grupos de usuarios).

1. Elija un grupo de usuarios existente en la lista o [cree un grupo de usuarios](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html).

1. Seleccione el menú **Proveedores sociales y externos** y, a continuación, seleccione **Agregar un proveedor de identidades**.

1. Elija un IdP **SAML**.

1. Introduzca un **Nombre del proveedor**. Puede pasar este nombre descriptivo en un parámetro de solicitud `identity_provider` al [Autorizar punto de conexión](authorization-endpoint.md).

1. Introduzca **Identificadores** separados por comas. Un identificador indica a Amazon Cognito que debe comprobar la dirección de correo electrónico que introduce un usuario al iniciar sesión y, a continuación, dirigirlo al proveedor que corresponda a su dominio.

1. Elija **Add sign-out flow** (Añadir flujo de cierre de sesión) si desea que Amazon Cognito envíe solicitudes de cierre de sesión firmadas a su proveedor cuando un usuario cierra la sesión. Debe configurar el IdP SAML 2.0 para enviar respuestas de cierre de sesión al punto de conexión de `https://mydomain.auth.us-east-1.amazoncognito.com/saml2/logout` que se crea al configurar el inicio de sesión administrado. El punto de conexión `saml2/logout` utiliza el enlace POST.
**nota**  
Si se selecciona esta opción y el IdP SAML espera una solicitud de cierre de sesión firmada, también debe proporcionar al IdP SAML el certificado de firma del grupo de usuarios.  
El proveedor de identidades (IdP) SAML procesará la solicitud de cierre de sesión firmada y cerrará la sesión de Amazon Cognito del usuario.

1. Elija su configuración del tipo **Inicio de sesión SAML iniciado por el IdP**. Como práctica recomendada de seguridad, elija **Aceptar solo aserciones SAML iniciadas por el SP**. Si ha preparado el entorno para aceptar de forma segura las sesiones de inicio de sesión de SAML no solicitadas, elija **Aceptar solo aserciones SAML iniciadas por el SP e iniciadas por el IdP**. Para obtener más información, consulte [Inicio de sesión SAML en grupos de usuarios de Amazon Cognito](cognito-user-pools-SAML-session-initiation.md).

1. Seleccione un **Origen de documentos de metadatos**. Si su IdP ofrece metadatos SAML en una URL pública, puede elegir **Metadata document URL (URL del documento de metadatos)** e introducir esa URL pública. En caso contrario, elija **Upload metadata document** (Cargar documento de metadatos) y seleccione un archivo de metadatos que haya descargado anteriormente de su proveedor.
**nota**  
Le recomendamos que introduzca la URL de un documento de metadatos si su proveedor dispone de un punto de conexión público en lugar de cargar un archivo. Amazon Cognito actualiza automáticamente los metadatos desde la URL de metadatos. Normalmente, los metadatos se actualizan cada seis horas o antes de que caduquen, lo que ocurra primero.

1. **Asigne atributos entre el proveedor SAML y el grupo de usuarios** para asignar atributos de proveedor SAML al perfil de usuario de grupo de usuarios. Incluya los atributos requeridos del grupo de usuarios en la asignación de atributos. 

   Por ejemplo, cuando elige **User pool attribute (Atributo grupo de usuarios)** `email`, escriba el nombre de atributo SAML tal como aparece en la aserción SAML del IdP. Si su IdP SAML ofrece aserciones SAML de ejemplo, estas podrían servirle para encontrar el nombre. Algunos IdPs usan nombres simples, como`email`, mientras que otros usan nombres como los siguientes.

   ```
   http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
   ```

1. Seleccione **Crear**.

------
#### [ API/CLI ]

Utilice los siguientes comandos para crear y administrar un proveedor de identidades (IdP) SAML.

**Para crear un IdP y cargar un documento de metadatos**
+ AWS CLI: `aws cognito-idp create-identity-provider`

  Ejemplo con archivo de metadatos: `aws cognito-idp create-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1 --provider-type SAML --provider-details file:///details.json --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`

  Donde `details.json` contiene:

  ```
  "ProviderDetails": { 
        "MetadataFile": "<SAML metadata XML>",
        "IDPSignout" : "true",
        "RequestSigningAlgorithm" : "rsa-sha256",
        "EncryptedResponses" : "true",
        "IDPInit" : "true"
  }
  ```
**nota**  
Si *<SAML metadata XML>* contiene alguna instancia del personaje`"`, debes agregar `\` como personaje de escape:`\"`.

  Ejemplo con URL de metadatos: `aws cognito-idp create-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1 --provider-type SAML --provider-details MetadataURL=https://myidp.example.com/sso/saml/metadata --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`
+ AWS API: [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)

**Para cargar un nuevo documento de metadatos para un proveedor de identidades (IdP)**
+ AWS CLI: `aws cognito-idp update-identity-provider`

  Ejemplo con archivo de metadatos: `aws cognito-idp update-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1 --provider-details file:///details.json --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`

  Donde `details.json` contiene:

  ```
  "ProviderDetails": { 
        "MetadataFile": "<SAML metadata XML>",
        "IDPSignout" : "true",
        "RequestSigningAlgorithm" : "rsa-sha256",
        "EncryptedResponses" : "true",
        "IDPInit" : "true"
  }
  ```
**nota**  
Si *<SAML metadata XML>* contiene alguna instancia del personaje`"`, debes agregar `\` como personaje de escape:`\"`.

  Ejemplo con URL de metadatos: `aws cognito-idp update-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1 --provider-details MetadataURL=https://myidp.example.com/sso/saml/metadata --attribute-mapping email=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress`
+ AWS API: [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html)

**Para obtener información acerca de un IdP específico**
+ AWS CLI: `aws cognito-idp describe-identity-provider`

  `aws cognito-idp describe-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1`
+ AWS API: [DescribeIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeIdentityProvider.html)

**Para enumerar información sobre todos IdPs**
+ AWS CLI: `aws cognito-idp list-identity-providers`

  Ejemplo: `aws cognito-idp list-identity-providers --user-pool-id us-east-1_EXAMPLE --max-results 3`
+ AWS API: [ListIdentityProviders](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListIdentityProviders.html)

**Para eliminar un proveedor de identidad**
+ AWS CLI: `aws cognito-idp delete-identity-provider`

  `aws cognito-idp delete-identity-provider --user-pool-id us-east-1_EXAMPLE --provider-name=SAML_provider_1`
+ AWS API: [DeleteIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteIdentityProvider.html)

------

**Para configurar el proveedor de identidad SAML para añadir un grupo de usuarios como una relación de confianza**
+ El URN del proveedor del servicio de grupos de usuarios es: `urn:amazon:cognito:sp:us-east-1_EXAMPLE`. Amazon Cognito requiere un valor de restricción de audiencia que coincida con este URN en la respuesta de SAML. Configure su IdP para que utilice el siguiente punto final de enlace POST para el mensaje de IdP-to-SP respuesta.

  ```
  https://mydomain.auth.us-east-1.amazoncognito.com/saml2/idpresponse
  ```
+ El IdP SAML debe rellenar `NameID` y todos los atributos obligatorios para el grupo de usuarios en la aserción SAML. `NameID` se utiliza para identificar al usuario federado de SAML de forma inequívoca en el grupo de usuarios. El IdP debe pasar el ID de nombre SAML de cada usuario en un formato coherente y que distinga mayúsculas de minúsculas. Cualquier variación en el valor del ID de nombre de un usuario crea un nuevo perfil de usuario.

**Para proporcionar un certificado de firma al IdP de SAML 2.0**
+ Para descargar una copia de la clave pública de Amazon Cognito que el IdP pueda utilizar para validar las solicitudes de cierre de sesión de SAML, elija el menú **Proveedores sociales y externos** del grupo de usuarios, seleccione el IdP y, en **Ver certificado de firma**, seleccione **Descargar como .crt**.

Puede eliminar cualquier proveedor SAML que haya configurado en su grupo de usuarios con la consola de Amazon Cognito.

**Cómo eliminar un proveedor SAML**

1. Inicie sesión en la [consola de Amazon Cognito](https://console.aws.amazon.com/cognito/home).

1. En el panel de navegación, elija **User Pools (Grupos de usuarios)**, y elija el grupo de usuarios que desea editar.

1. Seleccione el menú **Proveedores sociales y externos**.

1. Selecciona el botón de radio situado junto al SAML IdPs que deseas eliminar.

1. Cuando se le pida **Delete identity provider (Eliminar proveedor de identidad)**, ingrese el nombre del proveedor SAML para confirmar su eliminación y, a continuación, elija **Delete (Eliminar)**.

# Inicio de sesión SAML en grupos de usuarios de Amazon Cognito
<a name="cognito-user-pools-SAML-session-initiation"></a>

Amazon Cognito admite el inicio de sesión único (SSO) iniciado por el proveedor de servicios (SP) y SSO iniciado por el IdP. Como práctica de seguridad recomendada, implemente el SSO iniciado por el SP en el grupo de usuarios. En la sección 5.1.2 de [SAML V2.0 Technical Overview](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0-cd-02.html#5.1.2.SP-Initiated%20SSO:%20%20Redirect/POST%20Bindings|outline) (Información técnica general de SAML V2.0), se explica el inicio de sesión único iniciado por el proveedor de servicios. 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 flujo iniciado por el SP, siempre deben realizar primero una solicitud a Amazon Cognito y redirigirse 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 SAML en el grupo de usuarios para que admita el SSO iniciado por el IdP. Cuando se admite la autenticación iniciada por el IdP, Amazon Cognito no puede verificar que haya solicitado la respuesta de SAML que recibe porque este servicio no inicia la autenticación con una solicitud de SAML. En el SSO iniciado por el SP, Amazon Cognito establece parámetros de estado que validan una respuesta de SAML con respecto a la solicitud original. Con el inicio de sesión iniciado por el SP, también puede protegerse contra la falsificación de solicitudes entre sitios (CSRF).

**Topics**
+ [Implementación del inicio de sesión de SAML iniciado por el SP](#cognito-user-pools-saml-idp-authentication)
+ [Implementación del inicio de sesión de SAML iniciado por el IdP](#cognito-user-pools-SAML-session-initiation-idp-initiation)

## Implementación del inicio de sesión de SAML iniciado por el SP
<a name="cognito-user-pools-saml-idp-authentication"></a>

Como práctica recomendada, implemente el inicio de sesión service-provider-initiated (iniciado por SP) 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 el inicio de sesión iniciado por el IdP en determinadas condiciones.

En el siguiente proceso se muestra cómo los usuarios completan el inicio de sesión iniciado por el SP en su grupo de usuarios a través de un proveedor SAML.

![\[Diagrama de flujo de autenticación del inicio de sesión SAML iniciado por el SP de Amazon Cognito.\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/scenario-authentication-saml-stepbystep.png)


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**.

1. 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.

1. Amazon Cognito redirige al usuario al IdP con una solicitud de SAML, [firmada opcionalmente](cognito-user-pools-SAML-signing-encryption.md#cognito-user-pools-SAML-signing.title), en un elemento `AuthnRequest`.

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

1. 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](cognito-user-pools-SAML-signing-encryption.md#cognito-user-pools-SAML-signing-encryption.title) 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`.

1. Tras verificar la aserción SAML y [asignar los atributos del usuario](cognito-user-pools-specifying-attribute-mapping.md#cognito-user-pools-specifying-attribute-mapping.title) 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.

1. El usuario presenta su código de autorización en la aplicación, que lo intercambia por tokens web JSON ()JWTs.

1. 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 ID es un objeto de autenticación para la administración de identidades basada en OIDC. El token de acceso es un objeto de autorización con un alcance [OAuth 2.0](https://oauth.net/2/). 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.

## Implementación del inicio de sesión de SAML iniciado por el IdP
<a name="cognito-user-pools-SAML-session-initiation-idp-initiation"></a>

Cuando configura su proveedor de identidades para un inicio de sesión de SAML 2.0 iniciado por el IdP, puede presentar las aserciones SAML en el punto de conexión `saml2/idpresponse` del dominio del grupo de usuarios sin necesidad de iniciar la sesión en el [Autorizar punto de conexión](authorization-endpoint.md). Un grupo de usuarios con esta configuración acepta aserciones SAML iniciadas por el IdP de un proveedor de identidad externo del grupo de usuarios que admite el cliente de la aplicación solicitada.

![\[Diagrama de flujo de autenticación del inicio de sesión SAML iniciado por el IdP de Amazon Cognito\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/scenario-authentication-saml-idpinit.png)


1. Un usuario solicita el inicio de sesión mediante SAML en su aplicación.

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

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

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

1. 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.

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

1. El usuario presenta su código de autorización en la aplicación, que lo intercambia por tokens web JSON (JWTs).

1. 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.

En los siguientes pasos se describe el proceso general para configurar e iniciar sesión con un proveedor SAML 2.0 iniciado por un IdP.

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

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

1. Configure el IdP para que admita el inicio del IdP. El SAML iniciado por el IdP 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 SAML IdPs, incluido el propio grupo de usuarios, a ningún cliente de aplicaciones que utilice un proveedor de SAML con un inicio de sesión iniciado por el IdP.

1. Asocie el proveedor SAML iniciado por el IdP a un cliente de aplicación del grupo de usuarios.

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

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

1. Recibe tokens web JSON (). JWTs

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. Es probable que se produzcan intentos de suplantación de solicitudes y CSRF cuando acepte solicitudes iniciadas por un IdP. Aunque el grupo de usuarios no pueda verificar una sesión de inicio de sesión iniciada por un IdP, Amazon Cognito valida los parámetros de solicitud y las aserciones 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 solicitudes con SAML iniciado por el IdP a su `/saml2/idpresponse`. En el caso de las solicitudes de autorización del inicio de sesión administrado e iniciadas por el SP, debe proporcionar parámetros que identifiquen el cliente de aplicación solicitado, los ámbitos, el URI de redireccionamiento y otros detalles como parámetros de cadena de consulta en las solicitudes `HTTP GET`. Sin embargo, en el caso de las aserciones SAML iniciadas por el IdP, los detalles de la solicitud deben formatearse como un parámetro `RelayState` 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`.

A continuación, se muestra un ejemplo de solicitud y respuesta para un proveedor SAML iniciado por un IdP.

```
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 ]

**Configuración de un IdP para el SAML iniciado por IdP**

1. Cree un [grupo de usuarios](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html), un [cliente de aplicación](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-configuring-app-integration.html) y un proveedor de identidades de SAML.

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

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

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

1. En **Inicio de sesión SAML iniciado por el IdP**, seleccione **Aceptar aserciones SAML iniciadas por el SP e iniciadas por el IdP**.

1. Seleccione **Save changes (Guardar cambios)**.

------
#### [ API/CLI ]

**Para configurar un IdP para el SAML iniciado por IdP**

Configure el SAML iniciado por el IdP con el `IDPInit` parámetro de una solicitud de API [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html). [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html) A continuación se muestra un ejemplo de `ProviderDetails` de un IdP que admite el SAML iniciado por el IdP.

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

------

# Cierre de sesión de usuarios de SAML con un cierre de sesión único
<a name="cognito-user-pools-saml-idp-sign-out"></a>

Amazon Cognito admite el cierre de [sesión único](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0-cd-02.html#5.3.Single%20Logout%20Profile|outline) (SLO) de SAML 2.0. Con el SLO, su aplicación puede cerrar la sesión de los usuarios de sus proveedores de identidad de SAML (IdPs) cuando cierren sesión en su grupo de usuarios. De esta forma, cuando los usuarios quieran volver a iniciar sesión en su aplicación, deberán autenticarse con su IdP SAML. De lo contrario, es posible que tengan cookies del IdP o del navegador de grupo de usuarios que los lleven a su aplicación sin que tengan que proporcionar las credenciales.

Cuando configure el IdP SAML para que admita el **flujo de cierre de sesión**, Amazon Cognito redirigirá al usuario con una solicitud de cierre de sesión de SAML firmada a su IdP. Amazon Cognito determina la ubicación de redireccionamiento a partir de la URL de `SingleLogoutService` de los metadatos del IdP. Amazon Cognito firma la solicitud de cierre de sesión con el certificado de firma del grupo de usuarios.

![\[Diagrama de flujo de autenticación del cierre de sesión de SAML de Amazon Cognito El usuario solicita el cierre de sesión y Amazon Cognito lo redirige a su proveedor con una solicitud de cierre de sesión de SAML.\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/scenario-authentication-saml-sign-out.png)


Cuando dirige a un usuario con una sesión de SAML al punto de conexión `/logout` del grupo de usuarios, Amazon Cognito redirige a su usuario de SAML con la siguiente solicitud al punto de conexión de SLO especificado en los metadatos del IdP.

```
https://[SingleLogoutService endpoint]?
SAMLRequest=[encoded SAML request]&
RelayState=[RelayState]&
SigAlg=http://www.w3.org/2001/04/xmldsig-more#rsa-sha256&
Signature=[User pool RSA signature]
```

A continuación, el usuario regresa a su punto de conexión `saml2/logout` con un contenido `LogoutResponse` de su IdP. El IdP debe enviar el contenido `LogoutResponse` en una solicitud `HTTP POST`. A continuación, Amazon Cognito redirige al usuario al destino de redireccionamiento desde la solicitud de cierre de sesión inicial.

Es posible que su proveedor SAML envíe `LogoutResponse` con más de una `AuthnStatement`. El `sessionIndex` en la primera `AuthnStatement` de una respuesta de este tipo debe coincidir con el `sessionIndex` de la respuesta de SAML que ha autentificado originalmente al usuario. Si el `sessionIndex` está en alguna otra `AuthnStatement`, Amazon Cognito no reconocerá la sesión y no se cerrará la sesión del usuario.

------
#### [ Consola de administración de AWS ]

**Configuración de cierre de sesión de SAML**

1. Cree un [grupo de usuarios](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html), un [cliente de aplicación](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-configuring-app-integration.html) y un IdP SAML.

1. Al crear o editar su proveedor de identidades SAML, en **Información del proveedor de identidad**, marque la casilla con el título **Agregue un flujo de cierre de sesión**.

1. En el menú **Proveedores sociales y externos** de su grupo de usuarios, elija su IdP y busque el **Certificado de firma**.

1. Seleccione **Descargar como .crt**.

1. Configure el proveedor SAML para que admita el cierre de sesión único y la firma de solicitudes de SAML, y cargue el certificado de firma del grupo de usuarios. Su IdP debe redireccionarse a `/saml2/logout` en su dominio del grupo de usuarios.

------
#### [ API/CLI ]

**Para configurar un cierre de sesión de SAML**

Configura el cierre de sesión único con el `IDPSignout` parámetro de una solicitud de API [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)o [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html)una solicitud. A continuación se muestra un ejemplo de `ProviderDetails` de un IdP que admite el cierre de sesión único de SAML.

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

------

# Firma y cifrado de SAML
<a name="cognito-user-pools-SAML-signing-encryption"></a>

El inicio de sesión con SAML 2.0 se basa en el concepto de que el usuario de la aplicación es el portador de las solicitudes y respuestas de su flujo de autenticación. Le recomendamos que se asegure de que los usuarios no lean ni modifiquen estos documentos de SAML mientras están en tránsito. Para ello, añada la firma y el cifrado de SAML a los proveedores de identidad de SAML (IdPs) de su grupo de usuarios. Con la firma de SAML, los grupos de usuarios añaden una firma a las solicitudes de inicio y cierre de sesión de SAML. Con la clave pública del grupo de usuarios, su IdP puede comprobar que recibe solicitudes de SAML sin modificar. Luego, cuando el IdP responde y pasa las aserciones SAML a las sesiones de navegador de los usuarios, el IdP puede cifrar esa respuesta para que el usuario no pueda inspeccionar sus propios atributos y derechos.

Con la firma y el cifrado de SAML, todas las operaciones criptográficas que se realicen durante las operaciones de SAML entre grupos de usuarios deben generar firmas y texto cifrado con las claves que genera user-pool-provided Amazon Cognito. Actualmente, no se puede configurar un grupo de usuarios para que firme solicitudes o acepte aserciones cifradas con una clave externa.

**nota**  
Los certificados de su grupo de usuarios tienen una validez de diez años. Una vez al año, Amazon Cognito genera nuevos certificados de firma y cifrado para su grupo de usuarios. Amazon Cognito devuelve el certificado más reciente cuando se solicita el certificado de firma y firma las solicitudes con el certificado de firma más reciente. Su IdP puede cifrar las aserciones SAML con cualquier certificado de cifrado de grupo de usuarios que no esté caducado. Los certificados anteriores siguen siendo válidos durante toda su duración y la clave pública no cambia de un certificado a otro. Como práctica recomendada, actualice el certificado en la configuración de su proveedor una vez al año.

**Topics**
+ [Aceptación de respuestas de SAML cifradas por parte del IdP](#cognito-user-pools-SAML-encryption)
+ [Firma de solicitudes de SAML](#cognito-user-pools-SAML-signing)

## Aceptación de respuestas de SAML cifradas por parte del IdP
<a name="cognito-user-pools-SAML-encryption"></a>

Amazon Cognito y su IdP pueden establecer la confidencialidad en las respuestas de SAML cuando los usuarios inician y cierran sesión. Amazon Cognito asigna un par de claves RSA pública-privada y un certificado a cada proveedor SAML externo que configure en su grupo de usuarios. Al habilitar el cifrado de respuestas para el proveedor SAML de su grupo de usuarios, debe cargar su certificado en un IdP que admita las respuestas de SAML cifradas. Para que la conexión del grupo de usuarios con el IdP SAML funcione, es preciso que previamente el IdP comience a cifrar todas las aserciones SAML con la clave proporcionada.

A continuación, mostramos un flujo de un inicio de sesión de SAML cifrado.

1. El usuario comienza a iniciar sesión y elige su IdP SAML.

1. El [Autorizar punto de conexión](authorization-endpoint.md) del grupo de usuarios redirige al usuario a su IdP SAML con una solicitud de inicio de sesión de SAML. Si lo desea, el grupo de usuarios puede acompañar esta solicitud con una firma que permita que el IdP verifique su integridad. Cuando quiera firmar las solicitudes de SAML, debe configurar el IdP para que acepte las solicitudes que su grupo de usuarios haya firmado con la clave pública del certificado de firma.

1. El IdP SAML efectúa el inicio de sesión del usuario y genera una respuesta de SAML. El IdP cifra la respuesta con la clave pública y redirige al usuario al punto de conexión `/saml2/idpresponse` del grupo de usuarios. El IdP debe cifrar la respuesta de acuerdo con la definición incluida en la especificación de SAML 2.0. Para obtener más información, consulte `Element <EncryptedAssertion>` en [Assertions and Protocols for the OASIS Security Assertion Markup Language (SAML) V2.0](https://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf).

1. Su grupo de usuarios descifra el texto cifrado de la respuesta de SAML con la clave privada y ejecuta el inicio de sesión del usuario.

**importante**  
Cuando habilita el cifrado de respuestas para un IdP SAML en su grupo de usuarios, el IdP debe cifrar todas las respuestas con una clave pública específica del proveedor. Amazon Cognito no acepta respuestas de SAML que no estén cifradas y provengan de un IdP externo de SAML que configure para posibilitar el cifrado. 

Cualquier IdP SAML externo de su grupo de usuarios puede admitir el cifrado de respuesta y cada IdP recibe su propio par de claves.

------
#### [ Consola de administración de AWS ]

**Configuración del cifrado de respuestas de SAML**

1. Cree un [grupo de usuarios](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html), un [cliente de aplicación](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-configuring-app-integration.html) y un IdP SAML.

1. Al crear o editar su proveedor de identidades SAML, en **Firmar solicitudes y cifrar respuestas**, marque la casilla con el título **Requerir aserciones SAML cifradas a este proveedor**.

1. En el menú **Proveedores sociales y externos** de su grupo de usuarios, elija su IdP SAML y seleccione **Ver certificado de cifrado**.

1. Seleccione **Descargar como .crt** y envíe el archivo descargado a su IdP SAML. Configure su IdP SAML para cifrar las respuestas de SAML con la clave del certificado.

------
#### [ API/CLI ]

**Para configurar el cifrado de respuestas de SAML**

Configure el cifrado de respuesta con el `EncryptedResponses` parámetro de una solicitud de API o una solicitud. [CreateIdentityProvider[UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html) A continuación se muestra un ejemplo de `ProviderDetails` de un IdP que admite la firma de solicitudes.

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

Para obtener el certificado de cifrado de su grupo de usuarios, realice una solicitud a la [DescribeIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DescribeIdentityProvider.html)API y recupere el valor del `ActiveEncryptionCertificate` parámetro de respuesta`ProviderDetails`. Guarde este certificado y entréguelo a su IdP como certificado de cifrado para las solicitudes de inicio de sesión de su grupo de usuarios.

------

## Firma de solicitudes de SAML
<a name="cognito-user-pools-SAML-signing"></a>

La capacidad de demostrar la integridad de las solicitudes de SAML 2.0 a su IdP es una ventaja de seguridad del inicio de sesión de SAML iniciado por el SP de Amazon Cognito. Cada grupo de usuarios con un dominio recibe un certificado de firma X.509 del grupo de usuarios. Con la clave pública de este certificado, los grupos de usuarios aplican una firma criptográfica a las *solicitudes de cierre de sesión* que el grupo de usuarios genera cuando los usuarios seleccionan un IdP SAML. Si lo desea, puede configurar el cliente de aplicación para que firme las *solicitudes de inicio de sesión* SAML. Al firmar las solicitudes de SAML, el IdP puede comprobar que la firma de los metadatos XML de las solicitudes coincida con la clave pública del certificado del grupo de usuarios que se ha proporcionado.

------
#### [ Consola de administración de AWS ]

**Configuración de la firma de solicitudes de SAML**

1. Cree un [grupo de usuarios](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html), un [cliente de aplicación](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-configuring-app-integration.html) y un IdP SAML.

1. Al crear o editar el proveedor de identidades de SAML, en **Firmar solicitudes y cifrar respuestas**, marque la casilla con el título **Firmar solicitudes de SAML a este proveedor**.

1. En el menú **Proveedores sociales y externos** de su grupo de usuarios, elija **Ver certificado de firma**.

1. Seleccione **Descargar como .crt** y envíe el archivo descargado a su IdP SAML. Configure el IdP SAML para que verifique la firma de las solicitudes de SAML entrantes.

------
#### [ API/CLI ]

**Para configurar la firma de solicitudes de SAML**

Configura la firma de solicitudes con el `RequestSigningAlgorithm` parámetro de una solicitud [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)o de [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html)API. A continuación se muestra un ejemplo de `ProviderDetails` de un IdP que admite la firma de solicitudes.

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

------

# Nombres e identificadores de proveedor de identidades SAML
<a name="cognito-user-pools-managing-saml-idp-naming"></a>

Al asignar un nombre a los proveedores de identidad de SAML (IdPs) y asignar identificadores de IdP, puede automatizar el flujo de solicitudes de inicio y cierre de sesión iniciadas por el SP a ese proveedor. Para obtener información sobre las restricciones de cadena del nombre del proveedor, consulte la propiedad de. `ProviderName` [CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html#CognitoUserPools-CreateIdentityProvider-request-ProviderName)

![\[Diagrama de un flujo de autenticación del inicio de sesión SAML iniciado por el SP de Amazon Cognito con un identificador del IdP y el inicio de sesión administrado. El usuario proporciona una dirección de correo electrónico al inicio de sesión administrado y Amazon Cognito lo redirige automáticamente a su proveedor.\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/scenario-authentication-saml-identifier.png)


También puede elegir hasta 50 identificadores para los proveedores de SAML. Un identificador es un nombre descriptivo de un IdP de su grupo de usuarios y debe ser único dentro del grupo de usuarios. Si los identificadores de SAML coinciden con los dominios de correo electrónico de los usuarios, el inicio de sesión administrado solicita la dirección de correo electrónico de cada usuario, evalúa el dominio de su dirección de correo electrónico y lo redirige al IdP correspondiente a su dominio. Puesto que la misma organización puede poseer varios dominios, un IdP único puede tener varios identificadores.

Tanto si utiliza identificadores de dominio de correo electrónico como si no, puede utilizar identificadores en una aplicación multiinquilino para redirigir a los usuarios al IdP correcto. Si desea omitir por completo el inicio de sesión administrado, puede personalizar los enlaces que presente a los usuarios para que los redirijan a través del [Autorizar punto de conexión](authorization-endpoint.md) a su IdP. Para ejecutar el inicio de sesión de sus usuarios con un identificador y redirigirlos a su IdP, incluya el identificador con un formato `idp_identifier=myidp.example.com` en los parámetros de la solicitud de autorización inicial.

Otro método para transferir un usuario a su IdP consiste en rellenar el parámetro `identity_provider` con el nombre de su IdP con el siguiente formato de URL.

```
https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?
response_type=code&
identity_provider=MySAMLIdP&
client_id=1example23456789&
redirect_uri=https://www.example.com
```

Cuando un usuario inicie sesión con su IdP SAML, este lo redirigirá con una respuesta de SAML en el cuerpo de `HTTP POST` a su punto de conexión `/saml2/idpresponse`. Amazon Cognito procesa la aserción SAML y, si las notificaciones de la respuesta cumplen las expectativas, la redirigirá a la URL de devolución de llamada del cliente de aplicación. Cuando el usuario haya completado la autenticación de esta manera, solo interactuará con las páginas web de su IdP y de su aplicación.

Con los identificadores de IdP en formato de dominio, el inicio de sesión administrado solicita las direcciones de correo electrónico al iniciar sesión y, a continuación, cuando el dominio de correo electrónico coincide con un identificador de IdP, redirige a los usuarios a la página de inicio de sesión de su IdP. Por ejemplo, supongamos que crea una aplicación que requiere que los empleados de dos empresas diferentes inicien sesión. La primera empresa, AnyCompany A, es propietaria `exampleA.com` y`exampleA.co.uk`. La segunda empresa, AnyCompany B, es propietaria`exampleB.com`. Para este ejemplo, ha configurado dos IdPs, una para cada empresa, de la siguiente manera: 
+ Para el IdP A, define los identificadores `exampleA.com` y `exampleA.co.uk`.
+ Para el IdP B, define el identificador `exampleB.com`.

En su aplicación, invoca el inicio de sesión administrado del cliente de la aplicación para solicitar a cada usuario que introduzca su dirección de correo electrónico. Amazon Cognito obtiene el dominio de la dirección de correo electrónico, correlaciona el dominio con un IdP con un identificador de dominio y redirige al usuario al IdP correcto con una solicitud al [Autorizar punto de conexión](authorization-endpoint.md) que contiene un parámetro de solicitud `idp_identifier`. Por ejemplo, si un usuario introduce `bob@exampleA.co.uk`, la siguiente página con la que interactuará será la página de inicio de sesión del IdP en `https://auth.exampleA.co.uk/sso/saml`.

También puede implementar la misma lógica de forma independiente. En la aplicación, puede crear un formulario personalizado que recopile la información introducida por el usuario y la correlacione con el IdP correcto según su propia lógica. Puede generar portales personalizados para cada uno de los inquilinos de la aplicación, de modo que cada uno de ellos enlace con el punto de conexión autorizado con el identificador del inquilino en los parámetros de la solicitud.

Para recopilar una dirección de correo electrónico y analizar el dominio en el inicio de sesión administrado, asigne al menos un identificador a cada IdP SAML que haya asignado a su cliente de aplicación. De forma predeterminada, la pantalla de inicio de sesión gestionado muestra un botón para cada uno de los botones IdPs que haya asignado a su cliente de aplicación. No obstante, si ha asignado los identificadores correctamente, la página de inicio de sesión de la interfaz de usuario alojada clásica se parecerá a la siguiente imagen.

![\[Una página de inicio de sesión en el inicio de sesión administrado de Amazon Cognito, con el inicio de sesión del usuario local y un aviso para que un usuario federado ingrese una dirección de correo electrónico.\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/cup-saml-identifiers.png)


**nota**  
En la interfaz de usuario alojada clásica, la página de inicio de sesión del cliente de la aplicación solicita automáticamente una dirección de correo electrónico cuando le asignas identificadores. IdPs En la experiencia de inicio de sesión administrado, debe habilitar este comportamiento en el editor de marca. En la categoría de configuración de **Comportamiento de autenticación**, seleccione **Entrada de búsqueda de dominio** bajo el encabezado **Pantalla de proveedor**.

Para analizar dominios en el inicio de sesión administrado, deberá utilizar los dominios como identificadores de IdP. Si asignas un identificador de cualquier tipo a cada uno de los SAML IdPs de un cliente de aplicación, el inicio de sesión gestionado de esa aplicación ya no muestra los botones de selección de IdP. Agregue identificadores de IdP para SAML cuando desee utilizar el análisis del correo electrónico o la lógica personalizada para generar redireccionamientos. Si quieres generar redireccionamientos silenciosos y también quieres que tus páginas de inicio de sesión gestionadas muestren una lista de ellos IdPs, no asignes identificadores y utilices el parámetro de `identity_provider` solicitud en tus solicitudes de autorización.
+ Si asigna solo un IdP SAML a su cliente de aplicación, la página de inicio de sesión del inicio de sesión administrado mostrará un botón para iniciar sesión con ese IdP.
+ Si asigna un identificador a cada IdP SAML que active para el cliente de aplicación, aparecerá una petición para que el usuario introduzca una dirección de correo electrónico en la página de inicio de sesión del inicio de sesión administrado.
+ Si tiene varios IdPs y no les asigna un identificador a todos, la página de inicio de sesión gestionado muestra un botón para iniciar sesión con cada IdP asignado.
+ Si ha asignado identificadores a sus páginas de inicio de sesión gestionadas IdPs y desea que muestren una selección de botones de IdP, añada un nuevo IdP que no tenga identificador a su cliente de aplicaciones o cree un nuevo cliente de aplicaciones. También puede eliminar un IdP ya existente y agregarlo de nuevo sin identificador. Si crea un nuevo IdP, los usuarios de SAML crearán nuevos perfiles de usuario. Esta duplicación de los usuarios activos puede repercutir en la facturación del mes en el que cambie la configuración del IdP.

Para obtener más información sobre la configuración de IdP, consulte [Configuración de proveedores de identidad para su grupo de usuarios](cognito-user-pools-identity-provider.md).