

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 las características de seguridad de los grupos de usuarios de Amazon Cognito
<a name="managing-security"></a>

Probablemente desee proteger su aplicación contra las intrusiones en la red, la adivinación de contraseñas, la suplantación de identidad de usuarios y el registro e inicio de sesión malintencionados. La configuración de las características de seguridad de los grupos de usuarios de Amazon Cognito puede ser un componente clave en la arquitectura de seguridad. La seguridad de su aplicación es *responsabilidad del cliente («Seguridad en la nube»*), tal y como se describe en el [modelo de responsabilidad AWS compartida](https://aws.amazon.com/compliance/shared-responsibility-model/). Las herramientas de este capítulo contribuyen a que el diseño de seguridad de su aplicación se ajuste a estos objetivos.

Al configurar el grupo de usuarios debe tomar una decisión importante sobre si permitirá o no el registro y el inicio de sesión públicos. Algunas opciones de grupos de usuarios, como los clientes confidenciales, la creación y confirmación administrativa de usuarios y los grupos de usuarios sin dominio, están sujetas en menor medida a los ataques a través de Internet. Sin embargo, suele ocurrir que los clientes públicos acepten el registro de cualquier usuario de Internet y envíen todas las operaciones directamente a su grupo de usuarios. En todas las configuraciones, pero especialmente en el caso de las configuraciones públicas, le recomendamos que planifique e implemente el grupo de usuarios teniendo siempre en cuenta las características de seguridad. La falta de seguridad también puede afectar a su AWS factura si fuentes no deseadas crean nuevos usuarios activos o intentan aprovecharse de los usuarios existentes.

La protección contra amenazas y MFA se aplica a los [usuarios locales](cognito-terms.md#terms-localuser). IdPs Los terceros son responsables de la postura de seguridad de los [usuarios federados](cognito-terms.md#terms-federateduser).Características de seguridad del grupo de usuarios

**Autenticación multifactor (MFA)**  
Solicite un código que su grupo de usuarios envíe por correo electrónico (con un plan de características Essentials o Plus) o desde una aplicación de autenticación para confirmar el inicio de sesión del grupo de usuarios.

**Protección contra amenazas**  
Supervise el inicio de sesión para detectar indicadores de riesgo y aplique la MFA o bloquee el inicio de sesión. Añada notificaciones y ámbitos personalizados para acceder a los tokens. Envíe los códigos de la MFA por correo electrónico.

**AWS WAF web ACLs**  
Inspeccione el tráfico entrante a los [puntos de conexión del grupo de usuarios y a la API de autenticación](authentication-flows-public-server-side.md#user-pools-API-operations) para detectar actividad no deseada en las capas de red y de aplicaciones.

**Sensibilidad a mayúsculas y minúsculas**  
No permita la creación de usuarios cuya dirección de correo electrónico o nombre de usuario preferido sean idénticos a los de otro usuario salvo en el uso de mayúsculas y minúsculas.

**Protección contra eliminación**  
Evite que los sistemas automatizados eliminen accidentalmente los grupos de usuarios. Exija una confirmación adicional de la eliminación del grupo de usuarios en la Consola de administración de AWS.

**Errores de existencia del usuario**  
Protéjase de la divulgación de los nombres de usuario y alias contenidos en el grupo de usuarios. Devuelva un error genérico en respuesta a una autenticación fallida, independientemente de que el nombre de usuario sea válido o no.

**Topics**
+ [Adición de MFA a un grupo de usuarios.](user-pool-settings-mfa.md)
+ [Seguridad avanzada con protección contra amenazas](cognito-user-pool-settings-threat-protection.md)
+ [Asocie una ACL AWS WAF web a un grupo de usuarios](user-pool-waf.md)
+ [Sensibilidad de mayúsculas y minúsculas en el grupo de usuarios](user-pool-case-sensitivity.md)
+ [Protección de eliminación de grupo de usuarios](user-pool-settings-deletion-protection.md)
+ [Administración de las respuestas de error de existencia de usuarios](cognito-user-pool-managing-errors.md)

# Adición de MFA a un grupo de usuarios.
<a name="user-pool-settings-mfa"></a>

La MFA añade un factor de autenticación del tipo *algo que poseemos* al factor inicial del tipo *algo que sabemos* que normalmente es un nombre de usuario y una contraseña. Puede utilizar mensajes de texto SMS, mensajes de correo electrónico o contraseñas temporales de un solo uso (TOTP) como factor adicional para el inicio de sesión de los usuarios que tengan la contraseña como el factor de autenticación principal.

La autenticación multifactor (MFA) aumenta la seguridad de los [usuarios locales](cognito-terms.md#terms-localuser) de la aplicación. En el caso de los [usuarios federados](cognito-terms.md#terms-federateduser), Amazon Cognito delega todos los procesos de autenticación al IdP y no les ofrece factores de autenticación adicionales.

**nota**  
La primera vez que un usuario nuevo inicia sesión en su aplicación, Amazon Cognito emite tokens OAuth 2.0, incluso si su grupo de usuarios requiere MFA. El segundo factor de autenticación cuando el usuario inicia sesión por primera vez es la confirmación del mensaje de verificación que Amazon Cognito le envía. Si su grupo de usuarios exige MFA, Amazon Cognito le pide al usuario que registre un factor de inicio de sesión adicional para utilizarlo cada vez que se intente iniciar sesión después de la primera vez.

Con la autenticación flexible, puede configurar el grupo de usuarios para que exija un factor de autenticación adicional en respuesta a un aumento del nivel de riesgo. Para añadir la autenticación flexible a un grupo de usuarios, consulte [Seguridad avanzada con protección contra amenazas](cognito-user-pool-settings-threat-protection.md).

Al configurar la MFA en `required` para un grupo de usuarios, todos los usuarios deben completar la MFA para iniciar sesión. Cada usuario debe configurar como mínimo un factor de MFA. Cuando la MFA es obligatoria, debe incluir la configuración de MFA en la incorporación de usuarios para que el grupo de usuarios les permita iniciar sesión.

El inicio de sesión administrado solicita a los usuarios que configuren la MFA cuando se establece que la MFA es obligatoria. Al configurar la MFA como opcional en el grupo de usuarios, el inicio de sesión administrado no solicita nada a los usuarios. Para trabajar con la MFA opcional, debe crear una interfaz en la aplicación que pida a los usuarios que seleccionen si desean configurar la MFA y, a continuación, los guíe por las entradas de la API para comprobar el factor de inicio de sesión adicional.

**Topics**
+ [Cosas que debe saber acerca de la MFA de grupos de usuarios](#user-pool-settings-mfa-prerequisites)
+ [Preferencias de MFA del usuario](#user-pool-settings-mfa-preferences)
+ [Detalles de la lógica de MFA en tiempo de ejecución del usuario](#user-pool-settings-mfa-user-outcomes)
+ [Configuración de un grupo de usuarios para la autenticación multifactor](#user-pool-configuring-mfa)
+ [MFA con mensajes SMS y correo electrónico](user-pool-settings-mfa-sms-email-message.md)
+ [MFA con token de software TOTP](user-pool-settings-mfa-totp.md)

## Cosas que debe saber acerca de la MFA de grupos de usuarios
<a name="user-pool-settings-mfa-prerequisites"></a>

Antes de configurar la MFA, tenga en cuenta lo siguiente:
+ Los usuarios pueden tener MFA *o* iniciar sesión sin contraseña, con una excepción: las claves de paso con verificación de usuario pueden cumplir los requisitos de MFA si se configuran en su grupo de usuarios. `FactorConfiguration` `MULTI_FACTOR_WITH_USER_VERIFICATION` `WebAuthnConfiguration`
  + No puede configurar el MFA como obligatorio en los grupos de usuarios que admiten [contraseñas](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless) de un solo uso.
  + No puede añadir `EMAIL_OTP` ni `SMS_OTP` añadir `AllowedFirstAuthFactors` cuando se requiere MFA en su grupo de usuarios. Puede añadir `WEB_AUTHN` cuándo `FactorConfiguration` está establecido en. `MULTI_FACTOR_WITH_USER_VERIFICATION`
  + El [inicio de sesión basado en opciones](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) solo ofrece factores `PASSWORD` y `PASSWORD_SRP` en los clientes de aplicación cuando se requiere MFA en el grupo de usuarios. Para obtener más información sobre los flujos de nombre de usuario y contraseña, consulte [Inicio de sesión con contraseñas persistentes](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-password) y [Inicio de sesión con contraseñas persistentes y carga útil segura](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-srp) en el capítulo sobre **autenticación** de esta guía.
  + En los grupos de usuarios en los que la MFA es opcional, los usuarios que hayan configurado un factor de MFA solo pueden iniciar sesión con flujos de autenticación de nombre de usuario y contraseña en el inicio de sesión basado en opciones. Estos usuarios son aptos para todos los flujos de [inicio de sesión basados en clientes](authentication-flows-selection-sdk.md#authentication-flows-selection-client).

  En la siguiente tabla, se describe el efecto de la configuración de MFA del grupo de usuarios y la configuración de los factores de MFA por parte del usuario en la capacidad de los usuarios de iniciar sesión con factores sin contraseña.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/user-pool-settings-mfa.html)
+ El método de MFA preferido del usuario influye en los métodos que este pueda utilizar para recuperar la contraseña. Los usuarios cuya MFA preferida se realice por mensaje de correo electrónico no pueden recibir un código de restablecimiento de contraseña por correo electrónico. Los usuarios cuya MFA preferida se realice por mensaje SMS no pueden recibir un código de restablecimiento de contraseña por SMS.

  La configuración de la [recuperación de contraseñas](managing-users-passwords.md#user-pool-password-reset-and-recovery) debe ofrecer una opción alternativa para cuando el usuario no pueda utilizar el método de restablecimiento de contraseña preferido. Por ejemplo, puede darse el caso de que sus mecanismos de recuperación tengan el correo electrónico como primera prioridad y la MFA de correo electrónico puede ser una opción en el grupo de usuarios. Si es así, añada la recuperación de cuentas mediante mensajes SMS como segunda opción o utilice las operaciones administrativas de la API para restablecer las contraseñas para esos usuarios.

  Amazon Cognito responde a las solicitudes de restablecimiento de contraseñas de usuarios que no disponen de un método de recuperación válido con una respuesta de error `InvalidParameterException`.

  El ejemplo del cuerpo de la solicitud [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html#API_UpdateUserPool_Examples)ilustra un `AccountRecoverySetting` caso en el que los usuarios pueden recurrir a la recuperación mediante un mensaje SMS cuando el restablecimiento de la contraseña de un mensaje de correo electrónico no está disponible.
+ Los usuarios no pueden recibir códigos de MFA y de restablecimiento de contraseña en la misma dirección de correo electrónico o número de teléfono. Si usan contraseñas de un solo uso (OTPs) de los mensajes de correo electrónico para MFA, deben usar mensajes SMS para recuperar la cuenta. Si usan OTPs mensajes SMS para MFA, deben usar mensajes de correo electrónico para recuperar la cuenta. En los grupos de usuarios con MFA, es posible que los usuarios no puedan completar la recuperación automática de contraseñas si tienen atributos para su dirección de correo electrónico, pero no un número de teléfono, o si su número de teléfono no tiene una dirección de correo electrónico.

  Para evitar que los usuarios no puedan restablecer sus contraseñas en los grupos de usuarios con esta configuración, defina los atributos `email` y `phone_number` [según sea necesario](user-pool-settings-attributes.md). Si lo prefiere, puede configurar procesos que siempre recopilen y establezcan esos atributos cuando los usuarios se registren o cuando los administradores creen perfiles de usuario. Cuando los usuarios tienen ambos atributos, Amazon Cognito envía automáticamente códigos de restablecimiento de contraseñas al destino que *no* sea el factor de MFA del usuario.
+ Si activa la MFA en el grupo de usuarios y elige **Mensaje de texto SMS** o **Mensaje de correo electrónico** como segundo factor, puede enviar mensajes a un atributo de número de teléfono o correo electrónico que no haya verificado en Amazon Cognito. Una vez que el usuario complete la MFA, Amazon Cognito establece su atributo `phone_number_verified` o `email_verified` en `true`.
+ Tras cinco intentos erróneos de presentar un código MFA, Amazon Cognito inicia el proceso de bloqueo por tiempo de espera exponencial descrito en [Comportamiento de bloqueo por intentos de inicio de sesión con error](authentication.md#authentication-flow-lockout-behavior).
+ Si su cuenta se encuentra en el entorno limitado de SMS Región de AWS que contiene los recursos del Amazon Simple Notification Service (Amazon SNS) para su grupo de usuarios, debe verificar los números de teléfono en Amazon SNS antes de poder enviar un mensaje SMS. Para obtener más información, consulte [Configuración de mensajes SMS para grupos de usuarios de Amazon Cognito](user-pool-sms-settings.md).
+ Para cambiar el estado de la MFA de los usuarios en respuesta a eventos detectados con protección contra amenazas, active la MFA y configúrela como opcional en la consola del grupo de usuarios de Amazon Cognito. Para obtener más información, consulte [Seguridad avanzada con protección contra amenazas](cognito-user-pool-settings-threat-protection.md).
+ Los mensajes de correo electrónico y SMS requieren que los usuarios tengan los atributos de dirección de correo electrónico y número de teléfono. Puede establecer `email` o `phone_number` como atributos obligatorios en el grupo de usuarios. En ese caso, los usuarios no podrán completar el registro a menos que proporcionen un número de teléfono. Si no establece estos atributos como obligatorios, pero quiere ejecutar una MFA por correo electrónico o mensaje SMS, pida a los usuarios su dirección de correo electrónico o número de teléfono cuando se registren. Le recomendamos que configure el grupo de usuarios para que envíe mensajes automáticamente a los usuarios para [comprobar estos atributos](signing-up-users-in-your-app.md).

  Amazon Cognito considera verificados un número de teléfono o una dirección de correo electrónico si un usuario ha recibido correctamente un código temporal por SMS o mensaje de correo electrónico y lo ha devuelto en una solicitud de [VerifyUserAttribute](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html)API. Como alternativa, su equipo puede configurar números de teléfono y marcarlos como verificados con una aplicación administrativa que realice solicitudes de [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)API.
+ Si ha configurado que se exija una MFA y ha activado más de un factor de autenticación, Amazon Cognito pedirá a los nuevos usuarios que seleccionen el factor de MFA que deseen usar. Los usuarios deben tener un número de teléfono para configurar la MFA de mensajes SMS y una dirección de correo electrónico para configurar la MFA de mensajes de correo electrónico. Si un usuario no tiene definido el atributo para ninguna MFA basada en mensajes disponible, Amazon Cognito le pedirá que configure la MFA con TOTP. La pregunta para elegir un factor de MFA (`SELECT_MFA_TYPE`) y configurar un factor elegido (`MFA_SETUP`) se presenta como una respuesta a un desafío [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)y a las operaciones de la [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)API.

## Preferencias de MFA del usuario
<a name="user-pool-settings-mfa-preferences"></a>

Los usuarios pueden configurar varios factores de MFA. Solo uno puede estar activo. Puede elegir la preferencia de MFA efectiva para los usuarios en la configuración del grupo de usuarios o en las peticiones de los usuarios. Un grupo de usuarios pide a un usuario los códigos de MFA cuando la configuración del grupo de usuarios y su propia configuración de usuario cumplen las siguientes condiciones:

1. La MFA está establecida como opcional u obligatoria en el grupo de usuarios.

1. El usuario tiene un atributo `email` o `phone_number` válido o ha configurado una aplicación de autenticación para la TOTP.

1. Al menos un factor de la MFA está activo.

1. Se ha establecido un factor de MFA como preferido.

### Evite el uso del mismo factor para el inicio de sesión y la MFA
<a name="user-pool-settings-mfa-preferences-same-factor"></a>

Es posible configurar el grupo de usuarios de forma que un solo factor de inicio de sesión sea la única opción de inicio de sesión y MFA disponible para algunos o todos los usuarios. Este resultado puede producirse cuando su principal caso de uso para iniciar sesión son las contraseñas de un solo uso para mensajes de correo electrónico o SMS (). OTPs El MFA preferido de un usuario puede ser el mismo tipo de factor que su inicio de sesión en las siguientes condiciones:
+ Se requiere MFA en el grupo de usuarios.
+ El correo electrónico y los SMS OTP están disponibles como opciones de inicio de sesión y *MFA* en el grupo de usuarios.
+ El usuario inicia sesión con el OTP de correo electrónico o mensaje SMS.
+ Tienen un atributo de dirección de correo electrónico pero no un atributo de número de teléfono, o un atributo de número de teléfono pero no un atributo de dirección de correo electrónico.

En este escenario, el usuario puede iniciar sesión con una OTP de correo electrónico y completar la MFA con una OTP de correo electrónico. Esta opción anula la función esencial de la MFA. Los usuarios que inicien sesión con contraseñas de un solo uso deben poder utilizar métodos de entrega diferentes a los de la MFA. Cuando los usuarios tienen opciones de SMS y correo electrónico, Amazon Cognito asigna automáticamente un factor diferente. Por ejemplo, cuando un usuario inicia sesión con una OTP de correo electrónico, su MFA preferida es SMS OTP.

Siga los siguientes pasos para abordar la autenticación del mismo factor cuando su grupo de usuarios admita la autenticación OTP tanto para el inicio de sesión como para la MFA.

1. Habilite la OTP por correo electrónico y SMS como factores de inicio de sesión.

1. Habilite tanto el correo electrónico como el SMS OTP como factores de MFA.

1. Recopilación

### Configuración del grupo de usuarios y su efecto en las opciones de MFA
<a name="user-pool-settings-mfa-preferences-things-to-know"></a>

La configuración del grupo de usuarios influye en los métodos de MFA que los usuarios pueden elegir. A continuación, se muestran algunos ajustes del grupo de usuarios que influyen en la capacidad de los usuarios para configurar la MFA.
+ En la configuración de **Autenticación multifactor** del menú **Inicio de sesión** de la consola de Amazon Cognito, puede configurar la MFA como opcional u obligatoria, o bien desactivarla. El equivalente en API de esta configuración es el [MfaConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-MfaConfiguration)parámetro de `CreateUserPool``UpdateUserPool`, y. `SetUserPoolMfaConfig`

  Además, en la configuración de la **autenticación multifactor**, la configuración de los **métodos de MFA** determina los factores de la MFA que los usuarios pueden configurar. El equivalente en API de esta configuración es la [SetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserPoolMfaConfig.html)operación. 
+ En el menú **Inicio de sesión**, en **Recuperación de cuenta de usuario**, puede configurar la forma en que el grupo de usuarios envía mensajes a los usuarios que olvidan su contraseña. El método de MFA de un usuario no puede tener el mismo método de entrega de MFA que el método de entrega de grupos de usuarios para los códigos de contraseña olvidada. El parámetro de API para el método de entrega de contraseña olvidada es el [AccountRecoverySetting](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-AccountRecoverySetting)parámetro de y. `CreateUserPool` `UpdateUserPool`

  Por ejemplo, los usuarios no pueden configurar la MFA de correo electrónico si la opción de recuperación es **Solo correo electrónico**. Esto se debe a que no puede habilitar la MFA del correo electrónico y configurar la opción de recuperación en **Solo correo electrónico** en el mismo grupo de usuarios. Si establece esta opción en **Correo electrónico si está disponible, de lo contrario, SMS**, el correo electrónico es la opción de recuperación prioritaria, pero su grupo de usuarios puede recurrir a los mensajes SMS cuando un usuario no reúna los requisitos para la recuperación por mensaje de correo electrónico. En este escenario, los usuarios pueden configurar la MFA por correo electrónico como preferida y solo pueden recibir un mensaje SMS cuando intenten restablecer su contraseña.
+ Si establece solo un método de MFA como disponible, no necesita administrar las preferencias de MFA del usuario.
+ Una configuración de SMS activa convierte automáticamente los mensajes SMS en un método de MFA disponible en su grupo de usuarios.

  Una [configuración de correo electrónico](user-pool-email.md) activa con sus propios recursos de Amazon SES en un grupo de usuarios y el plan de características Essentials o Plus convierte automáticamente los mensajes de correo electrónico en un método de MFA disponible en el grupo de usuarios.
+ Al configurar la MFA como obligatoria en un grupo de usuarios, los usuarios no pueden habilitar ni deshabilitar ningún método de MFA. Solo puede establecer un método preferido.
+ Al configurar la MFA como opcional en un grupo de usuarios, el inicio de sesión administrado no pide a los usuarios que configuren la MFA, pero sí les pide un código de MFA cuando tienen un método de MFA preferido.
+ Al activar la [protección contra amenazas](cognito-user-pool-settings-threat-protection.md) y configurar las respuestas de autenticación flexible en el modo de función completa, la MFA debe ser opcional en su grupo de usuarios. Una de las opciones de respuesta con la autenticación flexible consiste en exigir la MFA a un usuario cuyo intento de inicio de sesión se considere que contiene un nivel de riesgo.

  La configuración de **Atributos obligatorios** en el menú **Registro** de la consola determina si los usuarios deben proporcionar una dirección de correo electrónico o un número de teléfono para registrarse en la aplicación. Los mensajes de correo electrónico y SMS se convierten en factores de MFA aptos cuando un usuario tiene el atributo correspondiente. El parámetro [Schema](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-Schema) de `CreateUserPool` establece los atributos obligatorios.
+ Cuando configura la MFA como obligatoria en un grupo de usuarios y un usuario inicia sesión con el inicio de sesión administrado, Amazon Cognito le pide que seleccione un método de MFA entre los métodos disponibles para su grupo de usuarios. El inicio de sesión administrado gestiona la recopilación de una dirección de correo electrónico o un número de teléfono y la configuración de la TOTP. El siguiente diagrama muestra la lógica de las opciones que Amazon Cognito presenta a los usuarios.

### Configuración de las preferencias de MFA para los usuarios
<a name="user-pool-settings-mfa-preferences-configure"></a>

Puede configurar las preferencias de la MFA para los usuarios en un modelo de autoservicio con autorización de token de acceso o en un modelo administrado por el administrador con operaciones de API administrativas. Estas operaciones habilitan o deshabilitan los métodos de la MFA y establecen uno de los diversos métodos como opción preferida. Una vez que el usuario haya establecido una preferencia de MFA, cuando inicie sesión, Amazon Cognito le pedirá que proporcione un código del método de MFA que prefiera. A los usuarios que no hayan establecido una preferencia se les pedirá que elijan un método preferido en un desafío `SELECT_MFA_TYPE`.
+ En un modelo de autoservicio de usuario o en una aplicación pública [SetUserMfaPreference](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserMFAPreference.html), autorizada con el token de acceso de un usuario que ha iniciado sesión, establece la configuración de MFA.
+ En una aplicación confidencial o gestionada por el administrador, autorizada con AWS credenciales administrativas [AdminSetUserPreference](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserMFAPreference.html), establece la configuración de MFA.

También puede configurar las preferencias de la MFA del usuario desde el menú **Usuarios** de la consola de Amazon Cognito. Para obtener más información sobre los modelos de autenticación pública y confidencial en la API de grupos de usuarios de Amazon Cognito, consulte [Descripción de la autenticación mediante API, OIDC y páginas de inicio de sesión administrado](authentication-flows-public-server-side.md#user-pools-API-operations).

## Detalles de la lógica de MFA en tiempo de ejecución del usuario
<a name="user-pool-settings-mfa-user-outcomes"></a>

A fin de determinar los pasos que deben seguirse cuando los usuarios inician sesión, su grupo de usuarios evalúa las preferencias de MFA de los usuarios, los [atributos de los usuarios](user-pool-settings-attributes.md), la [configuración de MFA del grupo de usuarios](#user-pool-configuring-mfa), las acciones de [protección contra amenazas](cognito-user-pool-settings-adaptive-authentication.md) y la configuración de la [recuperación automática de cuentas](managing-users-passwords.md#user-pool-password-reset-and-recovery). A continuación, inicia sesión en los usuarios, les pide que elijan un método de MFA, les pide que configuren un método de MFA o les pide que utilicen MFA. Para configurar un método de MFA, los usuarios deben proporcionar una [dirección de correo electrónico o un número de teléfono](user-pool-settings-mfa-sms-email-message.md) o [registrar un autenticador TOTP](user-pool-settings-mfa-totp.md#totp-mfa-set-up-api). También pueden configurar las opciones de MFA y [registrar una opción preferida](#user-pool-settings-mfa-preferences-configure) por adelantado. El siguiente diagrama muestra los efectos detallados de la configuración del grupo de usuarios en los intentos de inicio de sesión inmediatamente después del registro inicial.

La lógica que se muestra aquí se aplica a las aplicaciones basadas en el SDK y a los inicios de sesión con el [inicio de sesión administrado](cognito-user-pools-managed-login.md), pero es menos visible en el inicio de sesión administrado. Al solucionar problemas de MFA, retroceda desde los resultados de los usuarios hasta las configuraciones del perfil de usuario y del grupo de usuarios que contribuyeron a la decisión.

![\[Diagrama del proceso de decisión de los grupos de usuarios de Amazon Cognito para la selección de MFA por parte de los usuarios finales\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/cup-mfa-decision-tree.png)


La siguiente lista corresponde a la numeración del diagrama de lógica de decisiones y describe cada paso en detalle. Un ![\[checkmark\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/checkmark.png) indica una autenticación correcta y la conclusión del flujo. Un ![\[error\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/error.png) indica que la autenticación no se ha realizado correctamente.

1. Un usuario presenta su nombre de usuario o nombre de usuario y contraseña en la pantalla de inicio de sesión. Si no presenta credenciales válidas, se deniega su solicitud de inicio de sesión. 

1. Si se realiza correctamente la autenticación con nombre de usuario y contraseña, determine si el MFA es obligatorio, opcional o si está desactivado. Si está desactivado, el nombre de usuario y la contraseña correctos permiten que la autenticación se realice correctamente. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/checkmark.png)

   1. Si la MFA es opcional, determine si el usuario ha configurado previamente un autenticador TOTP. Si ha configurado un TOTP, solicite la MFA con TOTP. Si responde correctamente al desafío de la MFA, iniciará sesión. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/checkmark.png)

   1. Determine si la característica de autenticación flexible de la protección contra amenazas ha requerido que el usuario configure la MFA. Si no ha asignado una MFA, el usuario ha iniciado sesión. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/checkmark.png)

1. Si se requiere la MFA o si la autenticación flexible tiene una MFA asignada, determine si el usuario ha establecido un factor de MFA como habilitado y preferido. Si lo han hecho, solicite una MFA con ese factor. Si responde correctamente al desafío de la MFA, iniciará sesión. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/checkmark.png)

1. Si el usuario no ha establecido una preferencia de MFA, determine si ha registrado un autenticador TOTP.

   1. Si el usuario ha registrado un autenticador TOTP, determine si la MFA con TOTP está disponible en el grupo de usuarios (se puede deshabilitar después de que los usuarios hayan configurado previamente los autenticadores).

   1. Determine si la MFA de mensajes de correo electrónico o mensajes SMS también está disponible en el grupo de usuarios.

   1.  Si no está disponible la MFA por correo electrónico ni por SMS, solicite al usuario la MFA con TOTP. Si responde correctamente al desafío de la MFA, iniciará sesión. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/checkmark.png)

   1. Si el correo electrónico o la MFA por SMS están disponibles, determine si el usuario tiene el atributo `email` o `phone_number` correspondiente. Si es así, tendrá a su disposición cualquier atributo que no sea el método principal de recuperación de cuentas de autoservicio y que esté habilitado para la MFA.

   1. Plantee un desafío `SELECT_MFA_TYPE` al usuario con opciones `MFAS_CAN_SELECT` que incluyan el TOTP y los factores de MFA disponibles por SMS o correo electrónico.

   1.  Pídale al usuario el factor que ha seleccionado en respuesta al desafío `SELECT_MFA_TYPE`. Si responde correctamente al desafío de la MFA, iniciará sesión. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/checkmark.png)

1. Si el usuario no ha registrado un autenticador TOTP o si lo ha hecho, pero el TOTP con MFA está deshabilitado actualmente, determine si el usuario tiene un atributo `email` o `phone_number`.

1.  Si el usuario solo tiene una dirección de correo electrónico o solo un número de teléfono, determine si ese atributo también es el método que implementa el grupo de usuarios para enviar mensajes de recuperación de cuentas para restablecer la contraseña. Si es verdadero, no puede completar el inicio de sesión con el MFA obligatorio y Amazon Cognito devuelve un error. Para activar el inicio de sesión para este usuario, debe añadir un atributo que no sea de recuperación o registrar un autenticador TOTP para el usuario. ![\[alt text not found\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/error.png)

   1. Si tiene una dirección de correo electrónico o un número de teléfono disponibles que no sean de recuperación, determine si el factor MFA de correo electrónico o SMS correspondiente está activado.

   1. Si tiene un atributo de dirección de correo electrónico no recuperable y la MFA de correo electrónico está habilitada, envíeles un desafío `EMAIL_OTP`. Si responde correctamente al desafío de la MFA, iniciará sesión. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/checkmark.png)

   1. Si tiene un atributo de número de teléfono no recuperable y la MFA de SMS está habilitada, envíeles un desafío `SMS_MFA`. Si responde correctamente al desafío de la MFA, iniciará sesión. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/checkmark.png)

   1. Si no tienen un atributo que sea apto para un factor de MFA por correo electrónico o SMS habilitado, determine si la MFA con TOTP está habilitada. Si la MFA con TOTP está habilitada, no puede completar el inicio de sesión con la MFA obligatoria y Amazon Cognito devuelve un error. Para activar el inicio de sesión para este usuario, debe añadir un atributo que no sea de recuperación o registrar un autenticador TOTP para el usuario. ![\[alt text not found\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/error.png)
**nota**  
Este paso ya se evaluó como **No** si el usuario tiene un autenticador TOTP pero la MFA con TOTP está deshabilitada.

   1. Si la MFA con TOTP está activada, presente al usuario un desafío `MFA_SETUP` con `SOFTWARE_TOKEN_MFA` en las opciones `MFAS_CAN_SETUP`. Para completar este desafío, debe registrar por separado un autenticador TOTP para el usuario y responder con `"ChallengeName": "MFA_SETUP", "ChallengeResponses": {"USERNAME": "[username]", "SESSION": "[Session ID from VerifySoftwareToken]}"`.

   1. Cuando el usuario responda al `MFA_SETUP` desafío con el token de sesión de una [VerifySoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifySoftwareToken.html)solicitud, pídale que lo haga. `SOFTWARE_TOKEN_MFA` Si responde correctamente al desafío de la MFA, iniciará sesión. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/checkmark.png)

1. Si el usuario tiene una dirección de correo electrónico y un número de teléfono, determine qué atributo, si lo hay, es el método principal de los mensajes de recuperación de la cuenta para restablecer la contraseña.

   1. Si la recuperación de cuentas de autoservicio está deshabilitada, se puede usar cualquiera de los atributos para la MFA. Determine si uno o ambos factores de MFA de correo electrónico y SMS están habilitados.

   1. Si ambos atributos están habilitados como factor de MFA, plantee al usuario un desafío `SELECT_MFA_TYPE` con las opciones `SMS_MFA` y `EMAIL_OTP` de `MFAS_CAN_SELECT`.

   1. Pídale al usuario el factor que ha seleccionado en respuesta al desafío `SELECT_MFA_TYPE`. Si responde correctamente al desafío de la MFA, iniciará sesión. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/checkmark.png)

   1. Si solo un atributo es un factor de MFA elegible, presénteles un desafío para el factor restante. Si responde correctamente al desafío de la MFA, iniciará sesión. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/checkmark.png)

      Esto ocurre en las siguientes situaciones:

      1. Cuando el usuario tiene atributos `email` y `phone_number`, la MFA por SMS y correo electrónico está habilitada y el método principal de recuperación de la cuenta es por correo electrónico o mensaje SMS.

      1. Cuando tiene atributos `email` y `phone_number`, solo se habilita la MFA por SMS o correo electrónico y la recuperación automática de cuentas está deshabilitada.

1. Si el usuario no ha registrado un autenticador TOTP y no tiene un atributo `email` ni `phone_number`, póngales el desafío `MFA_SETUP`. La lista en `MFAS_CAN_SETUP` incluye todos los factores de MFA habilitados en el grupo de usuarios que no son la opción principal de recuperación de cuentas. Puede responder a este desafío con `ChallengeResponses` para la MFA con correo electrónico o TOTP. Para configurar la MFA por SMS, añada un atributo de número de teléfono por separado y reinicie la autenticación.

   Para la MFA con TOTP, responda con `"ChallengeName": "MFA_SETUP", "ChallengeResponses": {"USERNAME": "[username]", "SESSION": "[Session ID from VerifySoftwareToken]"}`.

   Para la MFA por correo electrónico, responda con `"ChallengeName": "MFA_SETUP", "ChallengeResponses": {"USERNAME": "[username]", "email": "[user's email address]"}`.

   1. Pídale al usuario el factor que ha seleccionado en respuesta al desafío `SELECT_MFA_TYPE`. Si responde correctamente al desafío de la MFA, iniciará sesión. ![\[Green circular icon with a checkmark symbol inside.\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/checkmark.png)

## Configuración de un grupo de usuarios para la autenticación multifactor
<a name="user-pool-configuring-mfa"></a>

Puede configurar la MFA en la consola de Amazon Cognito o con la operación de [SetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserPoolMfaConfig.html)la API y los métodos del SDK.

**Para configurar la MFA en la consola de Amazon Cognito, siga estos pasos:**

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

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ú **Inicio de sesión**. Localice **Autenticación multifactor** y elija **Editar**.

1. Elija el método **MFA enforcement** (Aplicación de MFA) que desea utilizar con su grupo de usuarios.  
![\[Captura de pantalla de la consola de Amazon Cognito con opciones de MFA\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/cup-mfa.png)

   1. **Require MFA** (Requerir MFA): Todos los usuarios de su grupo de usuarios deben iniciar sesión con un código adicional de SMS, correo electrónico o contraseña temporal de un solo uso (TOTP) como factor de autenticación adicional.

   1. **MFA opcional**. Puede dar a sus usuarios la opción de registrar un factor de inicio de sesión adicional y seguir permitiendo el inicio de sesión de los usuarios sin tener una MFA configurada. Elija esta opción si utiliza la autenticación adaptativa. Para obtener más información sobre la autenticación flexible, consulte [Seguridad avanzada con protección contra amenazas](cognito-user-pool-settings-threat-protection.md).

   1. **No MFA** (Sin MFA): los usuarios no pueden registrar un factor de inicio de sesión adicional.

1. Elija los **MFA methods** (Métodos MFA) compatibles con su aplicación. Puede establecer **Mensaje de correo electrónico**, **Mensaje SMS** o **Aplicaciones autenticadoras** para generar la TOTP como segundo factor.

1. Si utiliza los mensajes de texto SMS como segundo factor y no tiene un rol de IAM configurado para usar con Amazon Simple Notification Service (Amazon SNS) para mensajes SMS, cree uno en la consola. En el menú **Métodos de autenticación** de su grupo de usuarios, busque **SMS** y seleccione **Editar**. También puede utilizar un rol existente que permita a Amazon Cognito enviar mensajes SMS a los usuarios por usted. Para obtener más información, consulte [Roles de IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html).

   Si utiliza mensajes de correo electrónico como segundo factor y no ha configurado una identidad de origen para utilizar con Amazon Simple Email Service (Amazon SES) para mensajes de correo electrónico, cree una en la consola. Debe elegir la opción **Enviar correo electrónico con SES**. En el menú **Métodos de autenticación** de su grupo de usuarios, busque **Correo electrónico** y seleccione **Editar**. Seleccione una **Dirección de correo electrónico del REMITENTE** entre las identidades verificadas disponibles en la lista. Si elige un dominio verificado, como `example.com`, también debe configurar un **Nombre del REMITENTE** en el dominio verificado, como `admin-noreply@example.com`.

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

# MFA con mensajes SMS y correo electrónico
<a name="user-pool-settings-mfa-sms-email-message"></a>

Los mensajes de la MFA de correo electrónico y SMS confirman que los usuarios tienen acceso a un destino de mensajes antes de poder iniciar sesión. Confirman que no solo tienen acceso a una contraseña, sino también a los mensajes SMS o a la bandeja de entrada del usuario original. Amazon Cognito solicita al usuario que proporcione el código corto que el grupo de usuarios le ha enviado después de que haya introducido correctamente un nombre de usuario y una contraseña.

La MFA con SMS y correo electrónico no requiere configuración adicional después de que el usuario añada una dirección de correo electrónico o un número de teléfono a su perfil. Amazon Cognito puede enviar mensajes a direcciones de correo electrónico y números de teléfono no verificados. Cuando un usuario completa su primera MFA, Amazon Cognito marca su dirección de correo electrónico o número de teléfono como verificados.

La autenticación del tipo de MFA comienza cuando un usuario con MFA introduce el nombre de usuario y contraseña en la aplicación. La aplicación envía estos parámetros iniciales en un método de SDK que invoca una solicitud de API o API. [InitiateAuth[AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) `ChallengeParameters`, en la respuesta de la API, incluye un valor `CODE_DELIVERY_DESTINATION` que indica dónde se ha enviado el código de autorización. En su aplicación, muestre un formulario que pida al usuario que consulte el teléfono e incluya un elemento de entrada para introducir el código. Cuando este escriba el código, envíelo en una solicitud de la API de desafío-respuesta para completar el proceso de inicio de sesión.

Cuando un usuario con MFA inicia sesión con el nombre de usuario y la contraseña en las páginas del [inicio de sesión administrado](cognito-user-pools-managed-login.md), se les solicita automáticamente el código de MFA.

Los grupos de usuarios envían mensajes SMS para notificaciones de la MFA y otras notificaciones de Amazon Cognito con los recursos de Amazon Simple Notification Service (Amazon SNS) a su Cuenta de AWS. Del mismo modo, los grupos de usuarios envían mensajes de correo electrónico con los recursos de Amazon Simple Email Service (Amazon SES) de su cuenta. Estos servicios enlazados incurren en sus propios costes en la AWS factura de envío de mensajes. También tienen requisitos adicionales para el envío de mensajes en volúmenes de producción. Para obtener más información, consulte los siguientes enlaces:
+ [Configuración de mensajes SMS para grupos de usuarios de Amazon Cognito](user-pool-sms-settings.md)
+ [Precios de los mensajes SMS a nivel mundial](https://aws.amazon.com/sns/sms-pricing/)
+ [Configuración de correo electrónico para grupos de usuarios de Amazon Cognito](user-pool-email.md)
+ [Precios de Amazon SES](https://aws.amazon.com/ses/pricing)

## Consideraciones sobre la MFA de SMS y mensajes de correo electrónico
<a name="user-pool-settings-mfa-sms-email-message-considerations"></a>
+ Para permitir que los usuarios inicien sesión mediante una MFA de correo electrónico, el grupo de usuarios debe tener las siguientes opciones de configuración:

  1. Tiene el plan de características Plus o Essentials en su grupo de usuarios. Para obtener más información, consulte [Planes de características de grupo de usuarios](cognito-sign-in-feature-plans.md).

  1. El grupo de usuarios envía mensajes de correo electrónico con los propios recursos de Amazon SES. Para obtener más información, consulte [Configuración de email de Amazon SES](user-pool-email.md#user-pool-email-developer).
+ El código de la MFA es válido para la opción **Duración de la sesión del flujo de autenticación** que ha configurado para el cliente de aplicación.

  Configure la duración de una sesión de flujo de autenticación en la consola de Amazon Cognito, en el menú **Clientes de aplicación**, cuando **edite** su cliente de aplicación. También puede establecer la duración de la sesión del flujo de autenticación en una solicitud de API de `CreateUserPoolClient` o `UpdateUserPoolClient`. Para obtener más información, consulte [Un ejemplo de sesión de autenticación](authentication.md#amazon-cognito-user-pools-authentication-flow).
+ Cuando un usuario proporciona correctamente un código de un mensaje SMS o de correo electrónico que Amazon Cognito ha enviado a un número de teléfono o dirección de correo electrónico no verificados, Amazon Cognito marca el atributo correspondiente como verificado.
+ Para que un usuario introduzca un cambio de autoservicio en el valor de un número de teléfono o una dirección de correo electrónico asociados a la MFA, debe iniciar sesión y autorizar la solicitud con un token de acceso. Si no puede acceder a su número de teléfono o dirección de correo electrónico actuales, no podrá iniciar sesión. Tu equipo debe cambiar estos valores con AWS las credenciales de administrador en las solicitudes de la [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)API.
+ Después de [configurar los SMS](user-pool-sms-settings.md) en el grupo de usuarios, no podrá deshabilitar los mensajes SMS como factor de MFA disponible.

# MFA con token de software TOTP
<a name="user-pool-settings-mfa-totp"></a>

Al configurar la MFA de token de software TOTP en el grupo de usuarios, el usuario inicia sesión con un nombre de usuario y una contraseña y, a continuación, utiliza una TOTP para completar la autenticación. Después de que el usuario establezca y verifique un nombre de usuario y una contraseña, puede activar un token de software TOTP para la MFA. Si la aplicación utiliza el inicio de sesión administrado de Amazon Cognito para el inicio de sesión de los usuarios, el usuario envía el nombre de usuario y la contraseña y, a continuación, envía la contraseña TOTP en una página de inicio de sesión adicional.

Puede activar la MFA con TOTP para el grupo de usuarios en la consola de Amazon Cognito o utilizar las operaciones de la API de Amazon Cognito. A nivel del grupo de usuarios, puede llamar [SetUserPoolMfaConfig](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserPoolMfaConfig.html)para configurar el MFA y habilitar el MFA TOTP.

**nota**  
Si no activa la MFA con token de software de TOTP para el grupo de usuarios, Amazon Cognito no podrá usar el token para asociar ni verificar usuarios. En este caso, los usuarios reciben un excepción `SoftwareTokenMFANotFoundException` con la descripción `Software Token MFA has not been enabled by the userPool`. Si posteriormente desactiva la MFA con token de software para el grupo de usuarios, los usuarios que asociaron y verificaron previamente un token de TOTP podrán seguir utilizándolo para la MFA.

La configuración de TOTP para el usuario es un proceso de varios pasos en el que el usuario recibe un código secreto que valida introduciendo una contraseña de un solo uso. A continuación, se puede activar la MFA con TOTP para el usuario o configurar TOTP como método de MFA preferido para el usuario.

Cuando configure su grupo de usuarios para solicitar que MFA con TOTP y sus usuarios se registren en su aplicación en el inicio de sesión administrado, Amazon Cognito automatiza el proceso del usuario. Amazon Cognito pide al usuario que elija un método de MFA, muestra un código QR para configurar su aplicación de autenticación y verifica su registro de MFA. En los grupos de usuarios en los que ha permitido a los usuarios elegir entre MFA por SMS y TOTP, Amazon Cognito también ofrece al usuario una selección de métodos.

**importante**  
Si tiene una ACL AWS WAF web asociada a un grupo de usuarios y una regla de su ACL web presenta un CAPTCHA, esto puede provocar un error irrecuperable al iniciar sesión gestionado y registrarse en el TOTP. Para crear una regla que tenga una acción CAPTCHA y no afecte al TOTP del inicio de sesión administrado, consulte [Configuración de su ACL AWS WAF web para el inicio de sesión gestionado en TP MFA](#totp-waf). Para obtener más información sobre la AWS WAF web ACLs y Amazon Cognito, consulte. [Asocie una ACL AWS WAF web a un grupo de usuarios](user-pool-waf.md)

Para implementar el MFA de TOTP en una interfaz de usuario personalizada con AWS un SDK y la API de grupos de usuarios de Amazon [Cognito, consulte](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html). [Configuración de MFA con TOTP para un usuario](#totp-mfa-set-up-api)

Para añadir la MFA a un grupo de usuarios, consulte [Adición de MFA a un grupo de usuarios.](user-pool-settings-mfa.md).

**Condiciones y limitaciones de la MFA con TOTP**

1. Amazon Cognito admite la MFA con token de software a través de una aplicación de autenticación que genera códigos de TOTP. Amazon Cognito no admite la MFA basada en hardware.

1. Cuando el grupo de usuarios requiere una TOTP para un usuario que no la ha configurado, este recibe un token de acceso de un solo uso que la aplicación puede utilizar para activar la MFA con TOTP para dicho usuario. Los intentos de inicio de sesión posteriores fallarán hasta que el usuario haya registrado un factor de inicio de sesión adicional con TOTP.
   + Un usuario que se registra en el grupo de usuarios con la operación de la API `SignUp` o a través del inicio de sesión administrado recibirá tokens de un solo uso al finalizar el registro.
   + Después de crear un usuario y de que este configure su contraseña inicial, Amazon Cognito emite tokens de un solo uso desde el inicio de sesión administrado para el usuario. Si establece una contraseña permanente para el usuario, Amazon Cognito emite tokens de un solo uso cuando el usuario inicia sesión por primera vez.
   + Amazon Cognito no emite tokens de un solo uso a un usuario creado por el administrador que inicia sesión con las operaciones de la API o la API. [InitiateAuth[AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) Después de que el usuario supere el desafío de establecer su contraseña inicial o si usted establece una contraseña permanente para el usuario, Amazon Cognito desafía inmediatamente al usuario para que configure la MFA.

1. Si un usuario de un grupo de usuarios que requiere la MFA ya ha recibido un token de acceso de un solo uso pero no ha configurado la MFA con TOTP, el usuario no podrá iniciar sesión en el inicio de sesión administrado hasta que haya configurado la MFA. En lugar del token de acceso, puede usar el valor de `session` respuesta de un `MFA_SETUP` desafío a una solicitud [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)o [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)en una solicitud. [AssociateSoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AssociateSoftwareToken.html)

1. Si los usuarios han configurado una TOTP, pueden usarla para la MFA, incluso si posteriormente desactiva la TOTP para el grupo de usuarios.

1. Amazon Cognito solo acepta TOTPs aplicaciones autenticadoras que generen códigos con la función hash HMAC. SHA1 Los códigos generados con la función de inserción SHA-256 devuelven un error de `Code mismatch`.

## Configuración de MFA con TOTP para un usuario
<a name="totp-mfa-set-up-api"></a>

Cuando un usuario inicia sesión por primera vez, la aplicación utiliza su token de acceso de un solo uso para generar la clave privada TOTP y presentarla al usuario en formato de texto o código QR. El usuario configura su aplicación de autenticación y proporciona un TOTP para los intentos de inicio de sesión posteriores. Su aplicación o el inicio de sesión administrado presentan el TOTP a Amazon Cognito en las respuestas al desafío de MFA.

En algunas circunstancias, el inicio de sesión administrado solicita a los nuevos usuarios que configuren un autenticador TOTP. Para obtener más información, consulte [Detalles de la lógica de MFA en tiempo de ejecución del usuario](user-pool-settings-mfa.md#user-pool-settings-mfa-user-outcomes).

**Topics**
+ [Asociar el token de software TOTP](#user-pool-settings-mfa-totp-associate-token)
+ [Verificar el token de TOTP](#user-pool-settings-mfa-totp-verification)
+ [Describe cómo iniciar sesión utilizando la MFA con TOTP](#user-pool-settings-mfa-totp-sign-in)
+ [Eliminación del token de TOTP](#user-pool-settings-mfa-totp-remove)

### Asociar el token de software TOTP
<a name="user-pool-settings-mfa-totp-associate-token"></a>

Para asociar el token de TOTP, debe enviar un código secreto al usuario que este debe validar con una contraseña de un solo uso. Para asociar el token se deben seguir tres pasos.

1. Cuando el usuario elija el MFA del token de software TOTP, [AssociateSoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AssociateSoftwareToken.html)llame para obtener un código clave secreto compartido generado único para la cuenta de usuario. Puede autorizar AssociateSoftwareToken con un token de acceso o una cadena de sesión. 

1. La aplicación presenta al usuario la clave privada o un código QR que usted genera a partir de la clave privada. El usuario debe introducir la clave en una aplicación que genere un TOTP, como Google Authenticator, ya sea escaneando el código QR que la aplicación genera a partir de la clave privada o introduciéndola manualmente.

1. Cuando el usuario introduce la clave o escanea el código QR en una aplicación de autenticación como Google Authenticator, la aplicación comienza a generar códigos.

### Verificar el token de TOTP
<a name="user-pool-settings-mfa-totp-verification"></a>

A continuación, verifique el token de TOTP. Para solicitar los códigos de muestra a su usuario y proporcionárselos al servicio Amazon Cognito para confirmar que el usuario está generando correctamente códigos TOTP, siga estos pasos.

1. La aplicación solicita al usuario un código para demostrar que ha configurado correctamente su aplicación de autenticación.

1. La aplicación de autenticación del usuario muestra una contraseña temporal. La aplicación de autenticación basa la contraseña en la clave secreta que usted le dio al usuario.

1. El usuario ingresa su contraseña temporal. La aplicación pasa la contraseña temporal a Amazon Cognito en una solicitud a la API `[VerifySoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifySoftwareToken.html)`.

1.  Amazon Cognito ha conservado la clave secreta asociada al usuario, genera un TOTP y la compara con la que proporcionó el usuario. Si coinciden, `VerifySoftwareToken` devuelve una respuesta `SUCCESS`.

1. Amazon Cognito asocia el factor TOTP al usuario.

1. Si la operación `VerifySoftwareToken` devuelve una respuesta `ERROR`, asegúrese de que el reloj del usuario sea correcto y de que no haya superado el número máximo de reintentos. Amazon Cognito acepta los tokens TOTP que se encuentran dentro de los 30 segundos anteriores o posteriores al intento, para tener en cuenta el sesgo menor del reloj. Cuando haya resuelto el problema, vuelva a intentar la VerifySoftwareToken operación.

### Describe cómo iniciar sesión utilizando la MFA con TOTP
<a name="user-pool-settings-mfa-totp-sign-in"></a>

En este punto, el usuario inicia sesión con la contraseña temporal de un solo uso. El proceso es el siguiente.

1. El usuario ingresa el nombre de usuario y la contraseña para iniciar sesión en la aplicación cliente.

1. Se invoca el desafío de la MFA con TOTP y, desde la aplicación, se le pide al usuario que ingrese una contraseña temporal.

1. El usuario obtiene la contraseña temporal de una aplicación generadora de TOTP asociada.

1. El usuario introduce el código de TOTP en la aplicación cliente. La aplicación solicita al servicio de Amazon Cognito que la verifique. Cada vez que inicie sesión, [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)deberá llamarlo para obtener una respuesta al nuevo desafío de autenticación del TOTP.

1. Si Amazon Cognito verifica el token, el inicio de sesión es exitoso y el usuario continúa con el flujo de autenticación. 

### Eliminación del token de TOTP
<a name="user-pool-settings-mfa-totp-remove"></a>

Por último, la aplicación debería permitir al usuario desactivar la configuración de TOTP. En la actualidad, no puede eliminar el token del software TOTP de un usuario. Para reemplazar el token de software del usuario, asocie y verifique un nuevo token de software. Para desactivar el MFA TOTP para un usuario, llame para modificar su usuario para [SetUserMFAPreference](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserMFAPreference.html)que no utilice ningún MFA o solo MFA por SMS.

1. Cree una interfaz en la aplicación para los usuarios que deseen restablecer la MFA. Pida a un usuario de esta interfaz que ingrese la contraseña.

1. Si Amazon Cognito devuelve un desafío de MFA TOTP, actualice la preferencia de MFA del usuario con. [SetUserMFAPreference](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetUserMFAPreference.html)

1. En la aplicación, comunique al usuario que ha desactivado la MFA y pídale que vuelva a iniciar sesión.

## Configuración de su ACL AWS WAF web para el inicio de sesión gestionado en TP MFA
<a name="totp-waf"></a>

Si tiene una ACL AWS WAF web asociada a un grupo de usuarios y una regla de su ACL web presenta un CAPTCHA, esto puede provocar un error irrecuperable al iniciar sesión gestionado y registrarse en el TOTP. AWS WAF Las reglas de CAPTCHA *solo* tienen este efecto en el MFA TOTP en el inicio de sesión gestionado y en la interfaz de usuario alojada clásica. La MFA de SMS no se ve afectada.

Amazon Cognito muestra el siguiente error cuando la regla de CAPTCHA no permite que un usuario complete la configuración de MFA con TOTP. 

La solicitud no se admite debido al captcha de WAF.

Este error se produce cuando se AWS WAF solicita un CAPTCHA en respuesta a [AssociateSoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AssociateSoftwareToken.html)las solicitudes de [VerifySoftwareToken](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifySoftwareToken.html)API que el grupo de usuarios realiza en segundo plano. Para crear una regla que tenga una acción CAPTCHA y no afecte al TOTP en el inicio de sesión administrado, excluya los valores del encabezado `x-amzn-cognito-operation-name` de `AssociateSoftwareToken` y `VerifySoftwareToken` de la acción CAPTCHA en su regla.

En la siguiente captura de pantalla se muestra un ejemplo de AWS WAF regla que aplica una acción de CAPTCHA a todas las solicitudes que no tienen un `x-amzn-cognito-operation-name` valor de encabezado igual o. `AssociateSoftwareToken` `VerifySoftwareToken`

![\[Captura de pantalla de una AWS WAF regla que aplica una acción de CAPTCHA a todas las solicitudes que no tienen un valor de x-amzn-cognito-operation-name encabezado igual o. AssociateSoftwareToken VerifySoftwareToken\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/cup-WAF-rule-TOTP.png)


Para obtener más información sobre la AWS WAF web ACLs y Amazon Cognito, consulte. [Asocie una ACL AWS WAF web a un grupo de usuarios](user-pool-waf.md)

# Seguridad avanzada con protección contra amenazas
<a name="cognito-user-pool-settings-threat-protection"></a>

Después de crear el grupo de usuarios, recibirá acceso a la opción **Protección contra amenazas** de la barra de navegación de la consola de Amazon Cognito. Puede activar las características de protección contra amenazas y personalizar las acciones que se llevan a cabo en respuesta a diferentes riesgos. También es posible utilizar el modo de auditoría para recopilar métricas sobre los riesgos detectados sin necesidad de aplicar mitigación alguna de seguridad. En el modo auditoría, Threat Protection publica las métricas en Amazon CloudWatch. Puede ver las métricas después de que Amazon Cognito genere su primer evento. Consulte [Visualización de las métricas de protección contra amenazas](metrics-for-cognito-user-pools.md#user-pool-settings-viewing-threat-protection-metrics).

La protección contra amenazas, anteriormente conocida como *características avanzadas de seguridad*, consiste en un conjunto de herramientas de supervisión de la actividad no deseada en el grupo de usuarios y las herramientas de configuración para detener automáticamente cualquier actividad potencialmente maliciosa. La protección contra amenazas tiene diferentes opciones de configuración para las operaciones de autenticación estándar y personalizadas. Por ejemplo, puede que quiera enviar una notificación a un usuario con un inicio de sesión de autenticación personalizado sospechoso, en el que haya configurado factores de seguridad adicionales, pero también bloquear a un usuario con el mismo nivel de riesgo con una autenticación básica de nombre de usuario y contraseña.

La protección contra amenazas está disponible en el plan de características Plus. Para obtener más información, consulte [Planes de características de grupo de usuarios](cognito-sign-in-feature-plans.md).

Las siguientes opciones de grupo de usuarios son los componentes de la protección contra amenazas.

**Credenciales comprometidas**  
Los usuarios reutilizan las contraseñas de varias cuentas de usuario. La característica de credenciales comprometidas de Amazon Cognito recopila datos de filtraciones públicas de nombres de usuario y contraseñas y compara las credenciales de los usuarios con listas de credenciales filtradas. La detección de credenciales comprometidas también comprueba las contraseñas que se suelen adivinar. Puedes comprobar si hay credenciales comprometidas en los flujos de autenticación username-and-password estándar de los grupos de usuarios. Amazon Cognito no detecta las credenciales comprometidas en la contraseña remota segura (SRP) ni en la autenticación personalizada.  
Puede elegir las acciones del usuario que solicitan la comprobación de credenciales comprometidas y la acción que desea que Amazon Cognito realice en respuesta. Para los eventos de inicio de sesión, registro y cambio de contraseña, Amazon Cognito puede **Bloquear el inicio de sesión** o **Permitir el inicio de sesión**. En ambos casos, Amazon Cognito genera un registro de actividad del usuario, donde puede encontrar más información sobre el evento.  
**Más información**  
[Uso de la detección de credenciales comprometidas](cognito-user-pool-settings-compromised-credentials.md)

**Autenticación flexible**  
Amazon Cognito puede revisar la información sobre la ubicación y el dispositivo de las solicitudes de inicio de sesión de los usuarios y aplicar una respuesta automática para proteger las cuentas de usuario del grupo de usuarios contra actividades sospechosas. Puede supervisar la actividad de los usuarios y automatizar las respuestas relativas a los niveles de riesgo detectados en el nombre de usuario, la contraseña, la SRP y la autenticación personalizada.  
Al activar la protección contra amenazas, Amazon Cognito asigna una puntuación de riesgo a la actividad del usuario. Puede asignar una respuesta automática a una actividad sospechosa: puede **solicitar la MFA**, **bloquear el inicio de sesión** o simplemente registrar los detalles de la actividad y la puntuación de riesgo. También puede enviar automáticamente mensajes de correo electrónico para notificar al usuario la actividad sospechosa para que pueda restablecer la contraseña o realizar otras acciones autoguiadas.  
**Más información**  
[Uso de la autenticación flexible](cognito-user-pool-settings-adaptive-authentication.md)

**Lista de direcciones IP permitidas y denegadas**  
Con la protección contra amenazas de Amazon Cognito en modo **Funcionalidad completa**, puede crear una dirección IP con las excepciones **Bloquear siempre** y **Permitir siempre**. A una sesión de una dirección IP en la lista de excepciones **Always block (Bloquear siempre)** no se le asigna un nivel de riesgo mediante la autenticación adaptativa y no puede iniciar sesión en su grupo de usuarios.  

**Lo que debe saber sobre las listas de direcciones IP permitidas y bloqueadas**
+ Debe expresar **Bloquear siempre** y **Permitir siempre** en formato CIDR, como `192.0.2.0/24`, una máscara de 24 bits o `192.0.2.252/32`, una sola dirección IP.
+  Los dispositivos con direcciones IP en un rango **de IP de bloqueo** permanente no pueden registrarse ni iniciar sesión con aplicaciones de inicio de sesión gestionadas o basadas en el SDK, pero sí pueden iniciar sesión con aplicaciones de terceros. IdPs 
+ Las listas de **Permitir siempre** y **Bloquear siempre** no afectan a la actualización de los tokens.
+ Amazon Cognito no aplica reglas de MFA de autenticación flexible a los dispositivos de un rango de direcciones IP **Permitir siempre**, pero sí aplica reglas de credenciales comprometidas.

**Exportación de registros**  
La protección contra amenazas registra detalles pormenorizados de las solicitudes de autenticación de los usuarios en el grupo de usuarios. Estos registros incluyen evaluaciones de amenazas, información del usuario y metadatos de las sesiones, como la ubicación y el dispositivo. Para conservar y analizar estos registros, puede crear con ellos archivos externos. Los grupos de usuarios de Amazon Cognito exportan los registros de protección contra amenazas a Amazon S3, CloudWatch Logs y Amazon Data Firehose. Para obtener más información, consulte [Visualización y exportación del historial de eventos de los usuarios](cognito-user-pool-settings-adaptive-authentication.md#user-pool-settings-adaptive-authentication-event-user-history).  
**Más información**  
[Exportación de los registros de actividad de los usuarios en la protección contra amenazas](exporting-quotas-and-usage.md#exporting-quotas-and-usage-user-activity)

**Topics**
+ [Consideraciones y limitaciones en la protección contra amenazas](#cognito-user-pool-threat-protection-considerations)
+ [Activación de la protección contra amenazas en los grupos de usuarios](#cognito-user-pool-threat-protection-activating)
+ [Conceptos de aplicación de la protección contra amenazas](#cognito-user-pool-settings-threat-protection-threat-protection-enforcement)
+ [Protección contra amenazas para la autenticación estándar y la autenticación personalizada](#cognito-user-pool-settings-threat-protection-threat-protection-types)
+ [Requisitos previos de la protección contra amenazas](#cognito-user-pool-threat-protection-prerequisites)
+ [Configuración de la protección contra amenazas](#cognito-user-pool-settings-configure-threat-protection)
+ [Uso de la detección de credenciales comprometidas](cognito-user-pool-settings-compromised-credentials.md)
+ [Uso de la autenticación flexible](cognito-user-pool-settings-adaptive-authentication.md)
+ [Recopilación de datos para la protección contra amenazas en las aplicaciones](user-pool-settings-viewing-threat-protection-app.md)

## Consideraciones y limitaciones en la protección contra amenazas
<a name="cognito-user-pool-threat-protection-considerations"></a>

**Las opciones de protección contra amenazas varían según los flujos de autenticación**  
Amazon Cognito admite tanto la autenticación flexible como la detección de credenciales comprometidas con los flujos de autenticación `USER_PASSWORD_AUTH` y `ADMIN_USER_PASSWORD_AUTH`. Solo puede habilitar la autenticación flexible para `USER_SRP_AUTH`. No puede utilizar la protección contra amenazas con el inicio de sesión federado.

**Bloquee siempre la contribución para solicitar cuotas IPs**  
Las solicitudes bloqueadas de direcciones IP que figuran en una lista de excepciones **Bloquear siempre** del grupo de usuarios contribuye a las [cuotas de tasas de solicitudes](https://docs.aws.amazon.com/cognito/latest/developerguide/limits.html#category_operations) para los grupos de usuarios.

**La protección contra amenazas no aplica límites de tasas**  
Parte del tráfico malintencionado se caracteriza por un gran volumen de solicitudes, como los ataques de denegación de servicio (DDoS) distribuidos. Las clasificaciones de riesgo que Amazon Cognito aplica al tráfico entrante se basan en la solicitud y no tienen en cuenta el volumen de solicitudes. Las solicitudes individuales en un evento de gran volumen pueden recibir una puntuación de riesgo y una respuesta automática por motivos relacionados con la capa de aplicaciones y no por su papel en un ataque volumétrico. Para implementar defensas contra los ataques volumétricos en sus grupos de usuarios, añada la AWS WAF web ACLs. Para obtener más información, consulte [Asocie una ACL AWS WAF web a un grupo de usuarios](user-pool-waf.md).

**La protección contra amenazas no afecta a las solicitudes de M2M**  
La concesión de credenciales de cliente está destinada a la autorización machine-to-machine (M2M) sin conexión con las cuentas de usuario. La protección contra amenazas solo supervisa las cuentas de usuario y contraseñas de su grupo de usuarios. Para implementar funciones de seguridad en su actividad M2M, tenga en cuenta las capacidades de monitoreo de AWS WAF las tasas de solicitudes y el contenido. Para obtener más información, consulte [Asocie una ACL AWS WAF web a un grupo de usuarios](user-pool-waf.md).

## Activación de la protección contra amenazas en los grupos de usuarios
<a name="cognito-user-pool-threat-protection-activating"></a>

------
#### [ Amazon Cognito user pools console ]

**Cómo activar la protección contra amenazas para un grupo de usuarios**

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

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. Si aún no lo ha hecho, active el plan de características Plus desde el menú **Configuración**.

1. Seleccione el menú **Protección contra amenazas** y **Activar**.

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

------
#### [ API ]

Configura tu plan de funciones como Plus en una solicitud de [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)API [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)o en una solicitud. El siguiente ejemplo parcial del cuerpo de la solicitud establece la protección contra amenazas en el modo de función completa. Para ver un ejemplo de solicitud completo, consulte [Ejemplos](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#API_CreateUserPool_Examples).

```
"UserPoolAddOns": { 
      "AdvancedSecurityMode": "ENFORCED"
   }
```

------

La protección contra amenazas es el término colectivo que designa a las características que supervisan las operaciones de los usuarios en busca de indicios de apropiación de cuentas y responden automáticamente para proteger las cuentas de usuario afectadas. Puede aplicar la configuración de protección contra amenazas a los usuarios cuando inician sesión con flujos de autenticación estándar y personalizados.

La protección contra amenazas [genera registros](cognito-user-pool-settings-adaptive-authentication.md#user-pool-settings-adaptive-authentication-event-user-history) que detallan el inicio y el cierre de sesión de los usuarios y otras actividades. Puede exportar estos registros a un sistema de terceros. Para obtener más información, consulte [Visualización y exportación del historial de eventos de los usuarios](cognito-user-pool-settings-adaptive-authentication.md#user-pool-settings-adaptive-authentication-event-user-history).

## Conceptos de aplicación de la protección contra amenazas
<a name="cognito-user-pool-settings-threat-protection-threat-protection-enforcement"></a>

La protección contra amenazas comienza en un modo de *solo auditoría,* en el que el grupo de usuarios supervisa la actividad de los usuarios, asigna los niveles de riesgo y genera registros. Como práctica recomendada, ejecute el modo de solo auditoría durante dos semanas o más antes de activar el *modo de función completa*. Este modo incluye un conjunto de reacciones automáticas ante la detección de actividades peligrosas y contraseñas comprometidas. Con el modo de solo auditoría, puede supervisar las evaluaciones de amenazas que realiza Amazon Cognito. También puede [proporcionar comentarios](cognito-user-pool-settings-adaptive-authentication.md#user-pool-settings-adaptive-authentication-feedback) que servirán para entrenar la característica sobre falsos positivos y negativos.

Puede configurar la aplicación de la protección contra amenazas en el nivel del grupo de usuarios para que abarque a todos los clientes de aplicaciones del grupo de usuarios y en el nivel de los clientes de aplicaciones individuales. Las configuraciones de protección contra amenazas de los clientes de aplicación anulan la configuración del grupo de usuarios. Para configurar la protección contra amenazas de un cliente de aplicación, en la consola de Amazon Cognito, en el menú **Clientes de aplicación** de su grupo de usuarios, vaya a la configuración del cliente de aplicación. Allí, en **Utilizar configuración de nivel de cliente**, configure la aplicación de la protección exclusivamente para el cliente de aplicación.

Además, puede configurar la protección contra amenazas por separado para los tipos de autenticación estándar y personalizada.

## Protección contra amenazas para la autenticación estándar y la autenticación personalizada
<a name="cognito-user-pool-settings-threat-protection-threat-protection-types"></a>

Las formas de configuración de la protección contra amenazas dependen del tipo de autenticación que realice en el grupo de usuarios y en los clientes de aplicaciones. Cada uno de los siguientes tipos de autenticación puede tener su propio modo de aplicación y respuestas automáticas.

**Autenticación estándar**  
La *autenticación estándar* consiste en el inicio de sesión, el cierre de sesión y la administración de contraseñas de los usuarios con flujos de nombre de usuario y contraseña, y en el inicio de sesión administrado. La protección contra amenazas de Amazon Cognito supervisa las operaciones en busca de indicadores de riesgo cuando se inicia sesión con el inicio de sesión administrado o se utilizan los siguientes parámetros de la API `AuthFlow`:    
**[InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-AuthFlow)**  
`USER_PASSWORD_AUTH`, `USER_SRP_AUTH`. La característica de credenciales comprometidas no tiene acceso a las contraseñas en inicio de sesión con `USER_SRP_AUTH` y no supervisa los eventos relacionados con este flujo ni actúa en consecuencia.  
**[AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-AuthFlow)**  
`ADMIN_USER_PASSWORD_AUTH`, `USER_SRP_AUTH`. La característica de credenciales comprometidas no tiene acceso a las contraseñas en inicio de sesión con `USER_SRP_AUTH` y no supervisa los eventos relacionados con este flujo ni actúa en consecuencia.
Puede configurar el **Modo de cumplimiento** de la autenticación estándar en las opciones **Solo auditoría** o **Función completa**. Para deshabilitar la supervisión de amenazas para la autenticación estándar, establezca la protección contra amenazas en **Sin aplicación**.

**Autenticación personalizada**  
La *autenticación personalizada* consiste en el inicio de sesión del usuario con [desencadenadores de Lambda de desafío personalizados](user-pool-lambda-challenge.md). No puede realizar una autenticación personalizada en el inicio de sesión administrado. La protección contra amenazas de Amazon Cognito supervisa las operaciones en busca de indicadores de riesgo cuando se inicia sesión con el parámetro `AuthFlow` de la API `CUSTOM_AUTH` de `InitiateAuth` y `AdminInitiateAuth`.  
Puede configurar el **Modo de cumplimiento** de la autenticación personalizada en las opciones **Solo auditoría**, **Función completa** o **Sin aplicación**. La opción **Sin aplicación** desactiva la supervisión de amenazas en la autenticación personalizada sin que afecte a las características de protección contra amenazas.

## Requisitos previos de la protección contra amenazas
<a name="cognito-user-pool-threat-protection-prerequisites"></a>

Antes de comenzar, necesitará lo siguiente:
+ Un grupo de usuarios con un cliente de aplicación. Para obtener más información, consulte [Introducción a los grupos de usuarios](getting-started-user-pools.md).
+ Establezca la autenticación multifactor (MFA) en **Optional (Opcional)** en la consola de Amazon Cognito para utilizar la característica de autenticación flexible basada en riesgos. Para obtener más información, consulte [Adición de MFA a un grupo de usuarios.](user-pool-settings-mfa.md).
+ Si utiliza notificaciones por correo electrónico, diríjase a la [consola de Amazon SES](https://console.aws.amazon.com/ses/home) para configurar y verificar un dominio o una dirección de correo electrónico con el fin de usar notificaciones por correo electrónico. Para obtener más información sobre Amazon SES, consulte [Verificación de identidades en Amazon SES](https://docs.aws.amazon.com/ses/latest/dg/verify-addresses-and-domains.html).

## Configuración de la protección contra amenazas
<a name="cognito-user-pool-settings-configure-threat-protection"></a>

Siga estas instrucciones para configurar la protección contra amenazas del grupo de usuarios.

**nota**  
Para establecer una configuración de protección contra amenazas diferente para un cliente de aplicación en la consola de grupos de usuarios de Amazon Cognito, seleccione el cliente de aplicación en el menú **Clientes de aplicación** y elija **Utilizar configuración de nivel de cliente**.

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

**Cómo configurar la protección contra amenazas para un grupo de usuarios**

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

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ú **Protección contra amenazas** y **Activar**.

1. Elija el método de protección contra amenazas que desee configurar: **Autenticación estándar y personalizada**. Puede configurar diferentes modos de aplicación para la autenticación personalizada y estándar, pero ambas comparten la configuración de las respuestas automatizadas en el modo **Función completa**.

1. Seleccione **Editar**.

1. Elija un **Modo de aplicación**. Para empezar a responder inmediatamente a los riesgos detectados, seleccione **Función completa** y configure las respuestas automatizadas para las credenciales en riesgo y la autenticación flexible. Para recopilar información en los registros a nivel de usuario y en ellos CloudWatch, seleccione **Solo auditoría**.

   Recomendamos que mantenga la protección contra amenazas en el modo de auditoría durante dos semanas antes de activar las acciones. Durante este tiempo, Amazon Cognito puede aprender los patrones de uso de los usuarios de la aplicación y, por su parte, puede enviar comentarios sobre eventos para ajustar las respuestas.

1. Si seleccionó **Audit only** (Solo auditoría), elija **Save changes** (Guardar los cambios). Si seleccionó **Full function (Función completa)**:

   1. Seleccione si va a realizar una acción **Custom (Personalizada)** o a utilizar los **Cognito defaults (Valores predeterminados de Cognito)** para responder ante supuestas **Compromised credentials (Credenciales atacadas)**. Los **Cognito defaults (Valores predeterminados de Cognito)** son:

      1. Detectar credenciales atacadas en**Sign-in (Inicio de sesión)**, **Sign-up (Registro)**, y **Password change (Cambio de contraseña)**.

      1. Responder ante credenciales atacadas con la acción **Block sign-in (Bloquear inicio de sesión)**.

   1. Si ha seleccionado acciones **Custom** para **Credenciales comprometidas**, elija las acciones del grupo de usuarios que Amazon Cognito utilizará para la **Detección de eventos** y las **Respuestas contra credenciales atacadas** que desearía que Amazon Cognito realizara. Puede**Block sign-in (Bloquear inicio de sesión)** o **Allow sign-in (Permitir inicio de sesión)** con supuestas credenciales atacadas.

   1. Elija cómo responder a los intentos de inicio de sesión maliciosos en **Adaptive authentication (Autenticación flexible)**. Seleccione si va a realizar una acción **Custom** (Personalizada) o a utilizar los **Cognito defaults** (Valores predeterminados de Cognito) para responder ante supuestas Compromised credentials (Credenciales atacadas). Cuando selecciona **Cognito defaults** (Valores predeterminados de Cognito), Amazon Cognito bloquea el inicio de sesión en todos los niveles de riesgo y no notifica al usuario.

   1. Si selecciona acciones **Custom** (Personalizadas) para **Adaptive Authentication** (Autenticación flexible), elija acciones de **Automatic risk response** (Respuesta automática al riesgo) que Amazon Cognito llevará a cabo en respuesta a los riesgos detectados en función del nivel de gravedad. Cuando asigna una respuesta a un nivel de riesgo, no se puede asignar una respuesta menos restrictiva a un nivel de riesgo más alto. Puede asignar las siguientes respuestas a los niveles de riesgo:

      1. **Allow sign-in** (Permitir inicio de sesión): No se realizan acciones preventivas.

      1. **Optional MFA** (MFA opcional): si el usuario tiene MFA configurada, Amazon Cognito siempre requerirá que el usuario proporcione un SMS adicional o un factor de contraseña temporal de un solo uso (TOTP) cuando inicie sesión. Si el usuario no tiene MFA configurada, puede seguir iniciando sesión normalmente.

      1. **Require MFA** (Requerir MFA): si el usuario tiene MFA configurada, Amazon Cognito siempre requerirá que el usuario proporcione un SMS adicional o un factor de contraseña temporal de un solo uso (TOTP) cuando inicie sesión. Si el usuario no tiene MFA configurada, Amazon Cognito le pedirá que configure la MFA. Antes de requerir automáticamente la MFA para los usuarios, configure un mecanismo en la aplicación para capturar números de teléfono para la MFA por SMS o para registrar aplicaciones autenticadoras para la MFA por TOTP.

      1. **Block sign-in (Bloquear inicio de sesión)**: impide que el usuario inicie sesión.

      1. **Notify user (Notificar al usuario)**: envía un mensaje de correo electrónico al usuario con información sobre el riesgo que Amazon Cognito detectó junto con la respuesta que se ha realizado. Puede personalizar plantillas de correo electrónico para los mensajes que envíe.

1. Si eligió **Notify user (Notificar al usuario)** en el paso anterior, puede personalizar la configuración de entrega de correo electrónico y las plantillas de menajes de correo electrónico para una autenticación flexible.

   1. En **Configuración de correo electrónico**, elija las opciones **Región SES**, **Dirección de correo electrónico del REMITENTE**, **Nombre del REMITENTE** y **Dirección de correo electrónico de RESPUESTA** que desea utilizar con la autenticación flexible. Para obtener más información sobre cómo integrar los mensajes de correo electrónico del grupo de usuarios con Amazon Simple Email Service, consulte [Configuración de correo electrónico para grupos de usuarios de Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-email.html).  
![\[Historial de eventos del usuario\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/cup-advanced-security-ses-notification.png)

   1. Expanda **Email templates** (Plantillas de correo electrónico) para personalizar las notificaciones de autenticación flexible con versiones de correo electrónico en HTML y de texto sin formato. Para obtener más información sobre las plantillas de mensajes de correo electrónico, consulte [Plantillas de mensaje](cognito-user-pool-settings-message-customizations.md#cognito-user-pool-settings-message-templates).

1. **Amplíe **las excepciones de direcciones IP** para crear una lista de rangos de direcciones o rangos de IPv6 direcciones que **siempre** estén permitidos IPv4 o bloqueados, independientemente de la evaluación de los riesgos de protección contra amenazas.** Especifique los intervalos de direcciones IP en [CIDR notation](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation) (Notación CIDR) (como por ejemplo: 192.168.100.0/24).

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

------
#### [ API (user pool) ]

Para establecer la configuración de protección contra amenazas para un grupo de usuarios, envíe una solicitud de [SetRiskConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetRiskConfiguration.html)API que incluya un `UserPoolId` parámetro, pero no uno. `ClientId` A continuación, se muestra un ejemplo de cuerpo de solicitud de un grupo de usuarios. Esta configuración de riesgo ejecuta una serie de acciones cada vez mayores en función de la gravedad del riesgo y envía notificaciones a los usuarios en todos los niveles de riesgo. Aplica un bloqueo de credenciales comprometidas a las operaciones de registro.

Para aplicar esta configuración, debe `AdvancedSecurityMode` configurarla `ENFORCED` en una solicitud independiente [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)o de [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)API. Para obtener más información sobre las plantillas de marcadores de posición, como `{username}` en este ejemplo, consulte [Configuración de los mensajes de verificación, invitación, autenticación y MFA](cognito-user-pool-settings-message-customizations.md).

```
{
   "AccountTakeoverRiskConfiguration": { 
      "Actions": { 
         "HighAction": { 
            "EventAction": "MFA_REQUIRED",
            "Notify": true
         },
         "LowAction": { 
            "EventAction": "NO_ACTION",
            "Notify": true
         },
         "MediumAction": { 
            "EventAction": "MFA_IF_CONFIGURED",
            "Notify": true
         }
      },
      "NotifyConfiguration": { 
         "BlockEmail": { 
            "Subject": "You have been blocked for suspicious activity",
            "TextBody": "We blocked {username} at {login-time} from {ip-address}."
         },
         "From": "admin@example.com",
         "MfaEmail": { 
            "Subject": "Suspicious activity detected, MFA required",
            "TextBody": "Unexpected sign-in from {username} on device {device-name}. You must use MFA."
         },
         "NoActionEmail": { 
            "Subject": "Suspicious activity detected, secure your user account",
            "TextBody": "We noticed suspicious sign-in activity by {username} from {city}, {country} at {login-time}. If this was not you, reset your password."
         },
         "ReplyTo": "admin@example.com",
         "SourceArn": "arn:aws:ses:us-west-2:123456789012:identity/admin@example.com"
      }
   },
   "CompromisedCredentialsRiskConfiguration": { 
      "Actions": { 
         "EventAction": "BLOCK"
      },
      "EventFilter": [ "SIGN_UP" ]
   },
   "RiskExceptionConfiguration": { 
      "BlockedIPRangeList": [ "192.0.2.0/24","198.51.100.0/24" ],
      "SkippedIPRangeList": [ "203.0.113.0/24" ]
   },
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

------
#### [ API (app client) ]

Para establecer la configuración de protección contra amenazas para un cliente de aplicaciones, envía una solicitud de [SetRiskConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetRiskConfiguration.html)API que incluya un `UserPoolId` parámetro y un `ClientId` parámetro. A continuación, se muestra un ejemplo de cuerpo de solicitud de un cliente de aplicación. Esta configuración de riesgo es más estricta que la configuración del grupo de usuarios y bloquea las entradas de alto riesgo. También aplica bloques de credenciales comprometidas a las operaciones de registro, inicio de sesión y restablecimiento de contraseñas.

Para aplicar esta configuración, debes `AdvancedSecurityMode` configurarla `ENFORCED` en una solicitud independiente [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html)o de [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)API. Para obtener más información sobre las plantillas de marcadores de posición, como `{username}` en este ejemplo, consulte [Configuración de los mensajes de verificación, invitación, autenticación y MFA](cognito-user-pool-settings-message-customizations.md).

```
{
   "AccountTakeoverRiskConfiguration": { 
      "Actions": { 
         "HighAction": { 
            "EventAction": "BLOCK",
            "Notify": true
         },
         "LowAction": { 
            "EventAction": "NO_ACTION",
            "Notify": true
         },
         "MediumAction": { 
            "EventAction": "MFA_REQUIRED",
            "Notify": true
         }
      },
      "NotifyConfiguration": { 
         "BlockEmail": { 
            "Subject": "You have been blocked for suspicious activity",
            "TextBody": "We blocked {username} at {login-time} from {ip-address}."
         },
         "From": "admin@example.com",
         "MfaEmail": { 
            "Subject": "Suspicious activity detected, MFA required",
            "TextBody": "Unexpected sign-in from {username} on device {device-name}. You must use MFA."
         },
         "NoActionEmail": { 
            "Subject": "Suspicious activity detected, secure your user account",
            "TextBody": "We noticed suspicious sign-in activity by {username} from {city}, {country} at {login-time}. If this was not you, reset your password."
         },
         "ReplyTo": "admin@example.com",
         "SourceArn": "arn:aws:ses:us-west-2:123456789012:identity/admin@example.com"
      }
   },
   "ClientId": "1example23456789",
   "CompromisedCredentialsRiskConfiguration": { 
      "Actions": { 
         "EventAction": "BLOCK"
      },
      "EventFilter": [ "SIGN_UP", "SIGN_IN", "PASSWORD_CHANGE" ]
   },
   "RiskExceptionConfiguration": { 
      "BlockedIPRangeList": [ "192.0.2.1/32","192.0.2.2/32" ],
      "SkippedIPRangeList": [ "192.0.2.3/32","192.0.2.4/32" ]
   },
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

------

# Uso de la detección de credenciales comprometidas
<a name="cognito-user-pool-settings-compromised-credentials"></a>

Amazon Cognito puede detectar si el nombre de usuario y la contraseña de un usuario se han visto comprometidos en otro sitio. Esto puede ocurrir cuando los usuarios reutilizan las credenciales en más de un sitio, o cuando utilizan contraseñas poco seguras. Amazon Cognito comprueba los [usuarios locales](cognito-terms.md#terms-localuser) que inician sesión con nombre de usuario y contraseña, en el inicio de sesión administrado y con la API de Amazon Cognito.

En la consola de Amazon Cognito, en el menú **Protección contra amenazas**, puede configurar **Credenciales comprometidas**. Configure **Event detection** (Detección de eventos) para elegir los eventos de usuario que desea supervisar en busca de credenciales comprometidas. Configure **Compromised credentials responses** (Respuestas ante credenciales comprometidas) para elegir si desea permitir o bloquear al usuario si se han detectado credenciales comprometidas. Amazon Cognito puede comprobar si hay credenciales comprometidas durante el inicio de sesión, el registro o los cambios de contraseña.

Si selecciona **Permitir inicio de sesión**, puede revisar Amazon CloudWatch Logs para supervisar las evaluaciones que Amazon Cognito realiza sobre los eventos de los usuarios. Para obtener más información, consulte [Visualización de las métricas de protección contra amenazas](metrics-for-cognito-user-pools.md#user-pool-settings-viewing-threat-protection-metrics). Cuando elige **Block sign-in** (Bloquear el inicio de sesión), Amazon Cognito impide el inicio de sesión de los usuarios que utilizan credenciales comprometidas. Cuando Amazon Cognito bloquea el inicio de sesión de un usuario, establece el [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UserType.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UserType.html) de usuario en `RESET_REQUIRED`. Un usuario con un estado `RESET_REQUIRED` debe cambiar su contraseña antes de poder iniciar sesión de nuevo.

Las credenciales comprometidas pueden comprobar las contraseñas de las siguientes actividades de usuario.

**Sign-up (Registro)**  
Su grupo de usuarios comprueba las contraseñas que los usuarios transmiten durante la [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)operación y en la página de registro del inicio de sesión gestionado para ver si hay indicios de que están en peligro.

**Inicio de sesión**  
Su grupo de usuarios comprueba las contraseñas que los usuarios envían al iniciar sesión con contraseñas para detectar indicios de que están en peligro. Amazon Cognito puede revisar el `ADMIN_USER_PASSWORD_AUTH` flujo de entrada [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html), el `USER_PASSWORD_AUTH` flujo de entrada [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)y la `PASSWORD` opción del `USER_AUTH` flujo en ambos.  
En este momento, Amazon Cognito no comprueba si hay credenciales comprometidas para las operaciones de inicio de sesión con el flujo Secure Remote Password (SRP). SRP envía una prueba de contraseña cifrada durante el inicio de sesión. Amazon Cognito no tiene acceso a las contraseñas internamente, por lo que solo puede evaluar una contraseña que el cliente le transmita en texto plano.

**Restablecimiento de la contraseña**  
Con la operación de [ConfirmForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmForgotPassword.html)autoservicio de restablecimiento de contraseñas, su grupo de usuarios comprueba si hay indicios de riesgo en las operaciones que establecen contraseñas para nuevos usuarios. El código necesario para esta operación lo genera [ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)y [AdminResetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminResetUserPassword.html).  
Las credenciales comprometidas no comprueban las contraseñas temporales o permanentes establecidas por el administrador. [AdminSetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserPassword.html) Sin embargo, en el caso de las contraseñas temporales, el grupo de usuarios comprueba las contraseñas en función de las respuestas al `NEW_PASSWORD_REQUIRED` desafío en y. [RespondToAuthChallenge[AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)

Para añadir protecciones contra credenciales atacadas a un grupo de usuarios, consulte [Seguridad avanzada con protección contra amenazas](cognito-user-pool-settings-threat-protection.md).

# Uso de la autenticación flexible
<a name="cognito-user-pool-settings-adaptive-authentication"></a>

Con la autenticación flexible, puede configurar el grupo de usuarios para bloquear los inicios de sesión sospechosos o agregar la autenticación de segundo factor en respuesta a un aumento del nivel de riesgo. Para cada intento de inicio de sesión, Amazon Cognito genera una puntuación de riesgo que indica la probabilidad de que la solicitud de inicio de sesión proceda de un origen comprometido. Esta puntuación de riesgo se basa en los factores de dispositivo y usuario que su aplicación proporciona y otros factores que Amazon Cognito deduce de la solicitud. Algunos factores que contribuyen a la evaluación del riesgo por parte de Amazon Cognito son la dirección IP , el agente de usuario y la distancia geográfica con respecto a otros intentos de inicio de sesión. La autenticación adaptativa puede activarse o requerir la autenticación multifactor (MFA) para un usuario de su grupo de usuarios cuando Amazon Cognito detecta un riesgo en la sesión de un usuario y este aún no ha elegido un método de MFA. Cuando se activa la MFA para un usuario, siempre se le presenta el desafío de proporcionar o configurar un segundo factor durante la autenticación, independientemente de cómo se haya configurado la autenticación adaptativa. Desde el punto de vista del usuario, la aplicación ofrece ayuda para configurar la MFA y, opcionalmente, Amazon Cognito le impide volver a iniciar sesión hasta que haya configurado un factor adicional.

Amazon Cognito publica métricas sobre los intentos de inicio de sesión, sus niveles de riesgo y las impugnaciones fallidas a Amazon. CloudWatch Para obtener más información, consulte [Visualización de las métricas de protección contra amenazas](metrics-for-cognito-user-pools.md#user-pool-settings-viewing-threat-protection-metrics).

Para añadir la autenticación flexible a un grupo de usuarios, consulte [Seguridad avanzada con protección contra amenazas](cognito-user-pool-settings-threat-protection.md).

**Topics**
+ [Información general sobre la autenticación flexible](#security-cognito-user-pool-settings-adaptive-authentication-overview)
+ [Adición de datos de sesión y dispositivos de usuario a las solicitudes de API](#user-pool-settings-adaptive-authentication-device-fingerprint)
+ [Visualización y exportación del historial de eventos de los usuarios](#user-pool-settings-adaptive-authentication-event-user-history)
+ [Suministro de comentarios sobre los eventos](#user-pool-settings-adaptive-authentication-feedback)
+ [Envío de mensajes de notificación](#user-pool-settings-adaptive-authentication-messages)

## Información general sobre la autenticación flexible
<a name="security-cognito-user-pool-settings-adaptive-authentication-overview"></a>

En la consola de Amazon Cognito, en el menú **Protección contra amenazas**, puede elegir la configuración de la autenticación flexible, como las acciones que se deben realizar en los distintos niveles de riesgo y la personalización de los mensajes de notificación para los usuarios. Puede asignar una configuración de protección contra amenazas global a todos sus clientes de aplicación, pero aplicar una configuración de nivel de cliente a los clientes de aplicaciones individuales.

La autenticación adaptativa de Amazon Cognito asigna uno de los siguientes niveles de riesgo a cada sesión de usuario: **alto**, **medio**, **bajo** o **sin riesgo**.

Estudie bien sus opciones cuando cambie **Enforcement method** (Método de aplicación) de **Audit-only** (Solo auditoría) a **Full-function** (Función completa). Las respuestas automáticas que se aplican a los niveles de riesgo influyen en el nivel de riesgo que Amazon Cognito asigna a las sesiones de usuario posteriores con las mismas características. Por ejemplo, si decide no realizar ninguna acción o marcar **Allow** (Permitir) en las sesiones de usuario que Amazon Cognito evalúa inicialmente como de alto riesgo, Amazon Cognito considera que las sesiones similares tienen un riesgo menor.


**Para cada nivel de riesgo, puede elegir entre las opciones siguientes:**  

|  Opción  |  Action  | 
| --- | --- | 
| Permitir | Los usuarios pueden iniciar sesión sin un factor adicional. | 
| MFA opcional | Los usuarios que tengan configurado un segundo factor deberán superar un segundo desafío de segundo factor para iniciar sesión. Los segundos factores disponibles son un número de teléfono para SMS y un token de software TOTP. Los usuarios que no tienen un segundo factor configurado pueden iniciar sesión con un solo conjunto de credenciales. | 
| Requerir MFA | Los usuarios que tengan configurado un segundo factor deberán superar un desafío de segundo factor para iniciar sesión. Amazon Cognito bloquea el inicio de sesión de los usuarios que no hayan configurado un segundo factor. | 
| Bloque | Amazon Cognito bloquea todos los intentos de inicio de sesión con el nivel de riesgo designado. | 

**nota**  
No es necesario verificar los números de teléfono para utilizarlos como segundo factor de autenticación para SMS.

## Adición de datos de sesión y dispositivos de usuario a las solicitudes de API
<a name="user-pool-settings-adaptive-authentication-device-fingerprint"></a>

Puede recopilar y transferir información sobre la sesión de su usuario a la protección contra amenazas de Amazon Cognito cuando usa la API para registrarlo, iniciarlo y restablecer su contraseña. Esta información incluye la dirección IP de su usuario y un identificador de dispositivo único.

Es posible que tenga un dispositivo de red intermedio entre sus usuarios y Amazon Cognito, como un servicio proxy o un servidor de aplicaciones. Puede recopilar los datos de contexto de los usuarios y pasarlos a Amazon Cognito para que la autenticación adaptativa calcule el riesgo en función de las características del punto de conexión de usuario, en lugar de su servidor o proxy. Si la aplicación del lado del cliente llama directamente a las operaciones de la API de Amazon Cognito, la autenticación adaptativa registra automáticamente la dirección IP de origen. Sin embargo, no registra otra información del dispositivo, como el `user-agent`, a menos que también recoja una huella digital del dispositivo.

Genere estos datos con la biblioteca de recopilación de datos contextuales de Amazon Cognito y envíelos a Amazon Cognito Threat Protection con [ContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ContextDataType.html)los parámetros y. [UserContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UserContextDataType.html) La biblioteca de recopilación de datos contextuales se incluye en. AWS SDKs Para obtener más información, consulte [Integración de la autenticación y la autorización de Amazon Cognito con aplicaciones web y móviles](cognito-integrate-apps.md). Puede enviar `ContextData` si tiene el plan de características Plus. Para obtener más información, consulte [Configuración de la protección contra amenazas](cognito-user-pool-settings-threat-protection.md#cognito-user-pool-settings-configure-threat-protection).

Cuando llame a las siguientes operaciones de API autenticadas de Amazon Cognito desde el servidor de aplicaciones, pase la IP del dispositivo del usuario en el parámetro `ContextData`. Además, debe transferir el nombre del servidor, la ruta del servidor y los datos de la huella dactilar codificada del dispositivo.
+ [AdminInitiateAuth ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)
+ [AdminRespondToAuthChallenge ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)

Cuando llama a operaciones de API sin autenticar de Amazon Cognito, puede enviar `UserContextData` a la protección contra amenazas de Amazon Cognito. Estos datos incluyen una huella digital de dispositivo en el parámetro `EncodedData`. También puede enviar un parámetro `IpAddress` en su `UserContextData` si cumple las condiciones siguientes:
+ Su grupo de usuarios está incluido en el plan de características Plus. Para obtener más información, consulte [Planes de características de grupo de usuarios](cognito-sign-in-feature-plans.md).
+ El cliente de aplicación tiene un secreto de cliente. Para obtener más información, consulte [Ajustes específicos de una aplicación en los clientes de aplicación](user-pool-settings-client-apps.md).
+ Ha activado **Accept additional user context data** (Aceptar datos de contexto de usuario adicionales) en el cliente de aplicación. Para obtener más información, consulte [Aceptación de datos de contexto de usuario adicionales (Consola de administración de AWS)](#user-pool-settings-adaptive-authentication-accept-user-context-data).

Su aplicación puede rellenar el parámetro `UserContextData` con datos codificados de huellas digitales del dispositivo y la dirección IP del dispositivo del usuario en las siguientes operaciones de API no autenticadas de Amazon Cognito.
+ [InitiateAuth ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)
+ [RespondToAuthChallenge ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)
+ [SignUp ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)
+ [ConfirmSignUp ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html)
+ [ForgotPassword ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)
+ [ConfirmForgotPassword ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmForgotPassword.html)
+ [ResendConfirmationCode ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ResendConfirmationCode.html)

### Aceptación de datos de contexto de usuario adicionales (Consola de administración de AWS)
<a name="user-pool-settings-adaptive-authentication-accept-user-context-data"></a>

El grupo de usuarios acepta una dirección IP en un parámetro `UserContextData` después de activar la característica **Accept additional user context data** (Aceptar datos de contexto de usuario adicionales). No es necesario activar esta característica si:
+ Sus usuarios solo inician sesión con operaciones de API autenticadas, por ejemplo [AdminInitiateAuth ](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html), y usted usa el `ContextData` parámetro.
+ Solo desea que las operaciones de API no autenticadas envíen una huella digital del dispositivo, pero no una dirección IP, a la protección contra amenazas de Amazon Cognito.

Actualice el cliente de aplicación como se indica a continuación en la consola de Amazon Cognito para agregar compatibilidad con datos de contexto de usuario adicionales.

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 **Manage your User Pools** (Administrar sus grupos de usuarios) y elija el grupo de usuarios que desea editar.

1. Seleccione el menú **Clientes de aplicación**.

1. Elija un cliente de aplicación o cree uno. Para obtener más información, consulte [Configuración de un cliente de aplicación para grupos de usuarios](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-app-idp-settings.html).

1. Elija **Edit (Editar)** desde el contenedor de **App client information (Información del cliente de aplicación)**.

1. En **Advanced authentication settings (Configuración avanzada de autenticación)** del cliente de aplicación, elija **Accept additional user context data (Aceptar datos de contexto de usuario adicionales)**.

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

Para configurar el cliente de la aplicación para que acepte datos de contexto de usuario en la API de Amazon Cognito, `EnablePropagateAdditionalUserContextData` configúrelo `true` en una solicitud [CreateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html)o [UpdateUserPoolClient](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html). Para obtener más información sobre cómo trabajar con la protección contra amenazas en la aplicación web o móvil, consulte [Recopilación de datos para la protección contra amenazas en las aplicaciones](user-pool-settings-viewing-threat-protection-app.md). Recopile los datos contextuales del usuario desde el lado del cliente cuando la aplicación llame a Amazon Cognito desde el servidor. A continuación, se muestra un ejemplo en el que se utiliza el método JavaScript `getData` SDK.

```
var EncodedData = AmazonCognitoAdvancedSecurityData.getData(username, userPoolId, clientId);
```

Cuando diseñe la aplicación para utilizar la autenticación flexible, le recomendamos que incorpore el último SDK de Amazon Cognito a la aplicación. La última versión del SDK recopila la información de las huellas dactilares del dispositivo como el ID, el modelo y la zona horaria del dispositivo. Para obtener más información sobre Amazon Cognito SDKs, consulte [Instalar un SDK de grupo de usuarios](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-sdk-links.html). La protección contra amenazas de Amazon Cognito solo guarda y asigna una puntuación de riesgo a los eventos que la aplicación envía en el formato correcto. Si Amazon Cognito devuelve una respuesta de error, compruebe que la solicitud incluye un hash secreto válido y que el `IPaddress` parámetro es una dirección IPv4 OR IPv6 válida.

**Recursos `ContextData` y `UserContextData`**
+ AWS Amplify SDK para Android: [GetUserContextData](https://github.com/aws-amplify/aws-sdk-android/blob/main/aws-android-sdk-cognitoidentityprovider/src/main/java/com/amazonaws/mobileconnectors/cognitoidentityprovider/CognitoUserPool.java#L626)
+ AWS Amplify SDK para iOS: [userContextData](https://github.com/aws-amplify/aws-sdk-ios/blob/d3cd4fa0086b526f2f5c9c6c58880c9da7004c66/AWSCognitoIdentityProviderASF/AWSCognitoIdentityProviderASF.m#L21)
+ JavaScript: [amazon-cognito-advanced-security-data.min.js](https://amazon-cognito-assets.us-east-1.amazoncognito.com/amazon-cognito-advanced-security-data.min.js)

## Visualización y exportación del historial de eventos de los usuarios
<a name="user-pool-settings-adaptive-authentication-event-user-history"></a>

Amazon Cognito genera un registro por cada evento de autenticación realizado por un usuario cuando se habilita la protección contra amenazas. De forma predeterminada, puede ver los registros de los usuarios en el menú **Usuarios** de la consola de Amazon Cognito o mediante la operación de la [AdminListUserAuthEvents](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminListUserAuthEvents.html)API. También puede exportar estos eventos a un sistema externo como CloudWatch Logs, Amazon S3 o Amazon Data Firehose. La característica de exportación hace que la información de seguridad sobre la actividad de los usuarios en la aplicación sea más accesible a sus propios sistemas de análisis de seguridad.

**Topics**
+ [Visualización del historial de eventos de los usuarios (Consola de administración de AWS)](#user-pool-settings-adaptive-authentication-event-user-history-console)
+ [Visualización del historial de eventos de los usuarios (API/CLI)](#user-pool-settings-adaptive-authentication-event-user-history-api-cli)
+ [Exportación de eventos de autenticación de usuarios](#user-pool-settings-adaptive-authentication-event-user-history-exporting)

### Visualización del historial de eventos de los usuarios (Consola de administración de AWS)
<a name="user-pool-settings-adaptive-authentication-event-user-history-console"></a>

Para ver el historial de inicios de sesión de un usuario, puede elegir el usuario en el menú **Usuarios** en la consola de Amazon Cognito. Amazon Cognito conserva el historial de eventos del usuario durante de dos años.

![\[Historial de eventos del usuario\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/cup-advanced-security-event-history.png)


Cada evento de inicio de sesión tiene un ID de evento. El evento también tiene los datos contextuales correspondientes, como la ubicación, los detalles del dispositivo y los resultados de detección de riesgos.

También puede correlacionar el ID de evento con el token que Amazon Cognito emitió en el momento en que registró el evento. El ID y los tokens de acceso incluyen este ID de evento en su carga. Amazon Cognito también correlaciona el uso de tokens de actualización con el ID de evento original. El ID de evento original permite localizar el ID de evento del inicio de sesión que dio lugar a la emisión de los tokens de Amazon Cognito. Esto le permite realizar un seguimiento del uso de un token en su sistema hasta un evento de autenticación en concreto. Para obtener más información, consulte [Descripción de los tokens web JSON para grupos de usuarios (JWTs)](amazon-cognito-user-pools-using-tokens-with-identity-providers.md).

### Visualización del historial de eventos de los usuarios (API/CLI)
<a name="user-pool-settings-adaptive-authentication-event-user-history-api-cli"></a>

[Puede consultar el historial de eventos del usuario con la operación de la API de Amazon Cognito [AdminListUserAuthEvents](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminListUserAuthEvents.html)o con AWS Command Line Interface (AWS CLI) con admin-list-user-auth -events.](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-list-user-auth-events.html)

------
#### [ AdminListUserAuthEvents request ]

El siguiente cuerpo de la solicitud de `AdminListUserAuthEvents` devuelve el registro de actividad más reciente de un usuario.

```
{
  "UserPoolId": "us-west-2_EXAMPLE", 
  "Username": "myexampleuser", 
  "MaxResults": 1
}
```

------
#### [ admin-list-user-auth-events request ]

La siguiente solicitud de `admin-list-user-auth-events` devuelve el registro de actividad más reciente de un usuario.

```
aws cognito-idp admin-list-user-auth-events --max-results 1 --username myexampleuser --user-pool-id us-west-2_EXAMPLE
```

------
#### [ Response ]

Amazon Cognito devuelve el mismo cuerpo de respuesta JSON a ambas solicitudes. El siguiente es un ejemplo de respuesta para un evento de inicio de sesión en el inicio de sesión administrado que no contenía factores de riesgo:

```
{
    "AuthEvents": [
        {
            "EventId": "[event ID]",
            "EventType": "SignIn",
            "CreationDate": "[Timestamp]",
            "EventResponse": "Pass",
            "EventRisk": {
                "RiskDecision": "NoRisk",
                "CompromisedCredentialsDetected": false
            },
            "ChallengeResponses": [
                {
                    "ChallengeName": "Password",
                    "ChallengeResponse": "Success"
                }
            ],
            "EventContextData": {
                "IpAddress": "192.168.2.1",
                "DeviceName": "Chrome 125, Windows 10",
                "Timezone": "-07:00",
                "City": "Bellevue",
                "Country": "United States"
            }
        }
    ],
    "NextToken": "[event ID]#[Timestamp]"
}
```

------

### Exportación de eventos de autenticación de usuarios
<a name="user-pool-settings-adaptive-authentication-event-user-history-exporting"></a>

Configure el grupo de usuarios para exportar eventos de los usuarios desde la protección contra amenazas hasta un sistema externo. Los sistemas externos compatibles (Amazon S3, CloudWatch Logs y Amazon Data Firehose) pueden añadir costes a su AWS factura por los datos que envíe o recupere. Para obtener más información, consulte [Exportación de los registros de actividad de los usuarios en la protección contra amenazas](exporting-quotas-and-usage.md#exporting-quotas-and-usage-user-activity).

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

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

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ú **Registrar la transmisión**. Seleccione **Editar**.

1. En **Estado de registro**, seleccione la casilla de verificación situada junto a **Activar la exportación del registro de actividad del usuario**.

1. En **Destino del registro**, elige el Servicio de AWS que quieres que gestione tus registros: **grupo de CloudWatch registros**, transmisión de **Amazon Data Firehose** o **bucket de S3**.

1. La opción que elija rellenará el selector de recursos con el tipo de recurso correspondiente. Seleccione un grupo de registro, un flujo o un bucket de la lista. También puede seleccionar el botón **Crear** Consola de administración de AWS para ir al servicio seleccionado y crear un recurso nuevo.

1. Seleccione **Guardar cambios**.

------
#### [ API ]

Elija un tipo de destino para los registros de actividad de los usuarios.

A continuación se muestra un ejemplo de cuerpo de solicitud `SetLogDeliveryConfiguration` que establece un flujo de Firehose como destino del registro.

```
{
   "LogConfigurations": [
      {
         "EventSource": "userAuthEvents",
         "FirehoseConfiguration": {
            "StreamArn": "arn:aws:firehose:us-west-2:123456789012:deliverystream/example-user-pool-activity-exported"
         },
         "LogLevel": "INFO"
      }
   ],
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

A continuación se muestra un ejemplo de cuerpo de solicitud `SetLogDeliveryConfiguration` que establece un bucket de Amazon S3 como destino del registro.

```
{
   "LogConfigurations": [
      {
         "EventSource": "userAuthEvents",
         "S3Configuration": { 
            "BucketArn": "arn:aws:s3:::amzn-s3-demo-logging-bucket"
         },
         "LogLevel": "INFO"
      }
   ],
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

A continuación, se muestra un ejemplo del cuerpo de una `SetLogDeliveryConfiguration` solicitud que establece un grupo de CloudWatch registros como destino del registro.

```
{
   "LogConfigurations": [
      {
         "EventSource": "userAuthEvents",
         "CloudWatchLogsConfiguration": { 
            "LogGroupArn": "arn:aws:logs:us-west-2:123456789012:log-group:DOC-EXAMPLE-LOG-GROUP"
         },
         "LogLevel": "INFO"
      }
   ],
   "UserPoolId": "us-west-2_EXAMPLE"
}
```

------

## Suministro de comentarios sobre los eventos
<a name="user-pool-settings-adaptive-authentication-feedback"></a>

Los comentarios sobre los eventos afectan a la evaluación de riesgos en tiempo real y mejoran el algoritmo de evaluación de riesgos a lo largo del tiempo. Puede proporcionar comentarios sobre la validez de los intentos de inicio de sesión a través de las operaciones de API y la consola de Amazon Cognito. 

**nota**  
Sus comentarios sobre el evento influyen en el nivel de riesgo que Amazon Cognito asigna a las sesiones de usuario posteriores con las mismas características.

En la consola de Amazon Cognito, elija un usuario en la pestaña **Usuarios** y seleccione **Proporcionar comentarios sobre el evento**. Puede revisar los detalles del evento y marcar **Set as valid** (Establecer como válido) o **Set as invalid** (Establecer como no válido).

La consola enumera el historial de inicios de sesión en los detalles del usuario en el menú **Usuarios**. Si selecciona una entrada, puede marcar el evento como válido o no válido. También puedes enviar comentarios a través de la operación [AdminUpdateAuthEventFeedback](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateAuthEventFeedback.html)de la API del grupo de usuarios y mediante el AWS CLI comando [admin-update-auth-event-feedback](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-update-auth-event-feedback.html). 

Al seleccionar **Set as valid** (Establecer como válido) en la consola de Amazon Cognito o proporcionar un valor `FeedbackValue` de `valid` en la API, le está indicando a Amazon Cognito que confía en una sesión de usuario en la que Amazon Cognito ha determinado que hay cierto nivel de riesgo. Al seleccionar **Set as invalid** (Definir como no válido) en la consola de Amazon Cognito o proporcionar un valor `FeedbackValue` de `invalid` en la API, le está indicando a Amazon Cognito que no confía en una sesión de usuario o no cree que Amazon Cognito haya determinado que tiene un nivel de riesgo suficiente.

## Envío de mensajes de notificación
<a name="user-pool-settings-adaptive-authentication-messages"></a>

Con la protección contra amenazas, Amazon Cognito puede notificar a los usuarios los intentos de inicio de sesión de riesgo. Amazon Cognito también puede solicitar a los usuarios que seleccionen enlaces para indicar si el inicio de sesión es válido o no. Amazon Cognito utiliza estos comentarios para mejorar la precisión de la detección de riesgos de su grupo de usuarios. 

**nota**  
Amazon Cognito solo envía mensajes de notificación a los usuarios cuando su acción genera una respuesta automática al riesgo: bloquear el inicio de sesión, permitir el inicio de sesión, configurar la MFA como opcional o requerir la MFA. Es posible que a algunas solicitudes se les asigne un nivel de riesgo, pero que no generen respuestas de riesgo automatizadas con autenticación flexible; en este caso, su grupo de usuarios no envía notificaciones. Por ejemplo, es posible que se registren contraseñas incorrectas con una clasificación de riesgo y que la respuesta de Amazon Cognito consista en no efectuar el inicio de sesión, no en aplicar una regla de autenticación flexible.

En la sección **Automatic risk response** (Respuesta automática al riesgo) elija **Notify Users** (Notificar a los usuarios) para los casos de riesgo bajo, medio y alto.

![\[Notificación a los usuarios\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/cup-adaptive-auth.png)


Amazon Cognito envía notificaciones por correo electrónico a sus usuarios independientemente de si han verificado su dirección de correo electrónico.

Puede personalizar los mensajes de correo electrónico de notificación y proporcionar versiones de texto sin formato y HTML de dichos mensajes. Para personalizar las notificaciones por correo electrónico, abra **Plantillas de correo electrónico** desde **Mensajes de autenticación flexible** en su configuración de protección contra amenazas. Para obtener más información sobre las plantillas de correo electrónico, consulte [Plantillas de mensaje](cognito-user-pool-settings-message-customizations.md#cognito-user-pool-settings-message-templates).

# Recopilación de datos para la protección contra amenazas en las aplicaciones
<a name="user-pool-settings-viewing-threat-protection-app"></a>

La [autenticación flexible](cognito-user-pool-settings-adaptive-authentication.md) de Amazon Cognito evalúa los niveles de riesgo de los intentos de apropiación de cuentas a partir de los detalles contextuales de los intentos de inicio de sesión de los usuarios. La aplicación debe añadir *datos de contexto* a las solicitudes de la API para que la protección contra amenazas de Amazon Cognito pueda evaluar el riesgo con más precisión. Los datos de contexto son información como la dirección IP, el agente del navegador, la información del dispositivo y los encabezados de las solicitudes que proporcionan información contextual sobre cómo se ha conectado un usuario al grupo de usuarios.

La responsabilidad principal de una aplicación que envía este contexto a Amazon Cognito es un parámetro `EncodedData` en las solicitudes de autenticación a grupos de usuarios. Para añadir estos datos a sus solicitudes, puede implementar Amazon Cognito con un SDK que genere automáticamente esta información por usted, o puede implementar un módulo para JavaScript iOS o Android que recopile estos datos. Deben *implementarse las aplicaciones exclusivas para clientes* que realizan solicitudes directas a Amazon Cognito. AWS Amplify SDKs Las aplicaciones *cliente-servidor* que tienen un componente de servidor o API intermedio deben implementar un módulo de SDK independiente.

En las siguientes situaciones, la interfaz de autenticación administra la recopilación de datos del contexto del usuario sin ninguna configuración adicional:
+ El inicio de sesión administrado recopila y envía automáticamente los datos de contexto al sistema de protección contra amenazas.
+ Todas las AWS Amplify bibliotecas incluyen la recopilación de datos contextuales en sus métodos de autenticación.

## Envío de datos de contexto de usuario en aplicaciones exclusivas para clientes con Amplify
<a name="user-pool-settings-viewing-threat-protection-app-amplify"></a>

![\[Descripción general de la recopilación de datos para la protección contra amenazas en una aplicación Amplify.\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/user-pools-asf-amplify-data-collection.png)


Amplify SDKs apoya a los clientes móviles que se autentican directamente con Amazon Cognito. Los clientes de este tipo realizan solicitudes de API directas a las operaciones de API públicas de Amazon Cognito. Los clientes de Amplify recopilan automáticamente datos de contexto para protección contra amenazas de forma predeterminada.

Amplify las aplicaciones con es una JavaScript excepción. Requieren la adición de un [JavaScript módulo](#user-pool-settings-viewing-threat-protection-app-additional-resources-js) que recopile datos de contexto del usuario.

Por lo general, una aplicación en esta configuración utiliza operaciones de API no autenticadas, como [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)y. [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html) El [UserContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UserContextDataType.html)objeto ayuda a evaluar los riesgos de estas operaciones con mayor precisión. Amplify SDKs agrega información sobre el dispositivo y la sesión a un `EncodedData` parámetro de. `UserContextData`

## Recopilación de datos de contexto en aplicaciones cliente-servidor
<a name="user-pool-settings-viewing-threat-protection-app-server-side"></a>

Algunas aplicaciones tienen un nivel frontend que recopila los datos de autenticación de los usuarios y un nivel backend de aplicaciones que envía las solicitudes de autenticación a Amazon Cognito. Se trata de una arquitectura común en los servidores web y las aplicaciones respaldadas por microservicios. En estas aplicaciones, debe importar una biblioteca pública de recopilación de datos contextuales.

![\[Una descripción general de la autenticación del lado del servidor con datos contextuales de protección contra amenazas en. JavaScript\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/user-pools-asf-non-amplify-data-collection.png)


Normalmente, un servidor de aplicaciones en esta configuración utiliza operaciones de API autenticadas, como y. [AdminInitiateAuth[AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) El [ContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-ContextData)objeto ayuda a Amazon Cognito a evaluar los riesgos de estas operaciones con mayor precisión. El contenido de `ContextData` son los datos codificados que el frontend ha pasado al servidor y detalles adicionales de la solicitud HTTP del usuario al servidor. Estos detalles contextuales adicionales, como los encabezados HTTP y la dirección IP, proporcionan al servidor de aplicaciones las características del entorno del usuario.

Es posible que su servidor de aplicaciones también inicie sesión con operaciones de API no autenticadas, como y. [InitiateAuth[RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) El [UserContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-UserContextData)objeto sirve de base para el análisis de riesgos de protección contra amenazas en estas operaciones. Las operaciones de las bibliotecas de recopilación de datos de contexto público disponibles añaden información de seguridad al parámetro `EncodedData` en las solicitudes de autenticación. Además, debe configurar el grupo de usuarios para que acepte datos de contexto adicionales y añada la IP de origen del usuario al parámetro `IpAddress` de `UserContextData`.

**Adición de datos de contexto en aplicaciones cliente-servidor**

1. En su aplicación front-end, recopile datos de contexto codificados del cliente con un [ JavaScript módulo, iOS o Android](#user-pool-settings-viewing-threat-protection-app-additional-resources).

1. Transfiera los datos codificados y los detalles de la solicitud de autenticación al servidor de aplicaciones.

1. En el servidor de aplicaciones, extraiga de la solicitud HTTP la dirección IP del usuario, los encabezados HTTP pertinentes, el nombre del servidor solicitado y la ruta solicitada. Rellene estos valores con el [ContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-ContextData)parámetro de su solicitud de API a Amazon Cognito.

1. Rellene el parámetro `EncodedData` de `ContextData` en la solicitud de API con los datos codificados del dispositivo que el módulo del SKD ha recopilado. Añada estos datos de contexto a la solicitud de autenticación.

## Bibliotecas de datos contextuales para aplicaciones cliente-servidor
<a name="user-pool-settings-viewing-threat-protection-app-additional-resources"></a>

### JavaScript
<a name="user-pool-settings-viewing-threat-protection-app-additional-resources-js"></a>

El módulo `amazon-cognito-advanced-security-data.min.js` recopila los `EncodedData` que puede transferir al servidor de aplicaciones.

Añada el `amazon-cognito-advanced-security-data.min.js` módulo a su configuración. JavaScript `<region>`Sustitúyalo por uno Región de AWS de la siguiente lista: `us-east-1` `us-east-2``us-west-2`,`eu-west-1`,,`eu-west-2`, o`eu-central-1`.

```
<script src="https://amazon-cognito-assets.<region>.amazoncognito.com/amazon-cognito-advanced-security-data.min.js"></script>
```

Para generar un `encodedContextData` objeto que pueda usar en el `EncodedData` parámetro, añada lo siguiente a la fuente de JavaScript la aplicación:

```
var encodedContextData = AmazonCognitoAdvancedSecurityData.getData(_username, _userpoolId, _userPoolClientId);
```

### iOS/Swift
<a name="user-pool-settings-viewing-threat-protection-app-additional-resources-ios"></a>

Para generar datos de contexto, las aplicaciones iOS pueden integrar el módulo [AWSCognitoIdentityProviderASF](https://github.com/aws-amplify/aws-sdk-ios/tree/main/AWSCognitoIdentityProviderASF) de [Mobile SDK for iOS](https://github.com/aws-amplify/aws-sdk-ios/tree/main).

A fin de recopilar datos contextuales codificados para la protección contra amenazas, añada el siguiente fragmento a la aplicación:

```
import AWSCognitoIdentityProviderASF

let deviceId = getDeviceId()
let encodedContextData = AWSCognitoIdentityProviderASF.userContextData(
                            userPoolId, 
                            username: username, 
                            deviceId: deviceId, 
                            userPoolClientId: userPoolClientId)
                                
/**
 * Reuse DeviceId from keychain or generate one for the first time.
 */
func getDeviceId() -> String {
    let deviceIdKey = getKeyChainKey(namespace: userPoolId, key: "AWSCognitoAuthAsfDeviceId")
    
   if let existingDeviceId = self.keychain.string(forKey: deviceIdKey) {
        return existingDeviceId
    }

    let newDeviceId = UUID().uuidString
    self.keychain.setString(newDeviceId, forKey: deviceIdKey)
    return newDeviceId
}

/**
 * Get a namespaced keychain key given a namespace and key
 */    
func getKeyChainKey(namespace: String, key: String) -> String {
    return "\(namespace).\(key)"
}
```

### Android
<a name="user-pool-settings-viewing-threat-protection-app-additional-resources-android"></a>

Para generar datos de contexto, las aplicaciones de Android pueden integrar el módulo [Mobile SDK for Android aws-android-sdk-cognitoidentityprovider](https://github.com/aws-amplify/aws-sdk-android/tree/main) [-asf](https://github.com/aws-amplify/aws-sdk-android/tree/main/aws-android-sdk-cognitoidentityprovider-asf).

A fin de recopilar datos contextuales codificados para la protección contra amenazas, añada el siguiente fragmento a la aplicación:

```
UserContextDataProvider provider = UserContextDataProvider.getInstance();
// context here is android application context.
String encodedContextData = provider.getEncodedContextData(context, username, userPoolId, userPoolClientId);
```

# Asocie una ACL AWS WAF web a un grupo de usuarios
<a name="user-pool-waf"></a>

AWS WAF es un firewall de aplicaciones web. Con una lista de control de acceso AWS WAF web (ACL web), puede proteger su grupo de usuarios de solicitudes no deseadas a su interfaz de usuario alojada clásica, inicio de sesión gestionado y puntos de enlace del servicio de API de Amazon Cognito. Una ACL web le proporciona un control detallado sobre todas las solicitudes web HTTPS a las que responde el grupo de usuarios. Para obtener más información sobre la AWS WAF web ACLs, consulte [Administración y uso de una lista de control de acceso a la web (ACL web)](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl.html) en la Guía para *AWS WAF desarrolladores*.

Cuando tiene una ACL AWS WAF web asociada a un grupo de usuarios, Amazon Cognito reenvía los encabezados no confidenciales seleccionados y el contenido de las solicitudes de sus usuarios a. AWS WAF AWS WAF inspecciona el contenido de la solicitud, la compara con las reglas que especificó en su ACL web y devuelve una respuesta a Amazon Cognito.

## Lo que debe saber sobre la AWS WAF web ACLs y Amazon Cognito
<a name="user-pool-waf-things-to-know"></a>
+ No puede configurar las reglas de ACL web para que coincidan con la información de identificación personal (PII) de las solicitudes de grupos de usuarios, por ejemplo, nombres de usuario, contraseñas, números de teléfono o direcciones de correo electrónico. Estos datos no estarán disponibles para AWS WAF. En lugar de esto, configure las reglas de ACL web para que coincidan con los datos de sesión de los encabezados, la ruta y el cuerpo, como las direcciones IP, los agentes del navegador y las operaciones de API solicitadas.
+ Las condiciones de las reglas de ACL web solo pueden devolver respuestas de bloqueo personalizadas a la **primera** solicitud de los usuarios a una página de inicio de sesión administrado interactiva por el usuario. Cuando las conexiones subsiguientes coinciden con una condición de respuesta de bloqueo personalizada, devuelven el código de estado personalizado, el encabezado y las respuestas de redireccionamiento, pero muestran un mensaje de bloqueo predeterminado.
+ Las solicitudes bloqueadas por AWS WAF no se incluyen en la cuota de solicitudes de ningún tipo de solicitud. Se llama al AWS WAF controlador antes que a los controladores de regulación a nivel de API.
+ Al crear una ACL web, pasa una pequeña cantidad de tiempo antes de que la ACL web se haya propagado por completo y esté disponible para Amazon Cognito. El tiempo de propagación puede oscilar entre unos segundos y varios minutos. AWS WAF devuelve a [https://docs.aws.amazon.com/waf/latest/APIReference/API_AssociateWebACL.html#API_AssociateWebACL_Errors](https://docs.aws.amazon.com/waf/latest/APIReference/API_AssociateWebACL.html#API_AssociateWebACL_Errors)cuando intenta asociar una ACL web antes de que se haya propagado por completo.
+ Puede asociar una ACL web con cada grupo de usuarios.
+ Es posible que la solicitud dé lugar a una carga útil superior a los límites de lo que AWS WAF puede inspeccionar. Consulte [Gestión de componentes de solicitudes de gran tamaño](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rule-statement-oversize-handling.html) en la *Guía para AWS WAF desarrolladores* para obtener información sobre cómo configurar el modo en que AWS WAF gestiona las solicitudes de gran tamaño de Amazon Cognito.
+ No puede asociar una ACL web que utilice la [prevención de apropiación de cuentas (ATP) de AWS WAF Fraud Control](https://docs.aws.amazon.com/waf/latest/developerguide/waf-atp.html) con un grupo de usuarios de Amazon Cognito. La característica ATP se encuentra en el grupo de reglas administradas `AWS-AWSManagedRulesATPRuleSet`. Antes de asociar una ACL web con un grupo de usuarios, asegúrese de que no utilice este grupo de reglas administradas.
+ Si tiene una ACL AWS WAF web asociada a un grupo de usuarios y una regla de su ACL web presenta un CAPTCHA, esto puede provocar un error irrecuperable al iniciar sesión gestionada en el registro de TP. Para crear una regla que tenga una acción CAPTCHA y no afecte al TOTP del inicio de sesión administrado, consulte [Configuración de su ACL AWS WAF web para el inicio de sesión gestionado en TP MFA](user-pool-settings-mfa-totp.md#totp-waf).

AWS WAF inspecciona las solicitudes a los siguientes puntos finales.

**El inicio de sesión administrado y la interfaz de usuario alojada clásica**  
Solicitudes a todos los puntos de conexión en [Referencia de los puntos de conexión de grupos de usuarios y del inicio de sesión administrado](cognito-userpools-server-contract-reference.md).

**Operaciones de la API públicas**  
Solicitudes de su aplicación a la API de Amazon Cognito que no utilizan AWS credenciales para autorizar. Esto incluye operaciones de API como [InitiateAuth[RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html), y [GetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html). Las operaciones de la API que están dentro del ámbito de aplicación AWS WAF no requieren autenticación con AWS credenciales. No están autenticadas o están autorizadas con una cadena de sesión o un token de acceso. Para obtener más información, consulte [Lista de operaciones de API agrupadas por modelo de autorización](authentication-flows-public-server-side.md#user-pool-apis-auth-unauth).

Puede configurar las reglas en la ACL web con acciones de reglas como **Recuento**, **Permiso** o **Bloqueo** o presentar un **CAPTCHA** en respuesta a una solicitud que coincida con una regla. Para obtener más información, consulte [Reglas de AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/waf-rules.html) en la *Guía para desarrolladores de AWS WAF *. Según la acción de la regla, puede personalizar la respuesta que Amazon Cognito devuelve a los usuarios.

**importante**  
Las opciones para personalizar la respuesta de error dependen de la forma en que realice una solicitud a la API.  
Puede personalizar el código de error y el cuerpo de respuesta de las solicitudes de inicio de sesión administrado. Solo puede presentar un CAPTCHA para que el usuario lo resuelva en el inicio de sesión administrado.
Para las solicitudes que realice con la [API de grupos de usuarios](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html) de Amazon Cognito, puede personalizar el cuerpo de la respuesta de una solicitud que recibe una respuesta de **Bloque**. También puede especificar un código de error personalizado en el intervalo de 400 a 499.
El AWS Command Line Interface (AWS CLI) y el AWS SDKs devuelven un `ForbiddenException` error a las solicitudes que generan una respuesta de **bloqueo** o **CAPTCHA**.

## Asociación de una ACL web con un grupo de usuarios
<a name="user-pool-waf-setting-up"></a>

Para trabajar con una ACL web en su grupo de usuarios, su director AWS Identity and Access Management (IAM) debe tener los siguientes permisos y Amazon Cognito AWS WAF . Para obtener información sobre AWS WAF los permisos, consulte los [permisos de la AWS WAF API](https://docs.aws.amazon.com/waf/latest/developerguide/waf-api-permissions-ref.html) en la Guía *AWS WAF para desarrolladores*.

------
#### [ JSON ]

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Sid": "AllowWebACLUserPool",
			"Effect": "Allow",
			"Action": [
				"cognito-idp:ListResourcesForWebACL",
				"cognito-idp:GetWebACLForResource",
				"cognito-idp:AssociateWebACL"
			],
			"Resource": [
				"arn:aws:cognito-idp:*:123456789012:userpool/*"
			]
		},
		{
			"Sid": "AllowWebACLUserPoolWAFv2",
			"Effect": "Allow",
			"Action": [
				"wafv2:ListResourcesForWebACL",
				"wafv2:AssociateWebACL",
				"wafv2:DisassociateWebACL",
				"wafv2:GetWebACLForResource"
			],
			"Resource": "arn:aws:wafv2:*:123456789012:*/webacl/*/*"
		},
		{
			"Sid": "DisassociateWebACL1",
			"Effect": "Allow",
			"Action": "wafv2:DisassociateWebACL",
			"Resource": "*"
		},
		{
			"Sid": "DisassociateWebACL2",
			"Effect": "Allow",
			"Action": [
				"cognito-idp:DisassociateWebACL"
			],
			"Resource": [
				"arn:aws:cognito-idp:*:123456789012:userpool/*"
			]
		}
	]
}
```

------

Si bien debe conceder permisos de IAM, las acciones enumeradas son solo con permisos y no corresponden a una [operación de la API](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html).

**Para activarlos AWS WAF para su grupo de usuarios y asociar una ACL web**

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. En la sección **AWS WAF**, haga clic en la sección **Seguridad**.

1. Elija **Edit (Edición de)**.

1. Seleccione **Usar AWS WAF con su grupo de usuarios**.  
![\[Captura de pantalla del AWS WAF cuadro de diálogo con la opción Usar AWS WAF con el grupo de usuarios seleccionada.\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/cup-WAF-console.png)

1. Elija una **ACL AWS WAF web** que ya haya creado o elija **Crear ACL web en AWS WAF** para crear una en una nueva AWS WAF sesión del Consola de administración de AWS.

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

Para asociar mediante programación una ACL web a su grupo de usuarios en el SDK AWS Command Line Interface o en un SDK, utilice la [AssociateWebACL](https://docs.aws.amazon.com/waf/latest/APIReference/API_AssociateWebACL.html) de la AWS WAF API. Amazon Cognito no tiene una operación de API independiente que asocie una ACL web.

## Probar y registrar la web AWS WAF ACLs
<a name="user-pool-waf-evaluating-and-logging"></a>

Cuando estableces una acción de regla como **Contar** en tu ACL web, AWS WAF agrega la solicitud a un recuento de solicitudes que coinciden con la regla. Para probar una ACL web con el grupo de usuarios, establezca las acciones de reglas para **Count** (Recuento) y tenga en cuenta el volumen de solicitudes que coinciden con cada regla. Por ejemplo, si una regla que desea establecer en una acción de **Block** (Bloque) coincide con un gran número de solicitudes que usted determina que son tráfico de usuario normal, es posible que tenga que volver a configurar la regla. Para obtener más información, consulte [Pruebas y ajustes de sus protecciones de AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-testing.html) en la *Guía para desarrolladores de AWS WAF *.

También puede configurarlo AWS WAF para registrar los encabezados de las solicitudes en un grupo de CloudWatch registros de Amazon Logs, un bucket de Amazon Simple Storage Service (Amazon S3) o un Amazon Data Firehose. Puede identificar las solicitudes de Amazon Cognito que realiza con la API de grupos de usuarios mediante `x-amzn-cognito-client-id` y `x-amzn-cognito-operation-name`. Las solicitudes de inicio de sesión administrado solo incluyen el encabezado `x-amzn-cognito-client-id`. Para obtener más información, consulte [Registro del tráfico de la ACL web](https://docs.aws.amazon.com/waf/latest/developerguide/logging.html) en la *Guía para desarrolladores de AWS WAF *.

AWS WAF ACLs están disponibles en todos los planes de [funciones](cognito-sign-in-feature-plans.md) de grupos de usuarios. Las características de seguridad de AWS WAF complementan la protección contra amenazas de Amazon Cognito. Puede activar las características en un grupo de usuarios. AWS WAF factura de forma individual la inspección de las solicitudes del grupo de usuarios. Para obtener más información, consulte [AWS WAF Precios](https://aws.amazon.com/waf/pricing).

El registro de los datos de las AWS WAF solicitudes está sujeto a una facturación adicional por parte del servicio al que dirija sus registros. Para obtener más información, consulte [Precios para registrar información de tráfico de ACL web](https://docs.aws.amazon.com/waf/latest/developerguide/logging.html#logging-pricing) en la *Guía para desarrolladores de AWS WAF *.

# Sensibilidad de mayúsculas y minúsculas en el grupo de usuarios
<a name="user-pool-case-sensitivity"></a>

De forma predeterminada, los grupos de usuarios de Amazon Cognito que cree en ellos Consola de administración de AWS no distinguen mayúsculas de minúsculas. Cuando un grupo de usuarios no distingue entre mayúsculas y minúsculas, *user@example.com* y *User@example.com* hacen referencia al mismo usuario. Cuando los nombres de usuario de un grupo de usuarios no distinguen entre mayúsculas y minúsculas, los atributos `preferred_username` y `email` tampoco distinguen entre mayúsculas y minúsculas.

La falta de distinción entre mayúsculas y minúsculas se aplica no solo a las entradas de atributos, sino también a las salidas. Los valores de los atributos con mayúsculas y minúsculas en los grupos de usuarios que no distinguen entre mayúsculas y minúsculas se aplanan para convertirlos en minúsculas en la salida de texto del grupo de usuarios. [Algunos ejemplos de salida de texto de grupos de [usuarios son las respuestas de UserInfo](userinfo-endpoint.md), las respuestas a las consultas de los usuarios, como la salida de [GetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html), y los eventos de entrada a los activadores de Lambda.](cognito-user-pools-working-with-lambda-triggers.md)

Para tener en cuenta la configuración de distinción entre mayúsculas y minúsculas del grupo de usuarios, identifique a los usuarios en el código de la aplicación en función del atributo de usuario alternativo. Porque el caso de un nombre de usuario, un nombre de usuario preferido o un atributo de dirección de correo electrónico puede variar en diferentes perfiles de usuario, se recomienda que haga referencia al atributo `sub` en su lugar. También puede crear un atributo personalizado inmutable en su grupo de usuarios y asignar su propio valor de identificador único al atributo en cada nuevo perfil de usuario. Al crear un usuario por primera vez, puede escribir un valor en un atributo personalizado inmutable que haya creado.

**nota**  
Independientemente de la configuración de distinción entre mayúsculas y minúsculas de su grupo de usuarios, Amazon Cognito requiere que un usuario federado de un proveedor de identidades (IdP) SAML u OIDC pase una única notificación `NameId` o `sub` única con distinción entre mayúsculas y minúsculas. Para obtener más información sobre la distinción entre mayúsculas y minúsculas de los identificadores únicos y el SAML IdPs, consulte. [Implementación del inicio de sesión de SAML iniciado por el SP](cognito-user-pools-SAML-session-initiation.md#cognito-user-pools-saml-idp-authentication)

Creación de un grupo de usuarios que distingue entre minúsculas y mayúsculas  
Si crea recursos con AWS Command Line Interface (AWS CLI) y operaciones de API como [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html), por ejemplo, debe establecer el parámetro booleano `CaseSensitive` en. `false` Esta configuración crea un grupo de usuarios sin distinción entre mayúsculas y minúsculas Si no especifica ningún valor, la `CaseSensitive` utiliza `true` de forma predeterminada. Los grupos de usuarios que cree en la consola de Amazon Cognito no distinguen mayúsculas de minúsculas. Para crear un grupo de usuarios que distinga entre mayúsculas y minúsculas, debe utilizar la operación `CreateUserPool`. Antes del 12 de febrero de 2020, los grupos de usuarios distinguían entre mayúsculas y minúsculas de forma predeterminada, independientemente de la plataforma.   
En el menú de **inicio de sesión** de Consola de administración de AWS y en la `UsernameConfiguration` propiedad de [DescribeUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UserPoolType.html#CognitoUserPools-Type-UserPoolType-UsernameConfiguration), puede revisar la configuración de distinción entre mayúsculas y minúsculas de cada grupo de usuarios de su cuenta.

Migrar a un nuevo grupo de usuarios  
Debido a los posibles conflictos entre los perfiles de usuario, no se puede cambiar un grupo de usuarios de Amazon Cognito de una configuración que distingue entre mayúsculas y minúsculas a una que no hace la distinción. En su lugar, se deben migrar los usuarios a un nuevo grupo de usuarios. Debe crear código de migración para resolver conflictos relacionados con la distinción entre mayúsculas y minúsculas. Este código debe devolver un nuevo usuario único o rechazar el intento de inicio de sesión cuando detecta un conflicto. En un nuevo grupo de usuarios que no distingue entre mayúsculas y minúsculas, asigne un [Migración del desencadenador de Lambda del usuario](user-pool-lambda-migrate-user.md). La AWS Lambda función puede crear usuarios en el nuevo grupo de usuarios que no distingue entre mayúsculas y minúsculas. Cuando el usuario no logra iniciar sesión con el grupo de usuarios que no distingue entre mayúsculas y minúsculas, la función de Lambda busca y duplica al usuario desde el grupo de usuarios que distingue entre mayúsculas y minúsculas. También puede activar un activador Lambda de migración de usuarios en [ForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)los eventos. Amazon Cognito transfiere información de usuario y metadatos de eventos de la acción de inicio de sesión o de recuperación de contraseña a la función Lambda. Puede utilizar los datos de eventos para administrar conflictos entre nombres de usuario y direcciones de correo electrónico cuando la función cree el nuevo usuario en el grupo de usuarios que no distingue entre mayúsculas y minúsculas. Estos conflictos se producen entre nombres de usuario y direcciones de correo electrónico que serían únicos en un grupo de usuarios que distingue entre mayúsculas y minúsculas, pero idénticos en un grupo de usuarios que no distingue entre mayúsculas y minúsculas.   
Para obtener más información sobre cómo utilizar un activador Lambda de migración de usuarios entre grupos de usuarios de Amazon Cognito, [consulte Migración de usuarios a grupos de usuarios de Amazon Cognito en el blog](https://aws.amazon.com/blogs/mobile/migrating-users-to-amazon-cognito-user-pools/). AWS 

# Protección de eliminación de grupo de usuarios
<a name="user-pool-settings-deletion-protection"></a>

Para que los administradores no eliminen accidentalmente el grupo de usuarios, active la protección de eliminación. Con la protección de eliminación activa, debe confirmar que desea eliminar el grupo de usuarios antes de eliminarlo. Al eliminar un grupo de usuarios en Consola de administración de AWS, puede desactivar la protección de eliminación al mismo tiempo. Cuando acepta la solicitud para desactivar la protección de eliminación y confirma su intención de eliminarla, como se muestra en la siguiente imagen, Amazon Cognito elimina el grupo de usuarios.

![\[Una captura de pantalla del Consola de administración de AWS que muestra un mensaje para eliminar un grupo de usuarios con un mensaje incluido para desactivar también la protección contra la eliminación.\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/amazon-cognito-delete-user-pool-deactivate-deletion-protection.png)


Si desea eliminar un grupo de usuarios con una solicitud de la API de Amazon Cognito, primero debe cambiarlo `DeletionProtection` a `Inactive` una [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)solicitud. Si no desactiva la protección de eliminación, Amazon Cognito devuelve un error `InvalidParameterException`. Tras desactivar la protección contra la eliminación, puede eliminar el grupo de usuarios de una [DeleteUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_DeleteUserPool.html)solicitud.

Amazon Cognito activa **Deletion protection** (Protección de eliminación) de forma predeterminada al crear un grupo de usuarios nuevo en la Consola de administración de AWS. Al crear un grupo de usuarios con la API `CreateUserPool`, la protección de eliminación está inactiva de forma predeterminada. Para utilizar esta función en los grupos de usuarios que cree con el SDK AWS CLI o con un AWS SDK, defina `True` el `DeletionProtection` parámetro en.

Puede activar o desactivar el estado de la protección de eliminación en el contenedor de **Protección contra la eliminación** del menú **Configuración** de la consola de Amazon Cognito.

# Para configurar la protección de eliminación


1. Vaya a la [consola de Amazon Cognito](https://console.aws.amazon.com/cognito/home). Es posible que se le pidan sus AWS credenciales.

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ú **Configuración** y vaya a la pestaña **Protección contra la eliminación**. Seleccione **Activar** o **Desactivar**.

1. Confirme su elección en el siguiente cuadro de diálogo.

# Administración de las respuestas de error de existencia de usuarios
<a name="cognito-user-pool-managing-errors"></a>

Amazon Cognito es compatible con la personalización de las respuestas de error que devuelven los grupos de usuarios. Existen respuestas de error personalizadas para las operaciones de creación y autenticación de usuarios, recuperación de contraseñas y confirmación.

Utilice la configuración de `PreventUserExistenceErrors` de un cliente de aplicaciones del grupo de usuarios para habilitar o desactivar errores relacionados con la existencia del usuario. Cuando crea un nuevo cliente de aplicación con la API de grupos de usuarios de Amazon Cognito, `PreventUserExistenceErrors` es `LEGACY` o se inhabilita de forma predeterminada. En la consola de Amazon Cognito, la opción **Evitar errores de existencia de usuarios** (un ajuste de `ENABLED` para `PreventUserExistenceErrors`) está seleccionada de forma predeterminada. Para actualizar la configuración de `PreventUserExistenceErrors`, realice una de las siguientes acciones:
+ Cambie el valor de `PreventUserExistenceErrors` entre `ENABLED` y `LEGACY` en una solicitud de API [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html).
+ Edite el cliente de la aplicación en la consola de Amazon Cognito y cambie el estado de **Evitar errores de existencia de usuarios** entre seleccionado (`ENABLED`) y deseleccionado (`LEGACY`).

Si el valor de esta propiedad es `LEGACY`, el cliente de la aplicación devuelve una respuesta de error `UserNotFoundException` cuando un usuario intenta iniciar sesión con un nombre de usuario que no existe en el grupo de usuarios.

Si el valor de esta propiedad es `ENABLED`, el cliente de la aplicación no revela con un error `UserNotFoundException` la inexistencia de una cuenta de usuario en el grupo de usuarios. Una configuración `PreventUserExistenceErrors` de `ENABLED` tiene los siguientes efectos cuando se envía una solicitud de un nombre de usuario que no existe:
+ Amazon Cognito responde con información no específica a las solicitudes de la API cuando, si diera información específica, la respuesta podría revelar que existe un usuario válido.
+ Amazon Cognito devuelve una respuesta genérica a un error de autenticación a las solicitudes de contraseña olvidada y a las solicitudes de autenticación con flujos de autenticación, *excepto* para la [autenticación basada en opciones](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) (`USER_AUTH`), como `USER_SRP_AUTH` o `CUSTOM_AUTH`. Con la respuesta de error, se indica que el nombre de usuario o la contraseña es incorrecto.
+ Amazon Cognito responde a las solicitudes de autenticación basada en opciones con una selección aleatoria de los tipos de desafíos permitidos para el grupo de usuarios. Es posible que su grupo de usuarios devuelva una clave de acceso, una contraseña de un solo uso o un desafío de contraseña.
+ El comportamiento de la confirmación de la cuenta y la recuperación de la contraseña de Amazon Cognito APIs alterna entre devolver una respuesta que indica que se envió un código a un medio de entrega simulado y devolver un error. `InvalidParameterException`

En la siguiente información se da información detallada sobre el comportamiento de las operaciones del grupo de usuarios cuando `PreventUserExistenceErrors` tiene la configuración `ENABLED`.

## Operaciones de autenticación y creación de usuarios
<a name="cognito-user-pool-managing-errors-user-auth"></a>

Puede configurar las respuestas de error en la autenticación de nombre de usuario y contraseña y en la de contraseña remota segura (SRP). También puede personalizar los errores que devuelve con la autenticación personalizada. La configuración de `PreventUserExistenceErrors` no afecta a la autenticación basada en opciones.Información sobre la divulgación de la existencia del usuario en los flujos de autenticación

**Autenticación basada en opciones**  
En el flujo de autenticación `USER_AUTH` basado en opciones, Amazon Cognito plantea un desafío a partir de los principales factores de autenticación disponibles, en función de la configuración del grupo de usuarios y de los atributos de los usuarios. Este flujo de autenticación puede arrojar problemas relacionados con la contraseña, la contraseña remota segura (SRP), la clave de paso, la contraseña de un solo uso WebAuthn (OTP) por SMS o la OTP del correo electrónico. Con `PreventUserExistenceErrors` activo, Amazon Cognito envía un desafío a los usuarios inexistentes para que completen una o más de las formas de autenticación disponibles. Si `PreventUserExistenceErrors` está inactivo, Amazon Cognito devuelve una excepción `UserNotFound`.

**Autenticación de nombre de usuario y contraseña**  
Los flujos de autenticación `ADMIN_USER_PASSWORD_AUTH` y `USER_PASSWORD_AUTH` y el flujo `PASSWORD` de `USER_AUTH` devuelven una `NotAuthorizedException` con el mensaje `Incorrect username or password` cuando `PreventUserExistenceErrors` está activo. Cuando `PreventUserExistenceErrors` está inactivo, estos flujos devuelven `UserNotFoundException`.

**Autenticación basada en contraseña remota segura (SRP)**  
Como práctica recomendada, implemente solo `PreventUserExistenceErrors` con `USER_SRP_AUTH` o el flujo `PASSWORD_SRP` de `USER_AUTH` en grupos de usuarios sin los [atributos de alias](user-pool-settings-attributes.md#user-pool-settings-aliases) de dirección de correo electrónico, número de teléfono o nombre de usuario preferido. Es posible que los usuarios con atributos de alias no estén sujetos a la supresión de la existencia del usuario en el flujo de autenticación del SRP. Los flujos de autenticación de nombre de usuario y contraseña (`ADMIN_USER_PASSWORD_AUTH`, `USER_PASSWORD_AUTH` y el desafío de `PASSWORD` `USER_AUTH`) suprimen por completo la existencia de usuarios a partir de los atributos de alias.  
Cuando alguien intenta iniciar sesión con SRP con un nombre de usuario que el cliente de aplicación no conoce, Amazon Cognito devuelve una respuesta simulada en el primer paso, tal y como se describe en [RFC 5054](https://tools.ietf.org/html/rfc5054#section-2.5.1.3). Amazon Cognito devuelve el mismo fragmento salt y un ID de usuario interno en formato de [UUID](cognito-terms.md#terms-uuid) para la misma combinación de nombre de usuario y grupo de usuarios. Al enviar una solicitud de API `RespondToAuthChallenge` con prueba de contraseña, Amazon Cognito devuelve un error genérico `NotAuthorizedException` cuando el nombre de usuario o la contraseña son incorrectos. Para obtener más información sobre cómo implementar una autenticación personalizada, consulte [Inicio de sesión con contraseñas persistentes y carga útil segura](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-srp).  
Puede simular una respuesta genérica con autenticación de nombre de usuario y contraseña si utiliza atributos de alias basados en la verificación y el nombre de usuario inmutable no tiene formato de [UUID](cognito-terms.md#terms-uuid).

**Desencadenador de Lambda del desafío de autenticación personalizada**  
Amazon Cognito invoca los [desencadenadores de Lambda de desafío de autenticación personalizada](user-pool-lambda-challenge.md) cuando los usuarios intentan iniciar sesión con el flujo de autenticación `CUSTOM_AUTH`, pero no se encuentra su nombre de usuario. El evento de entrada incluye un parámetro booleano denominado `UserNotFound` con un valor de `true` para cualquier usuario inexistente. Este parámetro aparece en los eventos de solicitud que el grupo de usuarios envía a las funciones de Lambda de creación, definición y verificación de autenticación que componen la arquitectura de autenticación personalizada. Al examinar este indicador en la lógica de la función de Lambda, puede simular desafíos de autenticación personalizados para un usuario que no exista.

**Desencadenador de Lambda Antes de la autenticación**  
Amazon Cognito invoca el [desencadenador antes de la autenticación](user-pool-lambda-pre-authentication.md) cuando los usuarios intentan iniciar sesión, pero no se encuentra su nombre de usuario. El evento de entrada incluye un parámetro `UserNotFound` con un valor de `true` para cualquier usuario inexistente.

En la siguiente lista se describe el efecto de `PreventUserExistenceErrors` en la creación de cuentas de usuario.Información sobre la divulgación de la existencia del usuario en los flujos de creación de usuarios

**SignUp**  
La operación `SignUp` siempre devuelve `UsernameExistsException` cuando ya existe un nombre de usuario. Si no desea que Amazon Cognito devuelva un error `UsernameExistsException` para las direcciones de correo electrónico y los números de teléfono cuando registre usuarios en su aplicación, utilice atributos de alias basados en verificación. Para obtener más información acerca de los alias, consulte [Personalización de los atributos de inicio de sesión](user-pool-settings-attributes.md#user-pool-settings-aliases).  
Para obtener un ejemplo de cómo Amazon Cognito puede evitar que se utilicen las solicitudes de API `SignUp` para descubrir usuarios en su grupo de usuarios, consulte [Prevención de errores `UsernameExistsException` en las direcciones de correo electrónico y los números de teléfono al registrarse](#cognito-user-pool-managing-errors-prevent-userexistence-errors).

**Usuarios importados**  
Durante la autenticación de los usuarios importados, si se habilita `PreventUserExistenceErrors`, se devuelve un error `NotAuthorizedException` genérico en el que se indica que el nombre de usuario o la contraseña eran incorrectos, en lugar de devolver `PasswordResetRequiredException`. Para obtener más información, consulte [Obligación de que los usuarios importados restablezcan sus contraseñas](cognito-user-pools-using-import-tool.md#cognito-user-pools-using-import-tool-password-reset).

**Migración del desencadenador de Lambda del usuario**  
Amazon Cognito devolverá una respuesta simulada para los usuarios que no existan cuando el desencadenador de Lambda establezca una respuesta vacía en el contexto del evento original. Para obtener más información, consulte [Importación de usuarios con un desencadenador de Lambda para la migración de usuarios](cognito-user-pools-import-using-lambda.md). 

### Prevención de errores `UsernameExistsException` en las direcciones de correo electrónico y los números de teléfono al registrarse
<a name="cognito-user-pool-managing-errors-prevent-userexistence-errors"></a>

En el siguiente ejemplo se demuestra cómo, al configurar los atributos de alias en su grupo de usuarios, puede evitar que las direcciones de correo electrónico y los números de teléfono duplicados generen errores `UsernameExistsException` en respuesta a las solicitudes de API `SignUp`. Debe haber creado su grupo de usuarios con la dirección de correo electrónico o el número de teléfono como atributo de alias. Para obtener más información, consulte la sección *Customizing sign-in attributes* (Personalización de atributos de inicio de sesión) de [User pool attributes](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-attributes.html#user-pool-settings-aliases) (Atributos de grupo de usuarios).

1. Jie se registra para obtener un nuevo nombre de usuario y también proporciona la dirección de correo electrónico `jie@example.com`. Amazon Cognito envía un código a su dirección de correo electrónico.

   **Ejemplo de comando AWS CLI **

   ```
   aws cognito-idp sign-up --client-id 1234567890abcdef0 --username jie --password PASSWORD --user-attributes Name="email",Value="jie@example.com"
   ```

   **Ejemplo de respuesta**

   ```
   {
       "UserConfirmed": false, 
       "UserSub": "<subId>", 
       "CodeDeliveryDetails": {
           "AttributeName": "email", 
           "Destination": "j****@e****", 
           "DeliveryMedium": "EMAIL"
       }
   }
   ```

1. Jie proporciona el código que se le envió para confirmar su propiedad de la dirección de correo electrónico. Esto completa su registro como usuario.

   **Ejemplo de AWS CLI comando**

   ```
   aws cognito-idp confirm-sign-up --client-id 1234567890abcdef0 --username=jie --confirmation-code xxxxxx
   ```

1. Shirley registra una nueva cuenta de usuario y proporciona la dirección de correo electrónico `jie@example.com`. Amazon Cognito no devuelve ningún error `UsernameExistsException` y envía un código de confirmación a la dirección de correo electrónico de Jie.

   **Ejemplo de AWS CLI comando**

   ```
   aws cognito-idp sign-up --client-id 1234567890abcdef0 --username shirley --password PASSWORD --user-attributes Name="email",Value="jie@example.com"
   ```

   **Ejemplo de respuesta**

   ```
   {
       "UserConfirmed": false, 
       "UserSub": "<new subId>", 
       "CodeDeliveryDetails": {
           "AttributeName": "email", 
           "Destination": "j****@e****", 
           "DeliveryMedium": "EMAIL"
       }
   }
   ```

1. En un escenario diferente, Shirley tiene la propiedad de `jie@example.com`. Shirley recupera el código que Amazon Cognito envió a la dirección de correo electrónico de Jie e intenta confirmar la cuenta.

   **Ejemplo de AWS CLI comando**

   ```
   aws cognito-idp confirm-sign-up --client-id 1234567890abcdef0 --username=shirley --confirmation-code xxxxxx
   ```

   **Ejemplo de respuesta**

   ```
   An error occurred (AliasExistsException) when calling the ConfirmSignUp operation: An account with the email already exists.
   ```

Amazon Cognito no devuelve un error a la solicitud de `aws cognito-idp sign-up` de Shirley, a pesar de que `jie@example.com` se asigne a un usuario existente. Shirley debe demostrar la propiedad de la dirección de correo electrónico antes de que Amazon Cognito devuelva una respuesta de error. En un grupo de usuarios con atributos de alias, este comportamiento impide utilizar la API `SignUp` pública para comprobar si existe un usuario con una dirección de correo electrónico o un número de teléfono determinados.

Este comportamiento es diferente de la respuesta que Amazon Cognito devuelve a la solicitud `SignUp` con un nombre de usuario existente, como se muestra en el siguiente ejemplo. Aunque Shirley sabe por esta respuesta que ya existe un usuario con el nombre de usuario `jie`, no conoce ninguna dirección de correo electrónico o número de teléfono asociados al usuario.

**Comando de la CLI de ejemplo**

```
aws cognito-idp sign-up --client-id 1example23456789 --username jie --password PASSWORD
      --user-attributes Name="email",Value="shirley@example.com"
```

**Ejemplo de respuesta**

```
An error occurred (UsernameExistsException) when calling the SignUp operation: User already exists
```

## Operaciones de restablecimiento de contraseña
<a name="cognito-user-pool-managing-errors-password-reset"></a>

Amazon Cognito devuelve las siguientes respuestas a las operaciones de restablecimiento de la contraseña del usuario cuando se evitan los errores de existencia de usuarios.

**ForgotPassword**  
Cuando un usuario no se encuentra, está desactivado o no dispone de un mecanismo de entrega verificado para recuperar su contraseña, Amazon Cognito siempre devuelve `CodeDeliveryDetails` con un medio de entrega simulado para un usuario. El medio de entrega simulado vendrá determinado por el formato del nombre de usuario de entrada y la configuración de verificación del grupo de usuarios.

**ConfirmForgotPassword**  
Amazon Cognito devuelve el error `CodeMismatchException` para los usuarios que no existen o que están inhabilitados. Si no se solicita un código al utilizar `ForgotPassword`, Amazon Cognito devuelve el error `ExpiredCodeException`.

## Operaciones de confirmación
<a name="cognito-user-pool-managing-errors-confirmation"></a>

Amazon Cognito devuelve las siguientes respuestas a las operaciones de confirmación y verificación de usuarios cuando se evitan los errores de existencia de usuarios.

**ResendConfirmationCode**  
Amazon Cognito devuelve `CodeDeliveryDetails` para un usuario inhabilitado o que no existe. Amazon Cognito envía un código de confirmación al correo electrónico o al número de teléfono del usuario existente.

**ConfirmSignUp**  
 Se devuelve `ExpiredCodeException` si un código se ha vencido. Amazon Cognito devuelve `NotAuthorizedException` cuando un usuario no está autorizado. Si el código no coincide con lo que el servidor espera, Amazon Cognito devuelve `CodeMismatchException`. 