Resolución de problemas en Amazon Cognito - Amazon Cognito

Resolución de problemas en Amazon Cognito

En este capítulo, se proporcionan soluciones a los problemas habituales que pueden surgir al trabajar con Amazon Cognito. Las implementaciones de Amazon Cognito pueden enfrentarse a diversos desafíos en los flujos de autenticación, las configuraciones de grupos de usuarios y las configuraciones de federación de identidades. Tanto si está desarrollando una nueva aplicación como si está manteniendo una existente, esta guía de solución de problemas le ayudará a identificar y resolver rápidamente los problemas comunes.

Errores en la configuración de dominios personalizados

Al configurar nombres de dominio personalizados en Amazon Cognito, es posible que reciba mensajes de error. Los errores más comunes incluyen problemas de validación, problemas con los certificados o conflictos de dominio.

Custom domain is not a valid subdomain

Este error indica un problema con la resolución del DNS del dominio principal. Amazon Cognito no admite dominios de nivel superior y requiere que el dominio principal tenga un registro A de DNS para su validación.

Problema

Este error indica un problema con la resolución del DNS del dominio principal. Amazon Cognito no admite dominios de nivel superior y requiere que el dominio principal tenga un registro A de DNS para su validación.

Solución
  • Cree un registro A para el dominio principal: debe crear un registro A en su configuración de DNS para el dominio principal de su dominio personalizado.

    • Ejemplo: si su dominio personalizado es auth.xyz.yourdomain.com, el dominio principal es xyz.yourdomain.com. Si quiere configurar xyz.yourdomain.com como un dominio personalizado, el dominio principal es yourdomain.com.

    • El dominio principal debe resolverse en una dirección IP válida. Si no apunta a una dirección IP real, puedes usar una dirección IP ficticia, como 8.8.8.8.

  • Verifique la propagación del DNS (opcional pero recomendable): para asegurarse de que su proveedor de DNS haya propagado el cambio, puede ejecutar un comando dig.

    • Si usa auth.xyz.yourdomain.com como dominio personalizado: dig A xyz.yourdomain.com +short

    • Si usa xyz.yourdomain.com como dominio personalizado: dig A yourdomain.com +short

    • El comando debe devolver la dirección IP que configuró. Si no es así, espere a que el cambio se haya propagado por completo.

  • Elimine el registro A del dominio principal: tras crear correctamente el dominio personalizado en Amazon Cognito, puede eliminar el registro A que creó para el dominio principal si era ficticio.

Para obtener más información, consulte Uso de un dominio propio con la IU alojada.

Domain already associated with another user pool

Los nombres de dominio personalizados deben ser únicos en todas las regiones y Cuentas de AWS.

Problema

Los nombres de dominio personalizados deben ser únicos en todas las regiones y Cuentas de AWS.

Solución
  • Para usar el nombre de dominio para un nuevo grupo de usuarios, debe eliminar el dominio personalizado del grupo de usuarios al que está asociado actualmente.

  • Espera después de la eliminación: el dominio personalizado tarda un tiempo en eliminarse por completo del primer grupo de usuarios. Es posible que se siga produciendo este error al crear un nuevo dominio personalizado con el mismo nombre inmediatamente después de eliminarlo. Espere unos minutos e inténtelo de nuevo.

One or more of the CNAMEs that you provided are already associated with a different resource

Al crear un dominio personalizado, Amazon Cognito crea una distribución de Amazon CloudFront administrada por AWS. Un nombre de dominio solo se puede utilizar con una distribución de Amazon CloudFront. Este error se produce si el nombre de dominio ya está en uso como dominio alternativo para otra distribución de Amazon CloudFront.

Problema

Al crear un dominio personalizado, Amazon Cognito crea una distribución de Amazon CloudFront administrada por AWS. Un nombre de dominio solo se puede utilizar con una distribución de Amazon CloudFront. Este error se produce si el nombre de dominio ya está en uso como dominio alternativo para otra distribución de Amazon CloudFront.

Solución
  • Opción 1: use un nombre de dominio diferente para su dominio personalizado de Amazon Cognito.

  • Opción 2: si utiliza el nombre de dominio de Amazon Cognito, no lo utilice con otra distribución de Amazon CloudFront.

The specified SSL certificate doesn't exist

