Saltar al contenido

¿Cómo soluciono los mensajes de error de MFA en mi grupo de usuarios de Amazon Cognito?

8 minutos de lectura
0

Recibo mensajes de error cuando configuro la autenticación multifactor (MFA) en mi grupo de usuarios de Amazon Cognito.

Resolución

Solución de errores de MFA por SMS

Error «InvalidSmsRoleAccessPolicyException»

Este error se produce cuando el rol de AWS Identity and Access Management (IAM) no tiene permiso para usar Amazon SNS para publicar mensajes de texto SMS.

Para resolver este problema, sigue estos pasos para agregar el permiso sns:Publish al rol de IAM:

  1. Abre la consola de Amazon Cognito.
  2. En el panel de navegación, elige Grupos de usuarios.
  3. Selecciona tu grupo de usuarios.
  4. En el panel de navegación, en Autenticación, elige Métodos de autenticación.
  5. En la sección SMS, anota el nombre del ARN del rol de IAM.
  6. Abre la consola de IAM.
  7. En el panel de navegación, selecciona Roles.
  8. En la barra de búsqueda, introduce el nombre de tu rol de IAM y, a continuación, selecciona tu rol de IAM.
  9. En la sección Políticas de permisos, selecciona la política asociada al rol de IAM.
  10. En la página de detalles de la política, selecciona Editar para agregar el permiso sns:publish.
  11. Elige Siguiente.
  12. Selecciona Guardar cambios.
  13. Comprueba que una política de control de servicio (SCP) no bloquee la acción sns:Publish.

Error «InvalidSmsRoleTrustRelationshipException»

Este error se produce cuando el rol de IAM no tiene una relación de confianza que permita a Amazon Cognito asumirlo. Esto ocurre cuando no se confía en cognito-idp.amazonaws.com o el ID externo de la política de confianza del rol no coincide con el de la configuración de SMS del grupo de usuarios.

Para resolver este problema, configura correctamente la política de confianza para el rol de IAM. Para obtener instrucciones, consulta Preparación de un rol de IAM que Amazon Cognito pueda utilizar para enviar mensajes SMS con AWS End User Messaging SMS.

Error «InvalidParameterException»

Este error se produce cuando la solicitud de API envía un parámetro no válido a Amazon Cognito. Para resolver este problema, especifica todos los valores obligatorios en el parámetro SmsMfaConfiguration de la API SetUserPoolMfaConfig.

Solución de errores de MFA con TOTP

Requisitos:

Nota: Los proveedores de identidades (IDP) externos administran la MFA para los usuarios federados. Amazon Cognito no solicita la MFA durante la federación de usuarios.

Error «NotAuthorizedException: Access token does not have required scopes»

Este error se produce cuando el token de acceso no incluye el ámbito aws.cognito.signin.user.admin necesario para llamar a la API AssociateSoftwareToken. Cuando un usuario usa la API InitiateAuth para iniciar sesión, la API InitiateAuth incluye automáticamente este ámbito en el token de acceso.

Sin embargo, cuando un usuario utilice la página de inicio de sesión administrada para iniciar sesión, comprueba que el token de acceso incluya el ámbito aws.cognito.signin.user.admin. Para comprobar si el token incluye el ámbito aws.cognito.signin.user.admin, decodifica la carga útil del token de acceso con Base64. Para obtener más información, consulta Confirmar la estructura del JWT.

Si el token no incluye el ámbito aws.cognito.signin.user.admin, sigue estos pasos para agregarlo:

  1. Abre la consola de Amazon Cognito.
  2. En el panel de navegación, elige Grupos de usuarios.
  3. Selecciona el grupo de usuarios que desees modificar.
  4. En el panel de navegación, en Aplicaciones, elige Clientes de aplicaciones.
  5. Selecciona el cliente de aplicación que desees modificar.
  6. Selecciona la pestaña Páginas de inicio de sesión y, a continuación, elige Editar.
  7. En la lista desplegable de ámbitos de OpenID Connect, elige aws.cognito.signin.user.admin.
  8. Selecciona Guardar cambios.

Error «NotAuthorizedException: Invalid session for the user, session can only be used once»

Este error se produce cuando un usuario intenta utilizar la reutilización de una sesión. Si los usuarios reciben este error en medio de un flujo de autenticación de MFA con TOTP, deben reiniciar el proceso de autenticación desde el principio. Para reiniciar la autenticación, usa la API InitiateAuth o AdminInitiateAuth.

Error «NotAuthorizedException: Invalid session for the user, session is expired»

Este error se produce cuando la sesión vence. De forma predeterminada, las sesiones vencen a los 3 minutos.

Para resolver este problema, aumenta la duración del flujo de sesión de autenticación en el cliente de la aplicación. Puedes aumentar la duración hasta 15 minutos.

Error «CodeMismatchException: Invalid code or auth state for the user»

Este error se produce cuando el código TOTP del usuario no es válido, el estado del usuario no admite la llamada a la API o el código TOTP ha vencido. Por ejemplo, un usuario llama a la API RespondToAuthChallenge con un desafío MFA_SETUP y no configuró la MFA con TOTP.

Para resolver este problema, sigue estos pasos:

  1. Configura la MFA con TOTP para el usuario.
  2. Llama a la API RespondToAuthChallenge con el desafío MFA_SETUP.
  3. Verifica que la configuración de hora de tu dispositivo de usuario coincida con la hora actual para generar códigos TOTP válidos.

Error «InvalidParameterException: User does not have delivery config set to turn on SOFTWARE_TOKEN_MFA»

Este error se produce cuando no configuraste la MFA con TOTP para tus usuarios. Para resolver el problema, configura la MFA con TOTP antes de llamar a la API SetUserMFAPreference o AdminSetUserMFAPreference.

Error «SoftwareTokenMFANotFoundException: Software Token MFA has not been enabled by the userPool»

Este error se produce porque no configuraste la MFA con TOTP en tu grupo de usuarios. Para resolver el error, configura la MFA con TOTP.

Error «NotAuthorizedException: Invalid session for the use»

Este error surge por los siguientes motivos:

  • Una llamada a la API incluye una cadena de sesión incorrecta.
  • Las llamadas a la API no se producen en la secuencia correcta.

Para resolver este problema, configura las llamadas a la API en la secuencia correcta. Por ejemplo, para recibir la cadena de sesión en la respuesta, llama primero a la API InitiateAuth. Para evitar un problema, comprueba que la siguiente llamada a la API utilice la cadena de sesión devuelta en su parámetro de solicitud.

Error «EnableSoftwareTokenMFAException: Code mismatch»

Este error se produce cuando el código TOTP que envía el usuario no coincide con lo que Amazon Cognito espera durante la configuración de la MFA con TOTP.

Para solucionar este problema, toma las siguientes medidas:

  • Recupera el código secreto de la API AssociateSoftwareToken.
  • Guarda el código secreto en la aplicación de autenticación.
  • Envía un código TOTP actualizado.
  • Usa el código secreto que recuperaste de la API AssociateSoftwareToken para generar un código QR. A continuación, utiliza el siguiente ejemplo de código para configurar la aplicación de autenticación.

Ejemplo de código Python para generar un código QR a partir del código secreto:

import pyotp
from qrcode.main import QRCode

secret_key = "secret-key-retrieved-from-associate-software-token-api"

totp = pyotp.TOTP(secret_key)
provisioning_uri = totp.provisioning_uri()

qr = QRCode()
qr.add_data(provisioning_uri)
qr.make()
qr.print_ascii()

Solución de errores de MFA por correo electrónico

Antes de configurar el correo electrónico como factor de MFA, debes configurar Amazon Simple Email Service (Amazon SES) en tu grupo de usuarios para enviar mensajes de correo electrónico a tus usuarios.

Cuando activas la MFA y eliges el correo electrónico como segundo factor, Amazon Cognito envía mensajes de correo electrónico a una dirección de correo electrónico no verificada. Una vez que los usuarios hayan completado la verificación de MFA por mensaje de correo electrónico, Amazon Cognito establece el atributo email_verified en true.

Error «InvalidParameterException: Cannot set EmailMfaConfiguration when user pool EmailConfiguration contains an EmailSendingAccount of COGNITO_DEFAULT»

Este error se produce cuando se utiliza la configuración de correo electrónico predeterminada. Para resolver este problema, configura los ajustes de correo electrónico de Amazon SES para tu grupo de usuarios.

Error «InvalidParameterException: Cannot set EmailMfaConfiguration when user pool AccountRecoverySetting is not set or contains only verified_email in RecoveryMechanisms»

Este error se produce cuando utilizas solo el correo electrónico como método de recuperación de la cuenta del usuario. No puedes usar el mismo factor tanto en la MFA como en la recuperación de cuentas. Para resolver este problema, elige otro método de recuperación de la cuenta en lugar del correo electrónico. Para obtener instrucciones, consulta Configuración del restablecimiento y la recuperación de la contraseña.

Error «FeatureUnavailableInTierException»

Este error se produce cuando tu grupo de usuarios tiene el plan de características Lite. Solo los planes Essentials y Plus incluyen MFA por correo electrónico. Para resolver este problema, cambia el plan de tu grupo de usuarios a Essentials o Plus.

Información relacionada

Adición de MFA a un grupo de usuarios

MFA con mensajes SMS y correo electrónico

OFICIAL DE AWSActualizada hace 2 meses