Je souhaite activer l'authentification multifactorielle (MFA) pour les utilisateurs de mon application. Je souhaite effectuer cette opération à l'aide d'un jeton de mot de passe unique à durée limitée (TOTP) qui utilise les groupes d'utilisateurs Amazon Cognito.
Brève description
Pour activer l’authentification multifactorielle (MFA) TOTP pour les utilisateurs de votre application, configurez la MFA du jeton logiciel TOTP pour votre groupe d'utilisateurs.
Important : Avant de configurer le jeton TOTP, vérifiez les exigences suivantes :
- Vous devez ajouter la MFA à votre groupe d'utilisateurs.
- Les jetons TOTP ne peuvent pas être associés à un utilisateur tant que celui-ci n'essaie pas de se connecter à votre application ou s'il n'est pas déjà authentifié.
- La MFA ne prend pas en charge les utilisateurs fédérés au sein d'un groupe d'utilisateurs.
L'exemple suivant montre comment utiliser l'interface de ligne de commande AWS (AWS CLI) et Google Authenticator pour configurer la MFA TOTP.
Résolution
Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes AWS CLI, consultez la section Résoudre les erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'interface.
-
Pour démarrer la configuration du générateur de jetons MFA, exécutez la commande suivante de l'interface de ligne de commande AWS associate-software-token :
aws cognito-idp associate-software-token --access-token eyJraWQiO........ua5Pq3NaA
{
"SecretCode":
"AETQ6XXMDFYMEPFQQ7FD4HKXXXXAOY3MBXIVRBLRXX3SXLSHHWOA"
}
-
Ouvrez la page d'accueil de Google Authenticator, puis sélectionnez Démarrer.
-
Sélectionnez Saisir une clé de configuration.
-
Dans Nom du compte, saisissez un nom de compte.
Remarque : Le nom du compte peut être n'importe quel identifiant de chaîne.
-
Pour la saisie du texte de Votre clé, copiez et collez le code secret généré à partir de la commande AssociateSoftwareToken que vous avez exécutée à l'étape 1.
-
Sélectionnez Type de clé, puis À durée limitée.
-
Vérifiez le jeton logiciel qui utilise le mot de passe à durée limitée qui apparaît à l'écran et dans le code suivant :
aws cognito-idp verify-software-token --access-token eyJraWQiO........ua5Pq3NaA --user-code 269194 --friendly-device-name ExampleName
{
"Status": "SUCCESS"
}
-
Pour paramétrer la configuration MFA de l'utilisateur sur MFA TOTP, exécutez la commande de l’interface de ligne de commande AWS set-user-mfa-preference ou admin-set-user-mfa-preference :
Exemple de commande set-user-mfa-preference
aws cognito-idp set-user-mfa-preference --software-token-mfa-settings Enabled=true,PreferredMfa=true --access-token eyJraWQiO........ua5Pq3NaA
Remarque : Cette commande permet aux utilisateurs de définir leur propre configuration MFA.
Exemple de commande admin-set-user-mfa-preference
aws cognito-idp admin-set-user-mfa-preference --software-token-mfa-settings Enabled=true,PreferredMfa=true --username ExampleName --user-pool-id us-east-1_123456789
Remarque : Cette commande permet à un administrateur de définir la configuration MFA d'un utilisateur.
-
Pour activer le flux ALLOW_ADMIN_USER_PASSWORD_AUTH pour le client d’application du groupe d'utilisateurs, ouvrez la console Amazon Cognito.
-
Sélectionnez Gérer les groupes d'utilisateurs.
-
Choisissez votre client d’application et sélectionnez Afficher les détails.
-
Sélectionnez Activer l'authentification par mot de passe du nom d'utilisateur pour les API d'administration pour l'authentification (ALLOW_ADMIN_USER_PASSWORD_AUTH).
-
Sélectionnez Enregistrer les modifications apportées au client d’application.
-
Pour tester votre configuration, authentifiez l'utilisateur à l'aide d'une des méthodes suivantes :
L'interface utilisateur hébergée par Amazon Cognito.
Les appels d'API InitiateAuth, AdminInitiateAuth ou RespondToAuthChallenge de l'interface de ligne de commande AWS.
Remarque : Pour authentifier un utilisateur avec l'une ou l'autre des méthodes, vous devez disposer du mot de passe, du nom d'utilisateur et du code MFA logiciel de l'utilisateur.
Exemple de commande admin-initiate-auth
aws cognito-idp admin-initiate-auth --user-pool-id us-east-1_123456789 --client-id 3n4b5urk1ft4fl3mg5e62d9ado --auth-flow ADMIN_USER_PASSWORD_AUTH --auth-parameters USERNAME=ExampleName,PASSWORD=P@ssw0rd
Remarque : Remplacez les variables suivantes par vos informations : user-pool-id, client-id, username et password.
Exemple de sortie de la commande admin-initiate-auth
{
"ChallengeName": "SOFTWARE_TOKEN_MFA",
"ChallengeParameters": {
"FRIENDLY_DEVICE_NAME": "ExampleDevice",
"USER_ID_FOR_SRP": "ExampleName"
},
"Session": "Xxz6iadwuWJGN4Z7f4ul5p50IHUqITquoaNxxyDvep.......3A6GokZWKeQ6gkFW4Pgv"
}
Exemple de commande admin-respond-to-auth-challenge
aws cognito-idp admin-respond-to-auth-challenge --user-pool-id us-east-1_123456789 --client-id 3n4b5urk1ft4fl3mg5e62d9ado --challenge-name SOFTWARE_TOKEN_MFA --challenge-responses USERNAME=ExampleName,SOFTWARE_TOKEN_MFA_CODE=123456 --session Xxz6iadwuWJGN4Z7f4ul5p50IHUqITquoaNxxyDvep.......3A6GokZWKeQ6gkFW4Pgv
Remarque : Remplacez les variables suivantes par vos informations : client-id, username et software_token_MFA_Code.
Exemple de sortie de la commande admin-respond-to-auth-challenge
{
"AuthenticationResult": {
"ExpiresIn": 3600,
"RefreshToken": "eyJjdHkiOiJKV1QiLCJlbmMi.......dlbjrtyizlLzZZ5fjjCgL__AVHEzYycjJs_h3i-ly_KixDNtz9VEC",
"TokenType": "Bearer",
"NewDeviceMetadata": {
"DeviceKey": "us-east-1_28abrd7-10f7-9fc6-a931-3ede1c8ckd75",
"DeviceGroupKey": "-Gqkj3brS"
},
"IdToken": "eyJraWQiOiIzcFFSV29Pb........mNMbE_vvPkQYBuA9ackoER1aSABFGaKK4BpgPjMn7la_A",
"AccessToken": "eyJraWQiOi...........qwvQq4awt63TyWw"
},
"ChallengeParameters": {}
}
Informations connexes
Authentification avec les groupes d'utilisateurs Amazon Cognito