

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.

# Inscripción y confirmación de cuentas de usuario
<a name="signing-up-users-in-your-app"></a>

Las cuentas de usuario se añaden al grupo de usuarios siguiendo una de las formas siguientes:
+ El usuario se suscribe a la aplicación cliente del grupo de usuarios. Puede ser una aplicación móvil o web.
+ Puede importar la cuenta de usuario al grupo de usuarios. Para obtener más información, consulte [Importación de usuarios en grupos de usuarios desde un archivo CSV](cognito-user-pools-using-import-tool.md).
+ Puede crear la cuenta de usuario en el grupo de usuarios e invitar al usuario a iniciar sesión. Para obtener más información, consulte [Creación de cuentas de usuario como administrador](how-to-create-user-accounts.md).

Los usuarios que se inscriben se deben confirmar antes de poder iniciar sesión. Los usuarios importados y creados ya están confirmados, pero deben crear su contraseña la primera vez que inicien sesión. En la sección siguiente se explica el proceso de confirmación y la verificación de teléfono y correo electrónico.

**Contraseñas en el registro**  
Amazon Cognito exige contraseñas a todos los usuarios cuando se registran, excepto en las siguientes condiciones. Si se cumplen *todas* estas condiciones, puede omitir las contraseñas en las operaciones de registro.

1. El [inicio de sesión sin contraseña](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless) está activo en su grupo de usuarios y en el cliente de aplicación.

1. La aplicación está diseñada a medida con módulos de autenticación en un AWS SDK. El inicio de sesión administrado y la interfaz de usuario alojada siempre requieren contraseñas.

