Saltar al contenido

¿Cómo implemento la autenticación sin contraseña en mi grupo de usuarios de Cognito?

6 minutos de lectura
0

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:

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:

  1. Abre la consola de Amazon Cognito.
  2. Selecciona tu grupo de usuarios.
  3. En Autenticación, selecciona la pestaña Iniciar sesión.
  4. En Opciones para el inicio de sesión basado en opciones, selecciona Editar.
  5. 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.
  6. Selecciona Guardar cambios.
  7. Elige Clientes de aplicación y, a continuación, selecciona tu cliente de aplicación. O bien, crea uno nuevo.
  8. En Información del cliente de aplicación, selecciona Editar.
  9. Elige el inicio de sesión basado en opciones: ALLOW_USER_AUTH.
  10. 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:

  1. Configura el inicio de sesión administrado.
  2. 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:

  1. 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_clientid

    Nota: Sustituye todos los valores del ejemplo por tus valores. Si incluyes un PREFERRED_CHALLENGE en el comando anterior, continúa con el paso 4.

  2. 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.

  3. 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.

  4. 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_clientid

    Nota: 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.

  5. 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:

  1. Abre la consola de Amazon Cognito.
  2. Selecciona tu grupo de usuarios.
  3. En Autenticación, selecciona la pestaña Iniciar sesión.
  4. 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.
  5. 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.
  6. Selecciona Guardar cambios.
  7. Elige Clientes de aplicación y, a continuación, selecciona tu cliente de aplicación. O bien, crea uno nuevo.
  8. En Información del cliente de aplicación, selecciona Editar.
  9. Elige el inicio de sesión basado en opciones: ALLOW_USER_AUTH.
  10. Selecciona Guardar cambios.

Registrar la clave de paso de WebAuthn para un usuario en un inicio de sesión administrado

Sigue estos pasos:

  1. 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.

  2. 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 

  3. Cambia el código de autorización por tokens.

  4. 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-step

    Resultado 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"
            }
        ]
    }
  5. 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

Autenticación con grupos de usuarios de Amazon Cognito

Flujos de autenticación

OFICIAL DE AWSActualizada hace un año