Passer au contenu

Comment implémenter l'authentification sans mot de passe dans mon groupe d'utilisateurs Cognito ?

Lecture de 6 minute(s)
0

Je souhaite implémenter l'authentification sans mot de passe dans mon groupe d'utilisateurs Amazon Cognito.

Brève description

Amazon Cognito prend en charge deux méthodes d'authentification sans mot de passe :

Important :

  • Si vous avez besoin d'une authentification multifactorielle (MFA) dans votre groupe d'utilisateurs, vous ne pouvez pas utiliser l'authentification sans mot de passe.
  • Une fois qu'un utilisateur s'est authentifié pour la première fois, vous pouvez enregistrer jusqu'à 20 clés d'accès WebAuthn.
  • L'authentification sans mot de passe n'est disponible que dans l'authentification basée sur les choix AuthFlow de ALLOW_USER_AUTH.
  • Vous devez disposer du plan de fonctionnalités Essentials ou Plus pour utiliser l'authentification basée sur les choix.

Résolution

Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'AWS CLI.

Authentification OTP

Activer l'authentification OTP

Procédez comme suit :

  1. Ouvrez la console Amazon Cognito.
  2. Sélectionnez votre groupe d’utilisateurs.
  3. Sous Authentification, choisissez l'onglet Connexion.
  4. Dans Options de connexion en fonction des choix, choisissez Modifier.
  5. Choisissez Mot de passe unique pour le message électronique ou Mot de passe unique pour le message SMS.
  6. Sélectionnez Enregistrer les modifications.
  7. Choisissez Clients d'application, puis sélectionnez votre client d'application. Vous pouvez également en créer un.
  8. Sous Informations sur le client d'application, choisissez Modifier.
  9. Choisissez Connexion basée sur les choix : ALLOW_USER_AUTH.
  10. Sélectionnez Enregistrer les modifications.

Implémenter l'authentification OTP

L'authentification sans mot de passe ne fonctionne qu'avec une connexion gérée. L'interface utilisateur hébergée classique ne prend pas en charge les flux d'authentification sans mot de passe intégrés. Pour plus d'informations, consultez la section Ce qu’il faut savoir sur l'authentification auprès des groupes d'utilisateurs.

Pour implémenter OTP, procédez comme suit :

  1. Configurez une connexion gérée.
  2. Configurez votre domaine de préfixe pour demander aux utilisateurs de saisir leur nom d'utilisateur sur la page de connexion gérée. Pour utiliser un domaine personnalisé, consultez la section Utilisation de votre propre domaine pour la connexion gérée.

Pour utiliser l’AWS CLI, procédez comme suit :

  1. Exécutez la commande initiate-auth pour démarrer l'authentification :

    aws cognito-idp initiate-auth --auth-flow USER_AUTH --auth-parameters USERNAME=example_username --client-id example_clientid

    Remarque : Remplacez tous les exemples de valeurs par vos propres valeurs. Si vous incluez un PREFERRED_CHALLENGE dans la commande précédente, passez à l'étape 4.

  2. La réponse inclut les défis disponibles suivants :

    {
       "AvailableChallenges": [
          "EMAIL_OTP",
          "SMS_OTP",
          "PASSWORD"
        ],
       "Session": "[Session ID]"
    }

    Remarque : Utilisez l'ID de session de la réponse précédente dans toutes les commandes d'authentification suivantes au sein du même flux d'authentification.

  3. Une fois que les utilisateurs ont sélectionné leur méthode d'authentification préférée, exécutez la commande respond-to-auth-challenge pour soumettre leur choix :

    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"

    Remarque : Si l'utilisateur est éligible à la méthode de défi sélectionnée, Amazon Cognito envoie un code à son adresse e-mail ou à son numéro de téléphone.

  4. Pour démarrer la méthode d'authentification avec un défi PREFERRED_CHALLENGE spécifique, exécutez la commande initiate-auth :

    aws cognito-idp initiate-auth --auth-flow USER_AUTH --auth-parameters USERNAME=example_username,PREFERRED_CHALLENGE=EMAIL_OTP --client-id example_clientid

    Remarque : Remplacez EMAIL_OTP par SMS_OTP si vous préférez l'authentification par SMS. Si l'utilisateur est éligible à la méthode PREFERRED_CHALLENGE, Amazon Cognito envoie un code à son adresse e-mail ou à son numéro de téléphone.

  5. Exécutez la commande respond-to-auth-challenge pour renvoyer une réponse :

    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"

    Remarque : Remplacez EMAIL_OTP par SMS_OTP et EMAIL_OTP_CODE par SMS_OTP_CODE si vous utilisez l'authentification par SMS.

