Saltar al contenido

¿Por qué Amazon Cognito no envía el código de verificación por correo electrónico o mensaje de texto SMS con la llamada a la API ForgotPassword?

6 minutos de lectura
0

Quiero saber por qué Amazon Cognito no envió un correo electrónico con el código de verificación ni un mensaje de texto del servicio de mensajes cortos (SMS) cuando utilizo la llamada a la API ForgotPassword.

Solución

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.

Comprobación de las carpetas de correo no deseado y correo basura

Asegúrate de que el correo electrónico de verificación no vaya a las carpetas de correo no deseado o correo basura del usuario.

Confirmación de que el usuario existe en el grupo de usuarios

Confirma que el usuario existe en el grupo de usuarios de Amazon Cognito. Para usar la consola de Amazon Cognito para buscar usuarios en el grupo de usuarios, consulta Administración y búsqueda de cuentas de usuario. También puedes usar la llamada a la API AdminGetUser.

Comprobación del estado del usuario

Comprueba que el estado del usuario no sea FORCE_CHANGE_PASSWORD.

Hasta que los usuarios creados por los administradores inicien sesión con la contraseña proporcionada, el estado del usuario es FORCE_CHANGE_PASSWORD de forma predeterminada.

Si el estado del usuario es FORCE_CHANGE_PASSWORD, el usuario no puede usar la llamada a la API ForgotPassword y no recibe el código de verificación. En su lugar, Amazon Cognito solicita al usuario que cambie su contraseña.

Recuperación de la cuenta de AWS del usuario

Si llamas a la API Forgot Password cuando tu nombre de usuario y número de teléfono no están verificados, recibirás uno de los siguientes errores:

  • En la AWS CLI:
    «An error occurred (InvalidParameterException) when calling the ForgotPassword operation: Cannot reset password for the user as there is no registered/verified email or phone_number»
  • En la consola de Amazon Cognito:
    «Could not reset password for the account, please contact support or try again».

Para recuperar la cuenta del usuario, debes verificar la configuración de la cuenta de usuario. Comprueba si el método de entrega del mensaje de recuperación es por correo electrónico, teléfono, solo correo electrónico, solo teléfono, teléfono si está disponible o ninguno.

Sigue estos pasos:

  1. Abre la consola de Amazon Cognito.
  2. Selecciona el grupo de usuarios.
  3. En Autenticación, selecciona Iniciar sesión.
  4. En la sección Recuperación de la cuenta de usuario, marca las opciones de Método de entrega del mensaje de recuperación. A continuación, confirma que el método de entrega es un atributo verificado para el usuario.
  5. Confirma que el método de entrega es un atributo verificado para el usuario.

Es posible que los usuarios con el estado CONFIRMADO no tengan un correo electrónico o un número de teléfono verificados para recuperar la contraseña. Al seleccionar la casilla de verificación para crear cuentas, debes verificar el correo electrónico y el número de teléfono de las cuentas de usuario que creó un administrador.

Para resolver este problema, usa uno de los siguientes métodos para establecer el estado verificado de tu correo electrónico y número de teléfono en true:

Actualización de los atributos de usuario

Si eres administrador, ejecuta la siguiente llamada a la API AdminUpdateUserAttributes:

aws cognito-idp admin-update-user-attributes --user-attributes Name=example-verification-method,Value=true --user-pool-id example-userpoolID --username example-user-name

Nota: Sustituye example-verification-method por email_verified o phone_number_verified, según el método de entrega del mensaje de recuperación del usuario. Sustituye example-userpoolID por el ID de tu grupo de usuarios y example-user-name por el nombre del usuario que quiere ejecutar la llamada a la API Forgot Password.

Si eres usuario, inicia sesión y ejecuta la siguiente llamada a la API UpdateUserAttributes:

aws cognito-idp update-user-attributes --user-attributes Name=example-verification-method,Value=true --access-token example-access-token

Nota: Sustituye example-verification-method por email_verified o phone_number_verified, según el método de entrega del mensaje de recuperación del usuario. Sustituye example-access-token por el valor de tu token de acceso.

Desencadenador de Lambda previo al registro
Usa el desencadenador de Lambda previo al registro para establecer los atributos de correo electrónico y número de teléfono de un usuario como verificados.

SignUp
Si eres usuario, sigue estos pasos:

  1. Ejecuta la siguiente llamada a la API SignUP:
    aws cognito-idp sign-up --client-id example-client-ID --username example-user-name
    Nota: Sustituye example-client-ID por el ID del cliente de la aplicación en el que quieres registrarte. Sustituye example-user-name por tu nombre de usuario.
  2. Anota el valor de Session en el resultado del comando anterior.
  3. Ejecuta la siguiente llamada a la API ConfirmSignUp:
    aws cognito-idp confirm-sign-up --client-id example-client-ID --username example-user-name --confirmation-code example-confirmation-code
    Nota: Sustituye example-client-ID por el ID del cliente de la aplicación en el que quieres registrarte. Sustituye example-user-name por tu nombre de usuario. Sustituye example-confirmation-code por el valor de Session que anotaste en el paso 2.

Si eres administrador, ejecuta la siguiente llamada a la API AdminConfirmSignUp:

aws cognito-idp admin-confirm-sign-up --client-id example-client-ID --username example-user-name

Nota: Sustituye example-client-ID por el ID del cliente de la aplicación. Sustituye example-user-name por el nombre de usuario.

Comprobación del límite de gastos de la cuenta para enviar mensajes SMS

Amazon Cognito utiliza Amazon Simple Notification Service (Amazon SNS) para enviar mensajes de texto SMS. Si la cuota de gasto de la cuenta que has establecido supera el límite de gastos de la cuenta, Amazon SNS no publica mensajes SMS.

Para comprobar o cambiar el límite de gasto de la cuenta, consulta Configuración de las preferencias de mensajería SMS mediante la consola de administración de AWS.

Comprobación de la cuota de Amazon SES

Amazon Cognito usa Amazon Simple Email Service (Amazon SES) para entregar correos electrónicos. De forma predeterminada, Amazon Cognito permite un número limitado de correos electrónicos diarios para tu grupo de usuarios. Para obtener más información, consulta Cuotas de número y tamaño de recursos.

Para establecer una entrega de correo electrónico superior, puedes configurar tu grupo de usuarios para que utilice tu configuración de correo electrónico de Amazon SES. Para obtener instrucciones, consulta Configuración de correo electrónico para grupos de usuarios de Amazon Cognito.

Uso de la llamada a la API AdminSetUserPassword para restablecer la contraseña de usuario

Los administradores pueden usar la llamada a la API AdminSetUserPassword para establecer la contraseña de un usuario en un grupo de usuarios de Amazon Cognito como temporal o permanente. Los usuarios con contraseñas temporales deben iniciar sesión y cambiar la contraseña temporal antes de que venza. Cuando un usuario restablece la contraseña temporal o la contraseña es permanente, el estado cambia a CONFIRMADO.

Información relacionada

Motivos de error en la entrega de SMS

admin-get-user

AdminResetUserPassword

OFICIAL DE AWSActualizada hace 6 meses