1. Los usuarios proporcionan valores de atributos para los métodos de inicio de sesión sin contraseña (contraseñas de un solo uso () por correo electrónico o mensaje SMS, que usted permite. OTPs Por ejemplo, si permite iniciar sesión con OTP por correo electrónico y teléfono, los usuarios pueden proporcionar un número de teléfono o una dirección de correo electrónico, pero si solo permite el inicio de sesión con correo electrónico, deberán proporcionar una dirección de correo electrónico.

1. Su grupo de usuarios [verifica automáticamente](#allowing-users-to-sign-up-and-confirm-themselves) los atributos que los usuarios pueden usar al iniciar sesión sin contraseña.

1. [Para una [SignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)solicitud determinada, el usuario no proporciona un valor para el parámetro Password.](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html#CognitoUserPools-SignUp-request-Password)

## Información general sobre la confirmación de una cuenta de usuario
<a name="signup-confirmation-verification-overview"></a>

En el diagrama siguiente se ilustra el proceso de confirmación:

![\[Cuando los usuarios introducen el código de confirmación, verifican automáticamente el correo electrónico o el teléfono.\]](http://docs.aws.amazon.com/es_es/cognito/latest/developerguide/images/amazon-cognito-sign-in-confirm-user.png)


Una cuenta de usuario puede tener cualquiera de los estados siguientes:

**Registrada (sin confirmar)**  
El usuario se ha inscrito correctamente, pero no puede iniciar sesión hasta que la cuenta de usuario esté confirmada. En este estado, el usuario está habilitado, pero no confirmado.  
Los nuevos usuarios que se inscriben empiezan con este estado.

**Confirmada**  
La cuenta de usuario está confirmada y el usuario puede iniciar sesión. Cuando un usuario introduce un código o sigue un enlace de correo electrónico para confirmar su cuenta de usuario, dicho correo electrónico o número de teléfono se verifica automáticamente. El código o enlace es válido durante 24 horas.  
Si el administrador o un desencadenador de Lambda Antes del registro ha confirmado la cuenta de usuario, es posible que no haya un correo electrónico o un número de teléfono asociado a la cuenta.

**Restablecimiento de contraseña requerido**  
La cuenta de usuario está confirmada, pero el usuario debe solicitar un código y restablecer su contraseña para poder iniciar sesión.  
Las cuentas de usuario que el administrador o el desarrollador importan empiezan con este estado.

**Obligar a cambiar la contraseña**  
La cuenta de usuario está confirmada y el usuario puede iniciar sesión con una contraseña temporal, pero la primera vez que inicie sesión, el usuario debe cambiar la contraseña para poder hacer cualquier cosa.  
Las cuentas de usuario que el administrador o el desarrollador crean empiezan con este estado.

**Deshabilitado**  
Para poder eliminar una cuenta de usuario, debe deshabilitar el acceso de inicio de sesión para ese usuario.

**Más recursos**
+ [Detección y corrección de cuentas de usuario inactivas con Amazon Cognito](https://aws.amazon.com/blogs/security/detecting-and-remediating-inactive-user-accounts-with-amazon-cognito/)

## Verificación de la información de contacto durante el registro
<a name="allowing-users-to-sign-up-and-confirm-themselves"></a>

Tal vez desee que, cuando se registren nuevos usuarios en la aplicación, proporcionen al menos un método de contacto. Por ejemplo, con la información de contacto de los usuarios, podría:
+ Enviar una contraseña temporal cuando un usuario decida restablecer su contraseña.
+ Avisar a los usuarios cuando se actualicen sus datos personales o financieros.
+ Enviar mensajes promocionales, como ofertas o descuentos especiales.
+ Enviar resúmenes de cuenta o recordatorios de facturación.

En casos de uso como estos, es importante que envíe sus mensajes a un destino verificado. De lo contrario, los mensajes podrían enviarse a una dirección de correo electrónico o un número de teléfono no válidos que se hayan especificado de forma incorrecta. O lo que es peor, podría enviarse información confidencial a agentes malintencionados que se hagan pasar por los usuarios.

A fin de garantizar que los mensajes se envíen solo a las personas indicadas, configure el grupo de usuarios de Amazon Cognito para que los usuarios tengan que proporcionar la siguiente información al registrarse:

1. Una dirección de correo electrónico o un número de teléfono.

1. Un código de verificación que Amazon Cognito envía a esa dirección de correo electrónico o número de teléfono. Si han transcurrido 24 horas y el código o enlace de tu usuario ya no es válido, llama a la operación de la [ResendConfirmationCode](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ResendConfirmationCode.html)API para generar y enviar un código o enlace nuevo.

Al proporcionar el código de verificación, el usuario demuestra que tiene acceso a la bandeja de correo o al teléfono donde se recibió el código. Cuando el usuario proporciona el código, Amazon Cognito actualiza la información sobre él en el grupo de usuarios del modo siguiente:
+ Estableciendo el estado del usuario en `CONFIRMED`.
+ Actualizando los atributos del usuario para indicar que la dirección de correo electrónico o el número de teléfono se han verificado.

Para ver esta información, puede utilizar la consola de Amazon Cognito. O bien, puedes usar la operación de la `AdminGetUser` API AWS CLI, el `admin-get-user` comando con la o la acción correspondiente en una de las AWS SDKs.

Si un usuario tiene un método de contacto verificado, Amazon Cognito le envía de manera automática un mensaje cuando solicita restablecer la contraseña.

### Otras acciones que confirman y verifican los atributos del usuario
<a name="allowing-users-to-sign-up-and-confirm-themselves-other-actions"></a>

La siguiente actividad del usuario verifica los atributos del usuario. No es necesario configurar estos atributos para que se verifiquen automáticamente: las acciones enumeradas los marcan como verificados en todos los casos.

**Dirección de correo electrónico**  

1. Completar correctamente la [autenticación sin contraseña](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless) con una contraseña de un solo uso (OTP) por correo electrónico.

1. Completar correctamente la [autenticación multifactor (MFA](user-pool-settings-mfa.md)) con una OTP de correo electrónico.

**Número de teléfono**  

1. Completar correctamente la [autenticación sin contraseña](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless) con una OTP por SMS.

1. Completar correctamente la [MFA](user-pool-settings-mfa.md) con una OTP por SMS.

### Para configurar el grupo de usuarios de forma que se solicite la verificación del correo electrónico o del teléfono
<a name="verification-configure"></a>

Cuando se verifican las direcciones de correo electrónico y los números de teléfono de los usuarios, se asegura de que puede ponerse en contacto con ellos. Complete los siguientes pasos Consola de administración de AWS para configurar su grupo de usuarios y solicitar que los usuarios confirmen sus direcciones de correo electrónico o números de teléfono.

**nota**  
Si todavía no tiene ningún grupo de usuarios en la cuenta, consulte [Introducción a los grupos de usuarios](getting-started-user-pools.md).

**Para configurar el 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. En el panel de navegación, seleccione **Users** (Usuarios). 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ú **Registro** y busque **Verificación de atributos y confirmación de la cuenta de usuario**. Elija **Edit (Edición de)**.

1. En **Verificación y confirmación asistidas por Cognito**, elija si desea **Permitir que Cognito envíe mensajes automáticamente para verificar y confirmar**. Con esta configuración habilitada, Amazon Cognito envía mensajes a los atributos de contacto del usuario que elija cuando un usuario se registre o cuando cree un perfil de usuario. Para verificar los atributos y confirmar los perfiles de usuario para iniciar sesión, Amazon Cognito envía un código o un enlace en los mensajes a los usuarios. A continuación, los usuarios deben introducir el código en la IU para que la aplicación pueda confirmarlo en una solicitud de la API `ConfirmSignUp` o `AdminConfirmSignUp`.
**nota**  
También se puede deshabilitar **Cognito-assisted verification and confirmation** (Verificación y confirmación asistidas por Cognito) y emplear acciones de API autenticadas o desencadenadores de Lambda para verificar atributos y confirmar usuarios.  
Si elige esta opción, Amazon Cognito no enviará códigos de verificación cuando el usuario se registre. Elija esta opción si utiliza un flujo de autenticación personalizado con el que se verifica, al menos, un método de contacto sin utilizar códigos de verificación de Amazon Cognito. Por ejemplo, es posible que desee utilizar un desencadenador de Lambda Antes del registro que verifique automáticamente las direcciones de correo electrónico que pertenecen a un dominio específico.  
Si no verifica la información de contacto de los usuarios, es posible que no pueda utilizar la aplicación. Recuerde que los usuarios necesitan tener verificada la información de contacto para:  
**Restablecer sus contraseñas**: Cuando un usuario elije una opción en la aplicación con la que se llama a la acción `ForgotPassword` de la API, Amazon Cognito envía una contraseña temporal a la dirección de correo electrónico o al número de teléfono del usuario. Amazon Cognito envía esta contraseña solo si el usuario tiene, al menos, un método de contacto verificado.
**Iniciar sesión utilizando una dirección de correo electrónico o un número de teléfono como alias**: Si configura el grupo de usuarios de forma que estos alias estén permitidos, los usuarios solamente podrán iniciar sesión con un alias si dicho alias se ha verificado. Para obtener más información, consulte [Personalización de los atributos de inicio de sesión](user-pool-settings-attributes.md#user-pool-settings-aliases).

1. Elija **Attributes to verify** (Atributos para verificar):  
**Enviar un mensaje SMS, verificar el número de teléfono**  
Amazon Cognito envía un mensaje SMS con un código de verificación cuando el usuario se registra. Elija esta opción si normalmente se comunica con los usuarios a través de mensajes SMS. Por ejemplo, conviene utilizar números de teléfono verificados si envía notificaciones de entrega, confirmaciones de citas o alertas. Los números de teléfono de los usuarios serán el atributo verificado cuando se confirmen las cuentas; se deben tomar medidas adicionales para verificar y comunicarse con las direcciones de correo electrónico de los usuarios.  
**Enviar un mensaje de correo electrónico, verificar la dirección de correo electrónico**  
Amazon Cognito envía un mensaje de correo electrónico con un código de verificación cuando el usuario se registra. Elija esta opción si normalmente se comunica con los usuarios a través del correo electrónico. Por ejemplo, conviene utilizar direcciones de correo electrónico verificadas para enviar facturas, resúmenes de pedidos u ofertas especiales. Las direcciones de correo electrónico de los usuarios serán el atributo verificado cuando se confirmen las cuentas; se deben tomar medidas adicionales para verificar y comunicarse con los números de teléfono de los usuarios.  
**Enviar un mensaje SMS si hay un número de teléfono disponible; de lo contrario, enviar un mensaje de correo electrónico**  
Elija esta opción si no quiere que todos los usuarios tengan el mismo método de contacto verificado. En este caso, la página de registro de la aplicación podría pedir a los usuarios que verifiquen únicamente el método de contacto preferido. Cuando Amazon Cognito envía un código de verificación, lo envía mediante el método de contacto especificado en la solicitud `SignUp` de la aplicación. Si un usuario proporciona una dirección de correo electrónico y un número de teléfono y se especifican los dos métodos de contacto en la solicitud `SignUp` de la aplicación, Amazon Cognito solo envía el código de verificación al número de teléfono.  
Si solicita a los usuarios que verifiquen la dirección de correo electrónico y el número de teléfono, elija esta opción. Amazon Cognito verificará uno de los métodos de contacto cuando el usuario se registre, mientras que la aplicación deberá verificar el otro cuando el usuario inicie sesión. Para obtener más información, consulte [Si solicita a los usuarios que confirmen tanto el correo electrónico como el número de teléfono](#verification-email-plus-phone).

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

### Flujo de autenticación con la verificación del correo electrónico o el teléfono
<a name="verification-flow"></a>

Si el grupo de usuarios obliga a los usuarios a verificar los datos de contacto, la aplicación debe facilitar lo siguiente cuando el usuario se registre:

1. Un usuario se registra en tu aplicación introduciendo un nombre de usuario, un número de teléfono, una dirección de and/or correo electrónico y, posiblemente, otros atributos.

1. El servicio de Amazon Cognito recibe la solicitud de registro de la aplicación. Después de verificar que la solicitud contiene todos los atributos necesarios para la inscripción, el servicio completa el proceso de inscripción y envía un código de confirmación al teléfono (en un mensaje SMS) o al correo electrónico del usuario. El código es válido durante 24 horas.

1. El servicio indica a la aplicación que la inscripción se ha completado y que la cuenta de usuario está pendiente de confirmación. La respuesta contiene información acerca de dónde se ha enviado el código de confirmación. En este momento, la cuenta de usuario está sin confirmar y la dirección de correo electrónico y el número de teléfono del usuario están sin verificar.

1. Ahora, la aplicación puede instar al usuario a que introduzca el código de confirmación. No es necesario que el usuario introduzca el código de inmediato. Sin embargo, no podrá iniciar sesión hasta después de introducir el código de confirmación.

1. El usuario introduce el código de confirmación en la aplicación.

1. La aplicación llama a [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html) para enviar el código al servicio de Amazon Cognito que lo verifica y, si es correcto, establece la cuenta del usuario en el estado confirmado. Después de confirmar con éxito la cuenta del usuario, el servicio de Amazon Cognito marca de forma automática el atributo que se utilizó para confirmar (dirección de correo electrónico o número de teléfono) como verificado. A menos que el valor de este atributo cambie, el usuario no tendrá que volver a verificarlo.

1. En este punto, la cuenta de usuario se encuentra en estado confirmado y el usuario puede iniciar sesión.

### Si solicita a los usuarios que confirmen tanto el correo electrónico como el número de teléfono
<a name="verification-email-plus-phone"></a>

Amazon Cognito solo verificará uno de los métodos de contacto cuando el usuario se registre. En los casos en que Amazon Cognito deba elegir entre la verificación por dirección de correo electrónico o número de teléfono, elegirá el número de teléfono y enviará un código de verificación por mensaje SMS. Por ejemplo, si configura el grupo de usuarios de forma que los usuarios puedan verificarse por dirección de correo electrónico o número de teléfono, y la aplicación proporciona estos atributos después del registro, Amazon Cognito solo verificará el número de teléfono. Una vez que un usuario verifica el número de teléfono, Amazon Cognito establece el estado del usuario en `CONFIRMED`, por lo que el usuario tiene permiso para iniciar sesión en la aplicación.

Una vez que el usuario inicia sesión, la aplicación puede dar la opción de verificar el método de contacto que no se ha verificado durante el registro. Para verificar este segundo método, la aplicación llama a la acción `VerifyUserAttribute` de la API. Tenga en cuenta que para esta acción se requiere un parámetro `AccessToken` y que Amazon Cognito solo proporciona tokens de acceso a los usuarios autenticados. Por lo tanto, solamente puede verificar el segundo método de contacto una vez que el usuario ha iniciado sesión.

Si necesita que los usuarios verifiquen la dirección de correo electrónico y el número de teléfono, haga lo siguiente:

1. Configure el grupo de usuarios para que permita a los usuarios verificar la dirección de correo electrónico o el número de teléfono.

1. En el flujo de registro de la aplicación, pida a los usuarios que proporcionen una dirección de correo electrónico y un número de teléfono. Llame a la acción [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html) de la API y proporcione la dirección de correo electrónico y el número de teléfono en el parámetro `UserAttributes`. En ese momento, Amazon Cognito envía un código de verificación al teléfono del usuario.

1. En la interfaz de la aplicación, muestre una página de confirmación en la que el usuario pueda especificar el código de verificación. Confirme el usuario llamando a la acción [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html) de la API. En ese momento, el estado del usuario es `CONFIRMED` y el número de teléfono del usuario está verificado, aunque la dirección de correo electrónico no lo está.

1. Muestre la página de inicio de sesión y autentique el usuario llamando a la acción [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) de la API. Cuando el usuario esté autenticado, Amazon Cognito devolverá un token de acceso a la aplicación.

1. Llame a la acción [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAttributeVerificationCode.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAttributeVerificationCode.html) de la API. Especifique los siguientes parámetros en la solicitud:
   + `AccessToken`: es el token de acceso que devuelve Amazon Cognito una vez que el usuario inicia sesión.
   + `AttributeName`: especifique `"email"` como el valor del atributo.

   Amazon Cognito envía un código de verificación a la dirección de correo electrónico del usuario.

1. Muestre una página de confirmación en la que el usuario pueda especificar el código de verificación. Cuando el usuario envíe el código, llame a la acción [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html) de la API. Especifique los siguientes parámetros en la solicitud:
   + `AccessToken`: es el token de acceso que devuelve Amazon Cognito una vez que el usuario inicia sesión.
   + `AttributeName`: especifique `"email"` como el valor del atributo.
   + `Code`: es el código de verificación que proporciona el usuario.

   En este momento, se verifica la dirección de correo electrónico.

## Permitir que los usuarios se registren en la aplicación, pero con confirmación del administrador del grupo de usuarios
<a name="signing-up-users-in-your-app-and-confirming-them-as-admin"></a>

Es posible que no desees que el grupo de usuarios envíe automáticamente mensajes de verificación al grupo de usuarios, pero aun así quieras permitir que cualquier persona se registre para obtener una cuenta. Este modelo deja espacio, por ejemplo, para la revisión humana de las nuevas solicitudes de registro y para la validación y el procesamiento por lotes de los registros. Puede confirmar las nuevas cuentas de usuario en la consola de Amazon Cognito o mediante la operación de API autenticada por IAM. [AdminConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminConfirmSignUp.html) Puede confirmar las cuentas de usuario como administrador si el grupo de usuarios envía mensajes de verificación o no.

Solo puede confirmar el registro de un usuario en el autoservicio con esta técnica. Para confirmar un usuario que cree como administrador, cree una solicitud de [AdminSetUserPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserPassword.html)API con el valor establecido en. `Permanent` `True`

1. Un usuario se registra en tu aplicación introduciendo un nombre de usuario, un número de teléfono, una dirección de and/or correo electrónico y, posiblemente, otros atributos.

1. El servicio de Amazon Cognito recibe la solicitud de registro de la aplicación. Después de verificar que la solicitud contiene todos los atributos necesarios para la inscripción, el servicio completa el proceso de inscripción e indica a la aplicación que la inscripción está completa y pendiente de confirmación. En este punto, el estado de la cuenta del usuario es no confirmado. El usuario solo podrá iniciar sesión cuando la cuenta esté confirmada.

1. Confirme la cuenta del usuario. Debes iniciar sesión Consola de administración de AWS o firmar tu solicitud de API con AWS credenciales para confirmar la cuenta. 

   1. Para confirmar un usuario en la consola de Amazon Cognito, vaya al menú **Usuarios**, elija el usuario que desea confirmar y, en el menú **Acciones**, seleccione **Confirmar**.

   1. Para confirmar un usuario en la AWS API o la CLI, cree una solicitud de [AdminConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminConfirmSignUp.html)API o [admin-confirm-sign-up](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-confirm-sign-up.html)en AWS CLI.

1. En este punto, la cuenta de usuario se encuentra en estado confirmado y el usuario puede iniciar sesión.

## Cálculo de los valores de hash secretos
<a name="cognito-user-pools-computing-secret-hash"></a>

Como práctica recomendada, asigne un secreto de cliente a su cliente de aplicaciones confidenciales. Cuando asigne un secreto de cliente a su cliente de aplicación, las solicitudes de API de los grupos de usuarios de Amazon Cognito deberán incorporar un hash que incluya el secreto de cliente en el cuerpo de la solicitud. Para validar su conocimiento del secreto de cliente para las operaciones de la API de las listas siguientes, concatene el secreto de cliente con el ID del cliente de aplicación y el nombre de usuario del usuario y, a continuación, codifique en base64 esa cadena.

Cuando su aplicación inicie sesión con los usuarios en un cliente que tiene un hash secreto, puede usar el valor de cualquier atributo de inicio de sesión de grupo de usuarios como elemento de nombre de usuario del hash secreto. Cuando su aplicación solicita tokens nuevos en una operación de autenticación con `REFRESH_TOKEN_AUTH`, el valor del elemento del nombre de usuario depende de sus atributos de inicio de sesión. Si su grupo de usuarios no tiene `username` como atributo de inicio de sesión, establezca el valor secreto de nombre de usuario de hash de la reclamación de `sub` del usuario a partir de su token de ID o acceso. Cuando `username` es un atributo de inicio de sesión, establezca el valor de nombre de usuario de hash de secreto que aparece en la reclamación de `username`.

Los siguientes grupos de usuarios de Amazon Cognito APIs aceptan un valor hash secreto del cliente en un parámetro. `SecretHash`
+ [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmForgotPassword.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmForgotPassword.html)
+ [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmSignUp.html)
+ [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ForgotPassword.html)
+ [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ResendConfirmationCode.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ResendConfirmationCode.html)
+ [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SignUp.html)

Además, lo siguiente APIs acepta un valor hash secreto del cliente en un `SECRET_HASH` parámetro, ya sea en los parámetros de autenticación o en una respuesta a un desafío.


| Operación de la API | Parámetro principal para SECRET\$1HASH | 
| --- |--- |
| InitiateAuth | AuthParameters | 
| AdminInitiateAuth | AuthParameters | 
| RespondToAuthChallenge | ChallengeResponses | 
| AdminRespondToAuthChallenge | ChallengeResponses | 

El valor de hash secreto es un código de autenticación de mensajes mediante algoritmos hash con clave (HMAC) codificados en Base64 que se calcula con la clave secreta de un cliente de grupo de usuarios y un nombre de usuario más el ID de cliente en el mensaje. El pseudocódigo siguiente muestra cómo se calcula este valor. En este pseudocódigo, `+` indica la concatenación, `HMAC_SHA256` representa una función que produce un valor HMAC mediante Hmac y `Base64` representa una función que produce una versión SHA256 codificada en base 64 del resultado hash.

```
Base64 ( HMAC_SHA256 ( "Client Secret Key", "Username" + "Client Id" ) )
```

Para obtener información general detallada sobre cómo calcular y usar el `SecretHash` parámetro, consulte [¿Cómo soluciono los errores «No se puede verificar el hash secreto del cliente» de mi API de grupos de usuarios de Amazon Cognito](https://aws.amazon.com/premiumsupport/knowledge-center/cognito-unable-to-verify-secret-hash/)<client-id>? en el Centro de AWS conocimiento.

Puede utilizar los siguientes ejemplos de código en el código de su aplicación en el servidor.

------
#### [ Shell ]

```
echo -n "[username][app client ID]" | openssl dgst -sha256 -hmac [app client secret] -binary | openssl enc -base64
```

------
#### [ Java ]

```
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
 
public static String calculateSecretHash(String userPoolClientId, String userPoolClientSecret, String userName) {
    final String HMAC_SHA256_ALGORITHM = "HmacSHA256";
    
    SecretKeySpec signingKey = new SecretKeySpec(
            userPoolClientSecret.getBytes(StandardCharsets.UTF_8),
            HMAC_SHA256_ALGORITHM);
    try {
        Mac mac = Mac.getInstance(HMAC_SHA256_ALGORITHM);
        mac.init(signingKey);
        mac.update(userName.getBytes(StandardCharsets.UTF_8));
        byte[] rawHmac = mac.doFinal(userPoolClientId.getBytes(StandardCharsets.UTF_8));
        return Base64.getEncoder().encodeToString(rawHmac);
    } catch (Exception e) {
        throw new RuntimeException("Error while calculating ");
    }
}
```

------
#### [ Python ]

```
import sys
import hmac, hashlib, base64 
username = sys.argv[1] 
app_client_id = sys.argv[2] 
key = sys.argv[3] 
message = bytes(sys.argv[1]+sys.argv[2],'utf-8') 
key = bytes(sys.argv[3],'utf-8') 
secret_hash = base64.b64encode(hmac.new(key, message, digestmod=hashlib.sha256).digest()).decode() 
print("SECRET HASH:",secret_hash)
```

------

## Confirmación de cuentas de usuario sin verificar el correo electrónico o el número de teléfono
<a name="confirming-user-without-verification-of-email-or-phone-number"></a>

El desencadenador de Lambda Antes del registro se puede usar para confirmar de manera automática las cuentas de usuario en el registro, sin tener que requerir un código de confirmación ni verificar el correo electrónico o el número de teléfono. Los usuarios que se confirmen de esta forma pueden iniciar sesión de forma inmediata sin tener que recibir un código.

Con este disparador, también puede marcar un correo electrónico o un número de teléfono del usuario como verificado. 

**nota**  
Aunque este enfoque es práctico para los usuarios cuando están empezando, le recomendamos que compruebe automáticamente al menos el correo electrónico o el número de teléfono. De no ser así, el usuario puede quedarse sin poder recuperar la contraseña si la olvida.

Si no exige que el usuario reciba e ingrese un código de confirmación al registrarse y no verifica de manera automática el correo electrónico ni el número de teléfono en el desencadenador de Lambda Antes del registro, corre el riesgo de no tener una dirección de correo electrónico ni un número de teléfono verificados para esta cuenta de usuario. El usuario puede verificar la dirección de correo electrónico o el número de teléfono en otro momento. No obstante, si el usuario se olvida de su contraseña y no cuenta con una dirección de correo electrónico o un número de teléfono verificado, el usuario estará bloqueado fuera de la cuenta, ya que el flujo de contraseña olvidada requiere un correo electrónico o un número de teléfono verificado para enviar un código de verificación al usuario.

## Verificación al cambiar los usuarios su correo electrónico o su número de teléfono
<a name="verifying-when-users-change-their-email-or-phone-number"></a>

En los grupos de usuarios que se configuran con varios nombres de inicio de sesión, los usuarios pueden introducir un número de teléfono o una dirección de correo electrónico como nombre de usuario al iniciar sesión. Cuando actualizan su dirección de correo electrónico o número de teléfono en la aplicación, Amazon Cognito puede enviarles inmediatamente un mensaje con un código que verifica que son propietarios del nuevo valor de atributo. Para habilitar el envío automático de estos códigos de verificación, consulte [Configuración de la verificación del correo electrónico o del teléfono](user-pool-settings-email-phone-verification.md).

Los usuarios que reciban un código de verificación deberán devolverlo a Amazon Cognito en una [VerifyUserAttribute](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html)solicitud. Tras proporcionar el código, su atributo se marca como verificado. Normalmente, cuando los usuarios actualizan su dirección de correo electrónico o número de teléfono, es recomendable comprobar que son los propietarios del nuevo valor antes de poder usarlo para iniciar sesión y recibir mensajes. Los grupos de usuarios tienen una opción configurable que determina si los usuarios deben comprobar las actualizaciones de su dirección de correo electrónico o número de teléfono.

Esta opción es la propiedad `AttributesRequireVerificationBeforeUpdate` del grupo de usuarios. Configúralo en una [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html#CognitoUserPools-UpdateUserPool-request-UserAttributeUpdateSettings)solicitud [CreateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPool.html#CognitoUserPools-CreateUserPool-request-UserAttributeUpdateSettings)o con la opción **Mantener activo el valor del atributo original cuando haya una actualización pendiente** en el menú de **registro** de la consola de Amazon Cognito.

La forma en que su grupo de usuarios trate las actualizaciones de las direcciones de correo electrónico y los números de teléfono está relacionada con la configuración de nombres de usuario de su grupo de usuarios. Los nombres de usuario del grupo de usuarios pueden estar en una configuración de *atributos de nombre de usuario* en la que los nombres de inicio de sesión sean la dirección de correo electrónico, el número de teléfono o ambas cosas. También pueden estar en una configuración de *atributos de alias* en la que el atributo `username` sea un nombre de inicio de sesión junto con una dirección de correo electrónico, un número de teléfono o un nombre de usuario preferido como nombres de inicio de sesión alternativos. Para obtener más información, consulte [Personalización de los atributos de inicio de sesión](user-pool-settings-attributes.md#user-pool-settings-aliases).

 También puede utilizar un desencadenador de Lambda de mensaje personalizado para personalizar el mensaje de verificación. Para obtener más información, consulte [Desencadenador de Lambda para mensajes personalizados](user-pool-lambda-custom-message.md). Cuando la dirección de correo electrónico o el número de teléfono de un usuario no estén verificados, su aplicación debe informar al usuario de que debe verificar el atributo y proporcionar un botón o enlace para que los usuarios introduzcan su código de verificación.

En la siguiente tabla, se describe cómo determinan `AttributesRequireVerificationBeforeUpdate` y la configuración del alias el resultado cuando los usuarios cambian el valor de sus atributos de inicio de sesión.


| Configuración de nombre de usuario | Comportamiento cuando los usuarios deben verificar nuevos atributos | Comportamiento cuando los usuarios no tienen la obligación de verificar nuevos atributos | 
| --- | --- | --- | 
| Atributos de nombre de usuario | El atributo original permanece verificado, apto para iniciar sesión y mantiene su valor original. Cuando el usuario verifica un valor nuevo, Amazon Cognito actualiza el valor del atributo, lo marca como verificado y lo convierte en apto para iniciar sesión. | Amazon Cognito actualiza el atributo a un nuevo valor. El nuevo valor es apto para iniciar sesión. Cuando el usuario verifica un valor nuevo, Amazon Cognito lo marca como verificado. | 
| Atributos de alias | El atributo original permanece verificado, apto para iniciar sesión y mantiene su valor original. Cuando el usuario verifica un valor nuevo, Amazon Cognito actualiza el valor del atributo, lo marca como verificado y lo convierte en apto para iniciar sesión. | Amazon Cognito actualiza el atributo a un nuevo valor. Ni el valor de atributo original ni el nuevo son aptos para iniciar sesión. Cuando el usuario verifica un valor nuevo, Amazon Cognito actualiza el valor del atributo, lo marca como verificado y lo convierte en apto para iniciar sesión. | 

**Ejemplo 1**  
El usuario 1 inicia sesión en la aplicación con la dirección de correo electrónico `user1@example.com` y tiene el nombre de usuario `user1` (atributos de alias). Su grupo de usuarios está configurado para verificar las actualizaciones de los atributos de inicio de sesión y enviar automáticamente los mensajes de verificación. Solicitan actualizar su dirección de correo electrónico a `user1+foo@example.com`. Reciben un correo electrónico de verificación en `user1+foo@example.com` y solo *pueden volver a iniciar sesión* con esa dirección `user1@example.com`. Más tarde, introducen su código de verificación y solo pueden volver a iniciar sesión con la dirección de correo electrónico `user1+foo@example.com`.

**Ejemplo 2**  
El usuario 2 inicia sesión en la aplicación con la dirección de correo electrónico `user2@example.com` y tiene un nombre de usuario (atributos de alias). Su grupo de usuarios está configurado para *no* verificar las actualizaciones de los atributos de inicio de sesión y para enviar automáticamente los mensajes de verificación. Solicitan actualizar su dirección de correo electrónico a `user2+bar@example.com`. Reciben un correo electrónico de verificación en `user2+bar@example.com` y *no pueden volver a iniciar sesión*. Más tarde, introducen su código de verificación y solo pueden volver a iniciar sesión con la dirección de correo electrónico `user2+bar@example.com`.

**Ejemplo 3**  
El usuario 3 inicia sesión en la aplicación con la dirección de correo electrónico `user3@example.com` y no tiene un nombre de usuario (atributos de nombre de usuario). Su grupo de usuarios está configurado para *no* verificar las actualizaciones de los atributos de inicio de sesión y para enviar automáticamente los mensajes de verificación. Solicitan actualizar su dirección de correo electrónico a `user3+baz@example.com`. Reciben un correo electrónico de verificación en `user3+baz@example.com`, pero *pueden iniciar sesión inmediatamente* sin necesidad de realizar ninguna otra acción con el código de verificación.

## Procesos de confirmación y verificación para las cuentas de usuario creadas por administradores o desarrolladores
<a name="confirmation-and-verification-of-users-whose-accounts-youve-created"></a>

Las cuentas de usuario que un administrador o un desarrollador crean ya tienen el estado confirmado, por lo que los usuarios no tienen que introducir ningún código de confirmación. El mensaje de invitación que el servicio de Amazon Cognito envía a estos usuarios incluye el nombre de usuario y una contraseña temporal. Se pide al usuario que cambie la contraseña antes de iniciar sesión. Para obtener más información, consulte la [Personalizar mensajes de correo electrónico y SMS](how-to-create-user-accounts.md#creating-a-new-user-customize-messages) en [Creación de cuentas de usuario como administrador](how-to-create-user-accounts.md) y el disparador para mensajes personalizados en [Personalización de flujos de trabajo de grupos de usuarios con desencadenadores de Lambda](cognito-user-pools-working-with-lambda-triggers.md).

## Procesos de confirmación y verificación para las cuentas de usuario importadas
<a name="confirmation-and-verification-of-users-whose-accounts-youve-imported"></a>

Las cuentas de usuario que se crean mediante la función de importación de usuarios en la Consola de administración de AWS CLI o la API (consulte[Importación de usuarios en grupos de usuarios desde un archivo CSV](cognito-user-pools-using-import-tool.md)) ya están confirmadas, por lo que los usuarios no tienen que introducir un código de confirmación. No se envía ningún mensaje de invitación. Sin embargo, las cuentas de usuario importadas requieren que los usuarios soliciten primero un código llamando al API `ForgotPassword` y que después creen una contraseña utilizando el código entregado llamando al API `ConfirmForgotPassword` antes de iniciar sesión. 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).

O bien el correo electrónico o el número de teléfono del usuario deben marcarse como verificados cuando se importa la cuenta de usuario, con lo que no es necesaria ninguna verificación cuando el usuario inicia sesión.

## Envío de mensajes de correo electrónico para probar la aplicación
<a name="managing-users-accounts-email-testing"></a>

Amazon Cognito envía mensajes de correo electrónico a los usuarios cuando crean y administran sus cuentas en la aplicación cliente del grupo de usuarios. Si configura el grupo de usuarios de forma que se exija la verificación por correo electrónico, Amazon Cognito enviará un correo electrónico cuando:
+ Un usuario se registre.
+ Un usuario actualice su dirección de correo electrónico.
+ Un usuario realice una operación que llame a la acción `ForgotPassword` de la API.
+ Usted cree una cuenta de usuario como administrador.

En función de la acción que inicie el correo electrónico, el correo electrónico contendrá un código de verificación o una contraseña temporal. Es necesario que los usuarios reciban estos correos electrónicos y comprendan el mensaje. De lo contrario, tal vez no puedan iniciar sesión ni utilizar la aplicación.

Para asegurarse de que los correos electrónicos se envíen de manera adecuada y de que el mensaje aparezca como corresponde, pruebe en la aplicación estas acciones con las que se inicia el envío de correos electrónicos desde Amazon Cognito. Por ejemplo, si utiliza la página de registro de la aplicación o la acción `SignUp` de la API, puede activar el envío de un correo electrónico registrándose con una dirección de correo electrónico de prueba. Cuando realice este tipo de pruebas, recuerde lo siguiente:

**Importante**  
Cuando utilice una dirección de correo electrónico para probar acciones con las que se activa el envío de correos electrónicos desde Amazon Cognito, no utilice una dirección de correo electrónico falsa (una que no tenga buzón de correo). Utilice una dirección de correo electrónico real que pueda recibir el correo electrónico de Amazon Cognito y que no genere un *rechazo permanente*.  
Los rechazos permanentes se producen cuando Amazon Cognito no puede entregar el correo electrónico en el buzón del destinatario, lo que siempre sucede si el buzón de correo no existe.  
Amazon Cognito limita la cantidad de correos electrónicos que pueden enviar AWS las cuentas que sufren rebotes forzosos de forma persistente.

Cuando realice acciones de prueba que inicien correos electrónicos, utilice una de las siguientes direcciones de correo electrónico para impedir que se produzcan rebotes permanentes:
+ La dirección de una cuenta de correo electrónico de su propiedad y que utilice para realizar pruebas. Si utiliza su propia dirección de correo electrónico, recibirá el correo electrónico que envía Amazon Cognito. Con este correo electrónico, podrá utilizar el código de verificación para probar la experiencia de registro en la aplicación. Si ha personalizado el mensaje de correo electrónico para su grupo de usuarios, podrá comprobar que el contenido personalizado tiene el aspecto deseado.
+ La dirección del simulador de bandeja de correo: *success@simulator.amazonses.com*. Si utiliza la dirección del simulador, Amazon Cognito enviará el correo electrónico de forma correcta, pero usted no podrá verlo. Esta opción resulta útil cuando no es necesario utilizar el código de verificación ni comprobar el mensaje de correo electrónico.
+ La dirección del simulador de buzón de correo con la incorporación de una etiqueta arbitraria, p. ej., *success\$1user1@simulator.amazonses.com* o *success\$1user2@simulator.amazonses.com*. Amazon Cognito envía correos electrónicos con éxito a estas direcciones, pero no puede ver los correos que envía. Esta opción resulta útil si desea probar el proceso de registro agregando varios usuarios de prueba al grupo de usuarios y cada usuario de prueba tiene una dirección de correo electrónico diferente.

# Configuración de la verificación del correo electrónico o del teléfono
<a name="user-pool-settings-email-phone-verification"></a>

Puede elegir la configuración de verificación del correo electrónico o del teléfono en el menú **Métodos de autenticación**. Para obtener más información sobre la autenticación multifactor (MFA), consulte [MFA por mensaje de texto SMS](user-pool-settings-mfa-sms-email-message.md).

Amazon Cognito utiliza Amazon SNS para enviar mensajes SMS. Si no ha enviado ningún mensaje SMS desde Amazon Cognito o desde ningún otro Servicio de AWS sitio, Amazon SNS podría colocar su cuenta en el entorno limitado de SMS. Le recomendamos que envíe un mensaje de texto de prueba a un número de teléfono verificado antes de retirar la cuenta del entorno aislado de producción. Además, si tiene previsto enviar mensajes SMS a números de teléfono de destino de EE. UU., debe obtener un ID de remitente o de origen de Amazon Pinpoint. Para configurar el grupo de usuarios de Amazon Cognito para mensajes SMS, consulte [Configuración de mensajes SMS para grupos de usuarios de Amazon Cognito](user-pool-sms-settings.md).

Amazon Cognito puede verificar de manera automática direcciones de correo electrónico o números de teléfono. Para realizar esta verificación, Amazon Cognito envía un código de verificación o un enlace de verificación. Para las direcciones de correo electrónico, Amazon Cognito envía un código o un enlace en un mensaje de correo electrónico. Puede elegir un **Tipo de verificación** de **código** o **enlace** al editar la plantilla del **Mensaje de verificación** en el menú **Plantillas de mensajes** de la consola de Amazon Cognito. Para obtener más información, consulte [Personalización de los mensajes de verificación de correo electrónico](cognito-user-pool-settings-message-customizations.md#cognito-user-pool-settings-email-verification-message-customization).

En el caso de los números de teléfono, Amazon Cognito envía un código en un mensaje SMS.

Amazon Cognito debe verificar un número de teléfono o una dirección de correo electrónico para confirmar a los usuarios y ayudarles a recuperar contraseñas olvidadas. Como alternativa, puede confirmar automáticamente a los usuarios con el activador Lambda previo al registro o utilizar [AdminConfirmSignUp](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminConfirmSignUp.html)la operación de API. Para obtener más información, consulte [Inscripción y confirmación de cuentas de usuario](signing-up-users-in-your-app.md).

El código o enlace de verificación es válido durante 24 horas.

Si elige solicitar la verificación de una dirección de correo electrónico o número de teléfono, Amazon Cognito envía automáticamente el código o enlace de verificación cuando un usuario inicia sesión. Si el grupo de usuarios tiene configurado un [Desencadenador de Lambda para remitentes personalizados de SMS](user-pool-lambda-custom-sms-sender.md) o [Desencadenador de Lambda para remitentes de correos electrónicos personalizados](user-pool-lambda-custom-email-sender.md), se llama esa función en su lugar.

**Notas**  
El uso de mensajes de texto SMS para verificar números de teléfono se cobra por separado en Amazon SNS. No se aplica ningún cargo por el envío de mensajes de correo electrónico. Para obtener información sobre los precios de Amazon SNS, consulte [Precios de SMS en todo el mundo](https://aws.amazon.com/sns/sms-pricing/). Para ver la lista actual de los países en los que los mensajes SMS están disponibles, consulte [Regiones y países admitidos](https://docs.aws.amazon.com/sns/latest/dg/sms_supported-countries.html). 
Cuando realice acciones de prueba en la aplicación que generen mensajes de correo electrónico de Amazon Cognito, utilice una dirección de correo electrónico real para que Amazon Cognito pueda enviar estos mensajes sin recibir rechazos permanentes. Para obtener más información, consulte [Envío de mensajes de correo electrónico para probar la aplicación](signing-up-users-in-your-app.md#managing-users-accounts-email-testing).
El proceso de recuperación de contraseñas olvidadas requiere que el usuario verifique su correo electrónico o número de teléfono.

**importante**  
Si un usuario inicia sesión con un número de teléfono y una dirección de correo electrónico, y la configuración del grupo de usuarios exige la verificación de ambos atributos, Amazon Cognito envía un código de verificación por mensaje SMS al número de teléfono. Amazon Cognito aún no ha verificado la dirección de correo electrónico, por lo que la aplicación debe llamar [GetUser](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUser.html)para comprobar si hay alguna dirección de correo electrónico pendiente de verificación. Si requiere verificación, la aplicación debe llamar [GetUserAttributeVerificationCode](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_GetUserAttributeVerificationCode.html)para iniciar el flujo de verificación del correo electrónico. Luego, debe enviar el código de verificación llamando [VerifyUserAttribute](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_VerifyUserAttribute.html).

Puede ajustar su cuota de gasto en mensajes SMS para un mensaje individual Cuenta de AWS y uno solo. Los límites se aplican únicamente al precio de envío de mensajes SMS. Para obtener más información, consulta **¿Qué son las cuotas de gasto a nivel de cuenta y de mensaje y cómo funcionan?** en [Amazon SNS FAQs](https://aws.amazon.com/sns/faqs/).

Amazon Cognito envía mensajes SMS mediante los recursos de Amazon SNS en Región de AWS el lugar donde creó el grupo de usuarios o en una región **alternativa de Amazon SNS antigua de la siguiente tabla**. La excepción son los grupos de usuarios de Amazon Cognito de la región Asia-Pacífico (Seúl). Estos grupos de usuarios utilizan su configuración de Amazon SNS en la región Asia-Pacífico (Tokio). Para obtener más información, consulte [Elija la opción Región de AWS para los mensajes SMS](user-pool-sms-settings.md#sms-choose-a-region).


| Región de Amazon Cognito | Región alternativa de Amazon SNS heredada | 
| --- | --- | 
| Este de EE. UU. (Ohio) | Este de EE. UU. (Norte de Virginia) | 
| Asia-Pacífico (Mumbai) | Asia-Pacífico (Singapur) | 
| Asia-Pacífico (Seúl) | Asia-Pacífico (Tokio) | 
| Canadá (centro) | Este de EE. UU. (Norte de Virginia) | 
| Europa (Fráncfort) | Europa (Irlanda) | 
| Europa (Londres) | Europa (Irlanda) | 

**Ejemplo:** Si su grupo de usuarios de Amazon Cognito se encuentra en la región de Asia-Pacífico (Bombay) y ha aumentado el límite de gastos en ap-southeast-1, es posible que no quiera solicitar un aumento por separado de ap-south-1. En su lugar, puede utilizar los recursos de Amazon SNS en Asia-Pacífico (Singapur). 

## Verificación de actualizaciones de direcciones de correo electrónico y números de teléfono
<a name="user-pool-settings-verifications-verify-attribute-updates"></a>

Un atributo de dirección de correo electrónico o de número de teléfono pueden activarse y no verificarse inmediatamente después de que el usuario cambie su valor. Amazon Cognito también puede exigir que el usuario verifique el nuevo valor antes de que Amazon Cognito actualice el atributo. Cuando requiera que se verifique primero el nuevo valor, los usuarios pueden utilizar el valor original para iniciar sesión y recibir mensajes hasta que verifiquen el nuevo valor.

Cuando los usuarios pueden utilizar su dirección de correo electrónico o número de teléfono como alias de inicio de sesión en el grupo de usuarios, su nombre de inicio de sesión para un atributo actualizado depende de si necesita verificar los atributos actualizados. Cuando requiera que se verifique un atributo actualizado, el usuario puede iniciar sesión con el valor del atributo original hasta que verifique el nuevo valor. Cuando no requiera que se verifique un atributo actualizado, el usuario no puede iniciar sesión ni recibir mensajes en el valor de atributo nuevo u original hasta que verifique el nuevo valor. 

Por ejemplo, el grupo de usuarios permite iniciar sesión con un alias de dirección de correo electrónico y exige que los usuarios verifiquen su dirección de correo electrónico cuando se actualice. Sue, que inicia sesión como `sue@example.com`, quiere cambiar su dirección de correo electrónico a `sue2@example.com`, pero entra accidentalmente a `ssue2@example.com`. Sue no recibe el correo electrónico de verificación, por lo que no puede verificar `ssue2@example.com`. Sue inicia sesión como `sue@example.com` y vuelve a enviar el formulario de su aplicación para actualizar su dirección de correo electrónico a `sue2@example.com`. Recibe este correo electrónico, proporciona el código de verificación a su aplicación y comienza el inicio de sesión como `sue2@example.com`. 

**Cuando un usuario actualiza un atributo y el grupo de usuarios verifica los nuevos valores de los atributos**
+ Pueden iniciar sesión con el valor del atributo original antes de confirmar el código para verificar el nuevo valor.
+ Pueden iniciar sesión solo con el valor del atributo nuevo después de haber confirmado el código para verificar el nuevo valor.
+ Si configuras `email_verified` o `phone_number_verified` `true` incluyes una solicitud de [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)API, pueden iniciar sesión antes de confirmar el código que les envió Amazon Cognito.

**Cuando un usuario actualiza un atributo y el grupo de usuarios no verifica los nuevos valores del atributo**
+ No pueden iniciar sesión con el valor del atributo original ni recibir mensajes con él.
+ No pueden iniciar sesión con el nuevo valor de atributo ni recibir mensajes que no sean un código de confirmación en él antes de confirmar el código para comprobar el nuevo valor.
+ Si configuras `email_verified` o `phone_number_verified` `true` incluyes una solicitud de [AdminUpdateUserAttributes](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminUpdateUserAttributes.html)API, pueden iniciar sesión antes de confirmar el código que les envió Amazon Cognito.

## Para requerir la verificación de atributos cuando los usuarios actualizan su dirección de correo electrónico o número de teléfono


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

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

1. En el menú **Registro**, seleccione **Editar**, en **Verificación de atributos y confirmación de la cuenta de usuario**.

1. Elija **Keep original attribute value active when an update is pending** (Mantener activo el valor del atributo original cuando hay una actualización pendiente).

1. En **Active attribute values when an update is pending** (Valores de atributos activos cuando hay una actualización pendiente), elija los atributos que desea que los usuarios verifiquen antes de que Amazon Cognito actualice el valor.

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

Para requerir la verificación de la actualización de atributos con la API de Amazon Cognito, puede configurar el `AttributesRequireVerificationBeforeUpdate` parámetro en una [UpdateUserPool](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPool.html)solicitud.

## Autorización de Amazon Cognito para enviar mensajes SMS en su nombre.
<a name="user-pool-settings-verifications-iam-role-for-sms"></a>

Para enviar mensajes SMS a los usuarios en su nombre, Amazon Cognito necesita su permiso. Para conceder ese permiso, puede crear un rol AWS Identity and Access Management (de IAM). En el menú **Métodos de autenticación** de la consola de Amazon Cognito, en SMS, elija **Editar** para configurar un rol.

# Configuración de los mensajes de verificación, invitación, autenticación y MFA
<a name="cognito-user-pool-settings-message-customizations"></a>

Con Amazon Cognito, puede personalizar los mensajes de autenticación, verificación e invitación a usuarios por SMS y correo electrónico para mejorar la seguridad y la experiencia del usuario de su aplicación. Puede elegir entre verificaciones de código o de enlace con un solo clic para algunos mensajes. En este tema, se explica cómo personalizar la autenticación y las comunicaciones de verificación en la consola de Amazon Cognito. 

En el menú **Plantillas de mensajes**, puede personalizar lo siguiente:
+ Sus plantillas de correo electrónico y mensajes SMS para la autenticación multifactor (MFA) y mediante contraseña de un solo uso (OTP).
+ Los mensajes de verificación de SMS y correo electrónico
+ El tipo de verificación por correo electrónico: código o enlace
**nota**  
Amazon Cognito envía enlaces con su plantilla basada en enlaces en los mensajes de verificación cuando los usuarios se registran o reenvían un código de confirmación. Los correos electrónicos de las operaciones de actualización de atributos y restablecimiento de contraseñas utilizan la plantilla de código.
+ Los mensajes de invitación al usuario
+ Las direcciones de correo electrónico del remitente (FROM) y del receptor (REPLY-TO) de los correos electrónicos del grupo de usuarios

**nota**  
Las plantillas de mensajes de verificación por SMS y de correo electrónico solo aparecen si ha elegido exigir la verificación de número de teléfono y de correo electrónico. Del mismo modo, la plantilla de mensajes de MFA de SMS solo aparece si el valor en la configuración de la MFA está en **required** (obligatorio) u **optional** (opcional).

**Topics**
+ [Plantillas de mensaje](#cognito-user-pool-settings-message-templates)
+ [Personalización de mensajes de correo electrónico y SMS para la MFA](#cognito-user-pool-settings-SMS-message-customization)
+ [Personalización de los mensajes de verificación de correo electrónico](#cognito-user-pool-settings-email-verification-message-customization)
+ [Personalización de los mensajes de invitación a usuarios](#cognito-user-pool-settings-user-invitation-message-customization)
+ [Personalización de la dirección de correo electrónico](#cognito-user-pool-settings-email-address-customization)
+ [Autorización de Amazon Cognito para enviar correos electrónicos de Amazon SES en su nombre (desde una dirección de correo electrónico FROM personalizada)](#cognito-user-pool-settings-ses-authorization-to-send-email)

## Plantillas de mensaje
<a name="cognito-user-pool-settings-message-templates"></a>

Las plantillas de mensaje le permiten insertar marcadores de posición en los mensajes. Amazon Cognito sustituye dichos marcadores de posición con los valores que correspondan. Puede hacer referencia a *los marcadores de posición de plantillas universales* en las plantillas de mensajes de cualquier tipo, aunque estos valores no estén presentes en todos los tipos de mensajes.


**Marcadores de posición de plantillas universales**  

|  Description (Descripción)  |  Token  | Tipo de mensaje | 
| --- | --- | --- | 
| Código de verificación | \$1\$1\$1\$1\$1\$1 | Mensajes de verificación, confirmación y MFA | 
| Contraseña temporal | \$1\$1\$1\$1\$1\$1 | Mensajes de contraseña olvidada y de invitación | 
| Nombre de usuario | \$1username\$1 | Mensajes de invitación y de seguridad avanzada | 

Una de las respuestas automatizadas disponibles con la [protección contra amenazas](cognito-user-pool-settings-threat-protection.md) consiste en notificar al usuario que Amazon Cognito ha detectado una actividad potencialmente maliciosa. Puede utilizar los marcadores de posición de las plantillas de seguridad avanzadas para:
+ Incluir detalles específicos sobre un evento, como la dirección IP, la ciudad, el país, la hora de inicio de sesión y el nombre del dispositivo. La protección contra amenazas de Amazon Cognito puede analizar estos detalles.
+ Verificar si un enlace de un clic es válido.
+ Usar un ID de evento, el token de comentarios y el nombre de usuario para diseñar su propio enlace de un solo clic.

**nota**  
Para generar enlaces de un solo clic y utilizar los marcadores de posición `{one-click-link-valid}` y `{one-click-link-invalid}` en plantillas de correo electrónico de seguridad avanzadas, ya debe tener un dominio configurado para el grupo de usuarios.

La protección contra amenazas añade los siguientes marcadores de posición que puede insertar en las plantillas de mensajes. Estos marcadores de posición se aplican a los **mensajes de autenticación flexible**, notificaciones que Amazon Cognito envía a los usuarios cuyas sesiones se han evaluado para determinar su nivel de riesgo. Para configurar las plantillas de mensajes con estas variables, actualice la **configuración completa** de su protección contra amenazas en la consola de Amazon Cognito o envíe las plantillas en [SetRiskConfiguration](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_SetRiskConfiguration.html)una solicitud.


**Marcadores de posición de las plantillas de seguridad avanzadas**  

|  Description (Descripción)  |  Token  | 
| --- | --- | 
| Dirección IP | \$1ip-address\$1 | 
| Ciudad | \$1city\$1 | 
| País | \$1country\$1 | 
| Hora de inicio de sesión | \$1login-time\$1 | 
| Nombre del dispositivo | \$1device-name\$1 | 
| El enlace de un solo clic es válido | \$1one-click-link-valid\$1 | 
| El enlace de un solo clic no es válido | \$1one-click-link-invalid\$1 | 
| ID de evento | \$1event-id\$1 | 
| Token de comentarios | \$1feedback-token\$1 | 

## Personalización de mensajes de correo electrónico y SMS para la MFA
<a name="cognito-user-pool-settings-SMS-message-customization"></a>

A fin de personalizar los mensajes SMS y de correo electrónico para la [autenticación multifactor (MFA](user-pool-settings-mfa.md)), edite el **mensaje de MFA** en el menú **Plantillas de mensajes** de la consola de grupos de usuarios de Amazon Cognito.

**importante**  
El mensaje personalizado debe contener el marcador de posición `{####}`. Este marcador de posición se sustituye por el código de autenticación antes de enviar el mensaje.

Amazon Cognito impone una longitud máxima de 140 caracteres UTF-8 para los mensajes SMS, incluido el código de autenticación.

### Personalización de los mensajes de verificación por SMS
<a name="cognito-user-pool-settings-SMS-verification-message-customization"></a>

A fin de personalizar el mensaje SMS para la verificación del número de teléfono, edite la plantilla **Mensaje de verificación** en el menú **Plantillas de mensajes** de su grupo de usuarios.

**importante**  
El mensaje personalizado debe contener el marcador de posición `{####}`. Este marcador de posición se sustituye por el código de verificación antes de enviar el mensaje.

La longitud máxima del mensaje es de 140 caracteres UTF-8, incluido el código de verificación.

## Personalización de los mensajes de verificación de correo electrónico
<a name="cognito-user-pool-settings-email-verification-message-customization"></a>

Para verificar la dirección de correo electrónico de un usuario de su grupo de usuarios con Amazon Cognito, puede enviarle un mensaje de correo electrónico con un enlace que puede seleccionar o enviarle un código que puede ingresar.

Para personalizar el asunto del correo electrónico y el contenido del mensaje para mensajes de verificación de direcciones de correo electrónico, edite la plantilla **Mensaje de verificación** en el menú **Plantillas de mensajes** del grupo de usuarios. Puede elegir un **Tipo de verificación** de **código** o **enlace** al editar la plantilla **Mensaje de verificación**.

Si elige **Código** como el tipo de verificación, el mensaje personalizado debe contener el marcador de posición `{####}`. Al enviar el mensaje, el código de verificación reemplaza este marcador de posición.

Si elige **Enlace** como el tipo de verificación, el mensaje personalizado deberá contener un marcador de posición con el formato `{##Verify Your Email##}`. Puede cambiar la cadena de texto entre los caracteres del marcador de posición, por ejemplo `{##Click here##}`. Un enlace de verificación titulado *Verify Your Email* (Verificar correo electrónico) reemplaza a este marcador de posición.

El enlace de un mensaje de verificación de correo electrónico dirige al usuario a una URL como en el ejemplo siguiente.

```
https://<your user pool domain>/confirmUser/?client_id=abcdefg12345678&user_name=emailtest&confirmation_code=123456
```

La longitud máxima del mensaje es de 20 000 caracteres UTF-8, incluido el código de verificación (de haberlo). Puede utilizar etiquetas HTML en este mensaje para dar formato al contenido.

## Personalización de los mensajes de invitación a usuarios
<a name="cognito-user-pool-settings-user-invitation-message-customization"></a>

Puede personalizar el mensaje de invitación del usuario que Amazon Cognito envía a los nuevos usuarios mediante SMS o mensaje de correo electrónico editando la plantilla **Mensajes de invitación** en la pestaña **Plantillas de mensajes**.

**importante**  
El mensaje personalizado debe contener los marcadores de posición `{username}` y `{####}`. Cuando Amazon Cognito envía el mensaje de invitación, reemplaza estos marcadores de posición por el nombre de usuario y la contraseña de su usuario.

La longitud máxima de un mensaje SMS, incluido el código de verificación, es de 140 caracteres UTF-8. La longitud máxima de un mensaje de correo electrónico, incluido el código de verificación, es de 20 000 caracteres UTF-8. Puede utilizar etiquetas HTML en sus mensajes de correo electrónico para dar formato al contenido.

## Personalización de la dirección de correo electrónico
<a name="cognito-user-pool-settings-email-address-customization"></a>

De forma predeterminada, los mensajes de correo electrónico que Amazon Cognito envía a los usuarios de los grupos de usuarios provienen de **no-reply@verificationemail.com**. Puede optar por especificar las direcciones de correo electrónico personalizadas del remitente (FROM) y de respuesta (REPLY-TO) que reemplazarán a **no-reply@verificationemail.com**.

**Para personalizar las direcciones de correo electrónico FROM y REPLY-TO**

1. Vaya a la [consola de Amazon Cognito](https://console.aws.amazon.com/cognito/home) y 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. Elija el menú **Métodos de autenticación**. En **Email (Correo electrónico)**, elija **Edit (Editar)**.

1. Elija una **SES Region (Región SES)**.

1. Elija una dirección en **FROM email address (Dirección de correo electrónico DE ORIGEN)** en la lista de direcciones de correo electrónico que ha verificado con Amazon SES en la región **SES Region (Región SES)** que haya seleccionado antes. Para usar una dirección de correo electrónico de un dominio verificado, configure los ajustes de correo electrónico en la API AWS Command Line Interface o en la AWS misma. Para obtener más información, consulte [Verificación de direcciones de correo electrónico y dominios en Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html) en la *Guía para desarrolladores de Amazon Simple Email Service*.

1. Elija un **Configuration set (Conjunto de configuración)** de la lista de conjuntos de configuración en la **SES Region (Región SES)** elegida.

1. Introduzca un **FROM sender name (Nombre de remitente FROM)** descriptivo para sus mensajes de correo electrónico y en el formato `John Stiles <johnstiles@example.com>`.

1. Para personalizar la dirección de correo electrónico REPLY-TO, introduzca una dirección de correo electrónico válida en el campo **Dirección de correo electrónico REPLY-TO**.

## Autorización de Amazon Cognito para enviar correos electrónicos de Amazon SES en su nombre (desde una dirección de correo electrónico FROM personalizada)
<a name="cognito-user-pool-settings-ses-authorization-to-send-email"></a>

Puede configurar Amazon Cognito para que envíe correo electrónico desde una dirección de correo electrónico FROM personalizada en lugar de su dirección predeterminada. Para utilizar una dirección personalizada, debe conceder permiso a Amazon Cognito para enviar mensajes de correo electrónico desde una identidad verificada de Amazon SES. En la mayoría de los casos, puede conceder este permiso si crea una política de autorización de envíos. Para obtener más información, consulte [Uso de la autorización de envío con Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html) en la *Guía para desarrolladores de Amazon Simple Email Service*. 

Al configurar un grupo de usuarios para utilizar Amazon SES para los mensajes de correo electrónico, Amazon Cognito crea el rol `AWSServiceRoleForAmazonCognitoIdpEmailService` en su cuenta para conceder acceso a Amazon SES. No se necesita ninguna política de autorización de envío cuando se usa el rol de servicio vinculado de `AWSServiceRoleForAmazonCognitoIdpEmailService`. Solo necesita agregar una política de autorización de envío cuando utiliza la funcionalidad de correo electrónico predeterminada en el grupo de usuarios * y * una identidad de Amazon SES verificada como dirección FROM.

Para obtener más información acerca del rol vinculado al servicio que crea Amazon Cognito, consulte [Uso de roles vinculados a servicios para Amazon Cognito](using-service-linked-roles.md).

En el siguiente ejemplo, la política de envío de autorización otorga a Amazon Cognito la capacidad limitada de utilizar una identidad verificada de Amazon SES. Amazon Cognito solo puede enviar mensajes de correo electrónico cuando lo hace en nombre del grupo de usuarios en la condición `aws:SourceArn` y la cuenta en la condición `aws:SourceAccount`. Para ver más ejemplos, consulte [Ejemplos de la política de autorización de envío con Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization-policy-examples.html) en la *Guía para desarrolladores de Amazon Simple Email Service*.

**nota**  
En este ejemplo, el valor "Sid" es una cadena arbitraria que identifica de forma única la declaración. Para obtener más información sobre la sintaxis de la política, consulte [Políticas autorización de envío con Amazon SES](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization-policies.html) en la *Guía para desarrolladores de Amazon Simple Email Service*.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "stmnt1234567891234",
            "Effect": "Allow",
            "Principal": {
                "Service": [
                    "email.cognito-idp.amazonaws.com"
                ]
            },
            "Action": [
                "SES:SendEmail",
                "SES:SendRawEmail"
            ],
            "Resource": "arn:aws:ses:us-east-1:111122223333:identity/support@example.com",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333"
                },
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:cognito-idp:us-east-1:111122223333:userpool/us-east-1_EXAMPLE"
                }
            }
        }
    ]
}
```

------

La consola de Amazon Cognito agrega una política similar en su nombre cuando selecciona una identidad de Amazon SES desde el menú desplegable. Si utiliza la CLI o la API para configurar el grupo de usuarios, debe adjuntar una política estructurada, al igual que en el ejemplo anterior, a su identidad de Amazon SES.