Après la vérification OTP, vos utilisateurs reçoivent les jetons Web JSON (JWT) générés par Amazon Cognito.

Authentification par clé d'accès WebAuthn

Activer l'authentification par clé d'accès WebAuthn

Procédez comme suit :

  1. Ouvrez la console Amazon Cognito.
  2. Sélectionnez votre groupe d’utilisateurs.
  3. Sous Authentification, choisissez l'onglet Connexion.
  4. Dans Options de connexion en fonction des choix, choisissez Modifier, puis ajoutez une clé d’accès aux choix disponibles.
  5. Choisissez Modifier la clé d'accès, puis configurez les paramètres suivants :
    Définissez Mode de vérification de l'utilisateur sur Préféré ou Obligatoire.
    Définissez l'ID de la partie de confiance sur votre domaine de groupe d'utilisateurs, votre domaine personnalisé ou votre domaine tiers.
    Remarque : L'ID de la partie de confiance contrôle le domaine qui peut utiliser la clé d'accès pour l'enregistrement et l'authentification.
  6. Sélectionnez Enregistrer les modifications.
  7. Choisissez Clients d'application, puis ouvrez votre client d'application. Vous pouvez également en créer un.
  8. Sous Informations sur le client d'application, choisissez Modifier.
  9. Choisissez Connexion basée sur les choix : ALLOW_USER_AUTH.
  10. Sélectionnez Enregistrer les modifications.

Enregistrer la clé d'accès WebAuthn pour un utilisateur lors de la connexion gérée

Procédez comme suit :

  1. Configurez la connexion gérée sur le client d'application.
    Remarque : Amazon Cognito demande automatiquement la configuration d'un mot de passe pour l'enregistrement d'un nouvel utilisateur.

  2. Pour les utilisateurs actuels qui n'ont pas enregistré de clé d'accès, configurez votre application pour les rediriger vers le point de terminaison d'authentification suivant :
    https://auth.example.com/oauth2/authorize/?client_id=1example23456789&response_type=code&scope=email+openid+phone&redirect_uri=https://www.example.com 

  3. Échangez le code d'autorisation contre des jetons.

  4. Exécutez la commande list-web-authn-credentials suivante pour vérifier les clés d'accès enregistrées :

    aws cognito-idp list-web-authn-credentials --access-token token-from-above-step

    Exemple de sortie :

    {
        "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 la commande précédente renvoie une liste vide, redirigez les utilisateurs vers l'URL de connexion gérée suivante pour lancer le processus d'enregistrement du mot de passe :
    https://cognito-managed-login-domain/passkeys/add?client_id=example_client_id&redirect_uri=https://www.example.com
    Remarque : Assurez-vous que votre session de navigateur est active à partir de la connexion gérée par Cognito. Ajoutez également les paramètres OAuth requis, tels que response_type et portée.

Sur la page d’URL passkeys/add, l'utilisateur ajoute une clé d'accès. Amazon Cognito redirige ensuite l'utilisateur vers la page de l'application que vous avez spécifiée dans le paramètre redirect_uri. Pour les connexions suivantes sur la page de connexion gérée, l'utilisateur peut se connecter à l'aide de sa clé d'accès enregistrée.

Informations connexes

Modèles d'autorisation pour l'authentification par API et SDK

Authentification avec les groupes d'utilisateurs Amazon Cognito

Flux d'authentification

AWS OFFICIELA mis à jour il y a un an