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 esxyz.yourdomain.com. Si quiere configurarxyz.yourdomain.comcomo un dominio personalizado, el dominio principal esyourdomain.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.comcomo dominio personalizado:dig A xyz.yourdomain.com +short -
Si usa
xyz.yourdomain.comcomo 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
denyexplí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 accioneskms:DescribeKey,kms:CreateGrantokms:*.
-
Invalid refresh tokenError
- Problema
-
Recibe un error
Invalid refresh tokenal 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 APIAdminInitiateAuthoInitiateAuth. - 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
AdminInitiateAuthoInitiateAuthal 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
AuthParametercuando utilice el flujoREFRESH_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_AUTHpara el seguimiento de dispositivos: si utiliza el seguimiento de dispositivos, el flujo de autenticación inicial debe serUSER_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
-
-
Descargue el archivo de metadatos más reciente de su IdP.
-
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
-
-
Obtenga su ID de grupo de usuarios de Amazon Cognito en la sección Descripción general de la consola.
-
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:. SustituyaUSER_POOL_IDUSER_POOL_IDpor 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
RelayStateo no es válido, o la URL del IdP y Amazon Cognito no coinciden. - Solución
-
-
Para los flujos iniciados por el proveedor de servicios (iniciados por el SP): inicie siempre la autenticación en el punto de conexión del grupo de usuarios
/oauth2/authorize. Las aserciones de SAML que no devuelven parámetrosRelayStatedesde la visita inicial del usuario a Amazon Cognito no son solicitudes válidas iniciadas por SP. -
Para los flujos iniciados por el proveedor de identidad (iniciados por el IdP): el IdP debe incluir el parámetro
RelayStatecon la aserción SAML en el punto de conexión/saml2/idpresponse, utilizando el formato requerido (redirect_uri=REDIRECT_URI&state=STATE).
-
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_HASHpara 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:
-
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.
-
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:
-
Utilice la consola para crear grupos de usuarios de prueba mientras perfecciona la implementación.
-
Una vez que haya determinado la configuración de producción, aplíquela a los grupos de usuarios de prueba.
-
Utilice las operaciones de las API DescribeUserPool y DescribeUserPoolClient para generar plantillas JSON de la configuración probada.
-
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:
-
AWS re:Post Amazon Cognito community
: explore las preguntas y soluciones de la comunidad. -
AWS Knowledge Center Amazon Cognito articles
: artículos seleccionados sobre resolución de problemas.