¿Cómo implemento la autenticación sin contraseña en mi grupo de usuarios de Cognito?
Quiero implementar la autenticación sin contraseña en mi grupo de usuarios de Amazon Cognito.
Descripción corta
Amazon Cognito admite dos métodos de autenticación sin contraseña:
- Inicio de sesión sin contraseña con contraseñas de un solo uso (OTP)
- Inicio de sesión sin contraseña con claves de paso de WebAuthn
Importante:
- Si necesitas la autenticación multifactor (MFA) en tu grupo de usuarios, no puedes usar la autenticación sin contraseña.
- Una vez que un usuario se autentica inicialmente, puedes registrar hasta 20 claves de paso de WebAuthn.
- La autenticación sin contraseña solo está disponible en el AuthFlow choice-based authentication de ALLOW_USER_AUTH.
- Debes tener el plan de características Essentials o Plus para usar la autenticación basada en opciones.
Resolución
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulte Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.
Autenticación OTP
Activar autenticación OTP
Sigue estos pasos:
- Abre la consola de Amazon Cognito.
- Selecciona tu grupo de usuarios.
- En Autenticación, selecciona la pestaña Iniciar sesión.
- En Opciones para el inicio de sesión basado en opciones, selecciona Editar.
- Elige una contraseña de un solo uso para mensajes de correo electrónico o una contraseña de un solo uso para mensajes SMS.
- Selecciona Guardar cambios.
- Elige Clientes de aplicación y, a continuación, selecciona tu cliente de aplicación. O bien, crea uno nuevo.
- En Información del cliente de aplicación, selecciona Editar.
- Elige el inicio de sesión basado en opciones: ALLOW_USER_AUTH.
- Selecciona Guardar cambios.
Implementar autenticación OTP
La autenticación sin contraseña solo funciona con el inicio de sesión administrado. La interfaz de usuario alojada clásica no admite los flujos de autenticación sin contraseña integrados. Para obtener más información, consulta Aspectos que debes saber sobre la autenticación con grupos de usuarios.
Para implementar OTP, sigue estos pasos:
- Configura el inicio de sesión administrado.
- Configura tu dominio de prefijo para que los usuarios escriban su nombre de usuario en la página de inicio de sesión administrado. Para usar un dominio personalizado, consulta Utilizar tu propio dominio para el inicio de sesión administrado.
Para usar la AWS CLI, sigue estos pasos:
-
Ejecuta el comando initiate-auth para iniciar la autenticación:
aws cognito-idp initiate-auth --auth-flow USER_AUTH --auth-parameters USERNAME=example_username --client-id example_clientidNota: Sustituye todos los valores del ejemplo por tus valores. Si incluyes un PREFERRED_CHALLENGE en el comando anterior, continúa con el paso 4.
-
La respuesta incluye los siguientes desafíos disponibles:
{ "AvailableChallenges": [ "EMAIL_OTP", "SMS_OTP", "PASSWORD" ], "Session": "[Session ID]" }Nota: Utiliza el ID de sesión de la respuesta anterior en todos los comandos de autenticación posteriores dentro del mismo flujo de autenticación.
-
Después de que los usuarios seleccionen su método de autenticación preferido, ejecuta el comando respond-to-auth-challenge para enviar su elección:
aws cognito-idp respond-to-auth-challenge --challenge-name SELECT_CHALLENGE --challenge-responses USERNAME=example_username,ANSWER=EMAIL_OTP --client-id example_clientid --session "SESSION_ID_FROM_PREVIOUS_RESPONSE"Nota: Si el usuario cumple los requisitos del método de desafío seleccionado, Amazon Cognito envía un código al correo electrónico o al número de teléfono del usuario.
-
Para iniciar el método de autenticación con un PREFERRED_CHALLENGE específico, ejecuta el comando initiate-auth:
aws cognito-idp initiate-auth --auth-flow USER_AUTH --auth-parameters USERNAME=example_username,PREFERRED_CHALLENGE=EMAIL_OTP --client-id example_clientidNota: Sustituye EMAIL_OTP por SMS_OTP si prefieres la autenticación por SMS. Si el usuario cumple los requisitos del método PREFERRED_CHALLENGE, Amazon Cognito envía un código al correo electrónico o al número de teléfono del usuario.
-
Ejecuta el comando respond-to-auth-challenge para devolver una respuesta:
aws cognito-idp admin-respond-to-auth-challenge --challenge-name EMAIL_OTP --challenge-responses USERNAME=example_username,EMAIL_OTP_CODE=OTP_EMAIL --client-id example_clientid --session "SESSION_ID_FROM_PREVIOUS_RESPONSE"Nota: Sustituye EMAIL_OTP por SMS_OTP y EMAIL_OTP_CODE por SMS_OTP_CODE si utilizas la autenticación por SMS.
Tras la verificación de OTP, tus usuarios reciben los tokens web JSON (JWT) que Amazon Cognito generó.
Autenticación con clave de paso de WebAuthn
Activación de la autenticación con clave de paso de WebAuthn
Sigue estos pasos:
- Abre la consola de Amazon Cognito.
- Selecciona tu grupo de usuarios.
- En Autenticación, selecciona la pestaña Iniciar sesión.
- En Opciones para el inicio de sesión basado en opciones, selecciona Editar y, a continuación, agrega la clave de paso a las opciones disponibles.
- Selecciona Editar clave de paso y, a continuación, configura los siguientes ajustes:
Establece el modo de verificación de usuario en Preferido u Obligatorio.
Configura el ID de relación de confianza en el dominio de tu grupo de usuarios, el dominio personalizado o el dominio de terceros.
Nota: El ID de relación de confianza controla el dominio que puede usar la clave de paso para el registro y la autenticación. - Selecciona Guardar cambios.
- Elige Clientes de aplicación y, a continuación, selecciona tu cliente de aplicación. O bien, crea uno nuevo.
- En Información del cliente de aplicación, selecciona Editar.
- Elige el inicio de sesión basado en opciones: ALLOW_USER_AUTH.
- Selecciona Guardar cambios.
Registrar la clave de paso de WebAuthn para un usuario en un inicio de sesión administrado
Sigue estos pasos:
-
Configura el inicio de sesión administrado en el cliente de aplicación.
Nota: Amazon Cognito solicita automáticamente la configuración de la clave de paso para el registro de nuevos usuarios. -
Para los usuarios actuales que no han registrado una clave de paso, configura la aplicación para redirigirlos al siguiente punto de enlace de autenticación:
https://auth.example.com/oauth2/authorize/?client_id=1example23456789&response_type=code&scope=email+openid+phone&redirect_uri=https://www.example.com -
Ejecuta el siguiente comando list-web-authn-credentials para comprobar si hay claves de paso registradas:
aws cognito-idp list-web-authn-credentials --access-token token-from-above-stepResultado de ejemplo:
{ "Credentials": [ { "CredentialId": "r8DCexamplecredentialsaWMQ", "FriendlyCredentialName": "Chrome on Mac", "RelyingPartyId": "<cognito-prefix>.auth.us-east-1.amazoncognito.com", "AuthenticatorAttachment": "platform", "AuthenticatorTransports": [ "internal" ], "CreatedAt": "2025-06-27T07:41:15.800000+00:00" } ] } -
Si el comando anterior devuelve una lista vacía, redirige a los usuarios a la siguiente URL de inicio de sesión administrado para iniciar el proceso de registro de la clave de paso:
https://cognito-managed-login-domain/passkeys/add?client_id=example_client_id&redirect_uri=https://www.example.com
Nota: Asegúrate de tener una sesión de navegador activa desde el inicio de sesión administrado de Cognito. Además, agrega los parámetros de OAuth necesarios, como response_type y scope.
En la página de URL claves de paso/agregar, el usuario agrega una clave de paso. A continuación, Amazon Cognito redirige al usuario a la página de la aplicación que especificaste en el parámetro redirect_uri. Para los siguientes inicios de sesión en la página de inicio de sesión administrado, el usuario puede iniciar sesión con la clave de paso registrada.
Información relacionada
Modelos de autorización para la autenticación mediante API y SDK
- Etiquetas
- Amazon Cognito
- Idioma
- Español

Contenido relevante
preguntada hace 2 años
preguntada hace un año