Amazon Cognito utiliza Amazon CloudFront, que requiere que el certificado de AWS Certificate Manager (ACM) esté en la Región de AWS us-east-1 (Virginia del Norte), independientemente de cuál sea la región del grupo de usuarios.

Problema

Amazon Cognito utiliza Amazon CloudFront, que requiere que el certificado de AWS Certificate Manager (ACM) esté en la Región de AWS us-east-1 (Virginia del Norte), independientemente de cuál sea la región del grupo de usuarios.

Solución
  • Compruebe la región del certificado: confirme que el certificado ACM se encuentra en la región us-east-1.

  • Compruebe la validez del certificado: asegúrese de que el certificado seleccionado no esté caducado.

  • Certificados importados. Si importó el certificado a ACM, compruebe lo siguiente:

    • Fue emitido por una autoridad pública de certificación.

    • Incluye la cadena de certificados correcta.

  • Comprobación de políticas de AWS KMS: este error puede estar provocado por una declaración deny explícita en una política AWS Key Management Service (AWS KMS) del usuario o rol de IAM que crea el dominio. Sobre todo, compruebe si hay denegaciones explícitas en acciones kms:DescribeKey, kms:CreateGrant o kms:*.

Invalid refresh tokenError

Problema

Recibe un error Invalid refresh token al intentar utilizar un token de actualización para obtener nuevos tokens de acceso e ID de su grupo de usuarios de Amazon Cognito mediante la operación de API AdminInitiateAuth o InitiateAuth.

Solución

Implemente los siguientes pasos de resolución de problemas en función de la configuración de su grupo de usuarios y del uso de la API:

  • Use el mismo ID de cliente de aplicación: al llamar a la API AdminInitiateAuth o InitiateAuth al actualizar el token, debe usar exactamente el mismo ID de cliente de aplicación que se utilizó durante la autenticación inicial que generó el token de actualización.

  • Confirme el dispositivo: si tiene habilitado el seguimiento de dispositivos en su grupo de usuarios, pero el dispositivo del usuario no se ha confirmado, primero debe llamar a la API ConfirmDevice. Cuando el usuario confirme su dispositivo, puede intercambiar el token de actualización.

  • Incluya la clave del dispositivo en la solicitud de actualización: si el seguimiento del dispositivo está activado, incluya la clave única del dispositivo como AuthParameter cuando utilice el flujo REFRESH_TOKEN_AUTH:

    { "AuthFlow": "REFRESH_TOKEN_AUTH", "AuthParameters": { "REFRESH_TOKEN": "example_refresh_token", "SECRET_HASH": "example_secret_hash", // Required if your app client uses a client secret "DEVICE_KEY": "example_device_key" } }
  • Use USER_SRP_AUTH para el seguimiento de dispositivos: si utiliza el seguimiento de dispositivos, el flujo de autenticación inicial debe ser USER_SRP_AUTH.

Para obtener más información, consulte Uso de dispositivos de usuario en el grupos de usuarios.

Errores de respuesta SAML no válidos en la federación

Los usuarios reciben varios errores Invalid SAML response similares al intentar federarse en Amazon Cognito mediante SAML 2.0. Estos errores pueden producirse debido a problemas de asignación de atributos, problemas con los certificados o discordancias de configuración.

Invalid user attributes: Required attribute

Problema

A un usuario le falta un valor para un atributo que es obligatorio en su grupo de usuarios, o el IdP está intentando eliminar o actualizar un atributo inmutable.

Solución
  • Compruebe los atributos obligatorios definidos en la configuración de su grupo de usuarios.

  • Con las herramientas de captura de red de su navegador, recupere la respuesta SAML. Es posible que tenga que realizar una decodificación de URL y base64. Compruebe que el atributo esté en la aserción de SAML.

  • Inicie sesión en su proveedor de identidad y revise los atributos que envía a Amazon Cognito. Compruebe que el IdP esté configurado para enviar el atributo necesario con el nombre correcto.

  • Para los atributos inmutables, ejecute el siguiente comando de la AWS CLI para identificarlos: aws cognito-idp describe-user-pool --user-pool-id USER-POOL-ID --query 'UserPool.SchemaAttributes[?Mutable==`false`].Name'.

  • En las asignaciones de atributos de SAML de su IdP, elimine todas las asignaciones que se dirijan a un atributo inmutable de Amazon Cognito. Si lo prefiere, actualice el atributo de destino a un atributo diferente y mutable.

Invalid SAML response received: SAML Response signature is invalid

Problema

Su IdP ha actualizado su certificado de firma de SAML, lo que provoca una discrepancia entre el certificado de la respuesta de SAML y el archivo de metadatos almacenado en Amazon Cognito.

Solución
  1. Descargue el archivo de metadatos más reciente de su IdP.

  2. En la consola de Amazon Cognito, vaya a los proveedores sociales y externos de su grupo de usuarios, edite su proveedor de SAML y sustituya el archivo de metadatos existente por el archivo recién descargado.

Audience restriction or Application with identifier not found

Problema

Se ha configurado un ID de entidad incorrecto en su IdP o la aserción utiliza el nombre de recurso uniforme (URN) de otro grupo de usuarios.

Solución
  1. Obtenga su ID de grupo de usuarios de Amazon Cognito en la sección Descripción general de la consola.

  2. En la consola de administración de su IdP, actualice el ID de la entidad en la aplicación SAML de su grupo de usuarios. Configure el ID de la entidad para que coincida con el formato urn:amazon:cognito:sp:USER_POOL_ID. Sustituya USER_POOL_ID por el ID del grupo de usuarios del paso anterior.

An error was encountered with the requested page

Problema

La URL del Assertion Consumer Service (ACS) registrada con su IdP está mal configurada o el IdP no envía la respuesta SAML mediante la vinculación POST requerida.

Solución
  • En la consola de administración de su IdP, actualice la aplicación con el formato de URL ACS correcto y compruebe que está usando la vinculación HTTP POST.

  • Formato de dominio predeterminado: https://cognito-idp.Region.amazonaws.com/your user pool ID/saml2/idpresponse

  • Formato de dominio personalizado: https://auth.example.com/saml2/idpresponse

Invalid relayState from identity provider

Problema

Falta el parámetro RelayState o no es válido, o la URL del IdP y Amazon Cognito no coinciden.

Solución

Para obtener más información, consulte Uso de proveedores de identidades SAML con un grupo de usuarios.

Los usuarios de inicio de sesión administrado no pueden seleccionar un factor MFA

Problema

Los usuarios no pueden elegir el método de MFA que prefieran al iniciar sesión mediante el inicio de sesión administrado o no se les solicita el método de MFA esperado.

Solución

Amazon Cognito sigue una lógica específica para determinar qué factores de MFA están disponibles para los usuarios en función de la configuración del grupo de usuarios, los atributos de los usuarios y la configuración de recuperación de la cuenta. Por ejemplo, los usuarios no pueden usar el MFA de correo electrónico si el correo electrónico está configurado como el método de recuperación de su cuenta principal.

Para anular la selección predeterminada de factores de MFA, puede implementar uno de estos procesos:

  • Para aplicaciones públicas: utilice SetUserMFAPreference con un token de acceso válido para que los usuarios puedan establecer sus propias preferencias de MFA

  • Para aplicaciones administradas por el administrador: utilice AdminSetUserMFAPreference con credenciales para configurar las preferencias de MFA

Ambas operaciones le permiten habilitar o deshabilitar los métodos de SMS, correo electrónico y MFA TOTP para usuarios individuales, y configurar así un método como preferido.

Para obtener más información, consulte Adición de MFA a un grupo de usuarios..

Los usuarios del método sin contraseña y con clave de acceso no pueden usar la MFA

Problema

Los usuarios que inician sesión con métodos de autenticación sin contraseña o con claves de acceso no pueden añadir ni usar la autenticación multifactor.

Solución

Esta es una limitación prevista. Puede configurar su grupo de usuarios para que los usuarios tengan MFA o inicien sesión con factores sin contraseña, pero no ambas cosas. La MFA solo está disponible para flujos de autenticación basados en contraseñas.

Para obtener más información, consulte Autenticación con grupos de usuarios.

No se recibe el código de restablecimiento de la contraseña por correo electrónico o SMS

Problema

Los usuarios no pueden recibir los códigos de verificación durante el proceso de olvido de la contraseña mediante su correo electrónico o SMS.

Solución

Hay varias razones por las que es posible que no se reciban los códigos de verificación. Siga esta lista de comprobación para solucionar el problema:

  • Compruebe las carpetas de correo no deseado y spam del usuario.

  • Confirme que el usuario existe en el grupo de usuarios.

  • Compruebe que el estado del usuario no sea FORCE_CHANGE_PASSWORD. Si ese es el caso, el usuario lo habrá creado un administrador y Amazon Cognito le pedirá que establezca una contraseña cuando inicie sesión con su contraseña temporal.

  • Compruebe que el usuario tenga un atributo de correo electrónico o número de teléfono verificados.

  • Comprueba el límite de gasto de su cuenta para la mensajería SMS

  • Consulte su cuota de envío de mensajes de Amazon Simple Email Service (Amazon SES).

  • Compruebe si tanto SMS como Amazon SES (en el caso de que su grupo de usuarios esté configurado para enviar correo electrónico con Amazon SES) se han retirado del entorno de pruebas. Si no se han retirado del entorno de pruebas, las direcciones de correo electrónico o los números de teléfono que no hayan sido verificados por Amazon SES o AWS End User Messaging SMS no podrán recibir códigos de restablecimiento de contraseñas.

  • Si el usuario tiene un factor de MFA activo, compruebe que no está intentando generar un mensaje con el mismo factor. Por ejemplo, los usuarios con el MFA de correo electrónico activo no pueden enviar códigos de restablecimiento de contraseña por correo electrónico.

Para obtener más información, consulte Configuración de correo electrónico para grupos de usuarios de Amazon Cognito y Configuración de mensajes SMS para grupos de usuarios de Amazon Cognito.

SECRET_HASHErrores

Problema

Las solicitudes de la API de autenticación a los clientes de aplicación con secretos de cliente devuelven errores como An error occurred (NotAuthorizedException) when calling the ForgotPassword operation: Client 1example23456789 is configured with secret but SECRET_HASH was not received.

Solución

La aplicación debe calcular el SECRET_HASH para el usuario actual, el cliente de aplicación y el secreto del cliente. Este es el método de cálculo:

Base64 ( HMAC_SHA256 ( "client secret", "Username" + "Client Id" ) )

Para obtener el secreto del cliente, puede hacer lo siguiente:

  1. Abra la consola de Amazon Cognito y diríjase a su cliente de aplicación desde el menú Clientes de aplicación. En la sección Información del cliente de aplicación, busque el Secreto de cliente. Seleccione Mostrar el secreto de cliente y aparecerá el secreto del cliente de la aplicación.

  2. Genere una solicitud DescribeUserPoolClient. El secreto del cliente está incluido en la respuesta.

Para obtener más información, consulte Cálculo de los valores de hash secretos.

La consola de Amazon Cognito elige una configuración predeterminada para un nuevo grupo de usuarios

Problema

Al configurar un nuevo grupo de usuarios en la consola, Amazon Cognito selecciona varios ajustes predeterminados de forma automática. Algunos ajustes no se pueden cambiar una vez creado el grupo de usuarios. ¿Cómo puede tomar decisiones informadas y entender qué es lo que Amazon Cognito seleccionó automáticamente?

Solución

La nueva configuración del grupo de usuarios de la consola de Amazon Cognito está diseñada para realizar pruebas y crear prototipos rápidamente. La consola le presenta solo las opciones de configuración más importantes, aquellas que no se pueden cambiar tras la creación del grupo de usuarios. Todos los demás ajustes que Amazon Cognito configure automáticamente se pueden modificar más adelante.

Se recomienda el siguiente enfoque:

  1. Utilice la consola para crear grupos de usuarios de prueba mientras perfecciona la implementación.

  2. Una vez que haya determinado la configuración de producción, aplíquela a los grupos de usuarios de prueba.

  3. Utilice las operaciones de las API DescribeUserPool y DescribeUserPoolClient para generar plantillas JSON de la configuración probada.

  4. Use estas plantillas con herramientas de implementación, como los AWS SDK, el CDK o la API de REST, o use CloudFormation para crear sus recursos de producción.

Para obtener más información, consulte Introducción a los grupos de usuarios.

Recursos adicionales de solución de problemas

Para obtener orientación adicional sobre la resolución de problemas y las soluciones aportadas por la comunidad, también puede consultar los siguientes recursos externos: