Comment activer TOTP en tant que multi-factor authentification pour les groupes d'utilisateurs Amazon Cognito ?

Dernière mise à jour : 08/12/2020

Je veux activer le multi-factor authentication (MFA) pour les utilisateurs de mon application. Comment puis-je le faire avec un jeton de mot de passe à usage unique basé sur le temps (TOTP) utilisant des groupes d'utilisateurs Amazon Cognito ?

Brève description

Pour activer TOTP MFA pour les utilisateurs de votre application, configurez le jeton de logiciel TOTP MFA pour votre groupe d'utilisateurs.

Important : Avant de configurer le jeton TOTP, gardez à l'esprit les points suivants :

  • Vous devez ajouter MFA à votre groupe d'utilisateurs avant de configurer le jeton TOTP.
  • Les jetons TOTP ne peuvent pas être associés à un utilisateur tant qu'ils n'ont pas tenté de se connecter à votre application, ou à moins qu'ils ne soient déjà authentifiés.
  • Il n'est actuellement pas possible d'avoir MFA configuré pour les utilisateurs fédérés dans un groupe d'utilisateurs.

Voici un exemple de configuration TOTP MFA à l'aide de l' interface de ligne de commande AWS (AWS CLI) et de Google Authenticator.

Résolution

Remarque : si vous recevez des erreurs lors de l'exécution des commandes AWS CLI, assurez-vous d'utiliser la version la plus récente d'AWS CLI.

1.    Exécutez la commande AssociateSoftwareToken suivante à partir de l'interface de ligne de commande AWS pour démarrer la configuration du générateur de jetons MFA :

aws cognito-idp associate-software-token --access-token eyJraWQiO........ua5Pq3NaA
{
    "SecretCode":
    "AETQ6XXMDFYMEPFQQ7FD4HKXXXXAOY3MBXIVRBLRXX3SXLSHHWOA"
}

2.    Ouvrez la page d'accueil Google Authenticator et choisissez Démarrer.

3.    Choisissez Entrer une clé de configuration.

4.    Pour Nom du compte, entrez un nom de compte. Par exemple, BobPhone.

Remarque : Le nom du compte peut être n'importe quel identifiant de chaîne.

5.    Pour la saisie de texte de Your key (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.

6.    Choisissez la liste déroulante Type of key(Type de clé), puis sélectionnez Time based(Basé sur le temps).

7.    Vérifiez le jeton logiciel à l'aide du mot de passe temporel qui s'affiche à l'écran et du code suivant :

aws cognito-idp verify-software-token --access-token eyJraWQiO........ua5Pq3NaA --user-code 269194 --friendly-device-name BobPhone
{
    "Status": "SUCCESS"
}

8.    Paramétrez la configuration MFA de l'utilisateur sur TOTP MFA à l'aide de l'une des commandes suivantes dans l'interface de ligne de commande AWS :

set-user-mfa-preference

Cette commande permet aux utilisateurs de définir leur propre configuration MFA.

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

admin-set-user-mfa-preference

Cette commande permet à un administrateur de définir la configuration MFA d'un utilisateur.

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 Bob --user-pool-id us-east-1_123456789

9.    Testez votre configuration en authentifiant l'utilisateur de l'une des manières suivantes :

L' interface utilisateur hébergée par Amazon Cognito.

L'API InitiateAuth ou AdminInitiateAuth appelle l'interface de ligne de commande AWS.

Remarque : Pour authentifier un utilisateur en se servant de l'une ou de l'autre méthodes, le mot de passe, le nom d'utilisateur et le code MFA logiciel de l'utilisateur sont requis.

Les exemples suivants montrent comment tester l'authentification utilisateur à l'aide de la commande AdminInitiateAuth.

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=Bob,PASSWORD=P@ssw0rd

Important : Assurez-vous de remplacer les variables suivantes par vos propres informations : userpool-id, client-id, nom d'utilisateuret mot de passe. Assurez-vous également d'activer le flux ALLOW_ADMIN_USER_PASSWORD_AUTH pour le client d'application de groupe d'utilisateurs en procédant comme suit :

  1. Ouvrez la console Amazon Cognito.
  2. Choisissez Gérer les groupes d'utilisateurs.
  3. Choisissez votre client d'application et sélectionnez Afficher les détails.
  4. Choisissez Activer l'authentification du mot de passe du nom d'utilisateur pour les API d'administration pour l'authentification (ALLOW_ADMIN_USER_PASSWORD_AUTH).
  5. Choisissez Enregistrer les modifications du client d'application.

Pour plus d'informations, consultez Flux d'authentification administrateur.

Exemple de sortie de la commande admin-initiate-auth

{
    "ChallengeName": "SOFTWARE_TOKEN_MFA", 
    "ChallengeParameters": {
        "FRIENDLY_DEVICE_NAME":
    "BobPhone", 
        "USER_ID_FOR_SRP": "Bob"
    }, 
    "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=Bob,SOFTWARE_TOKEN_MFA_CODE=123456 --session  Xxz6iadwuWJGN4Z7f4ul5p50IHUqITquoaNxxyDvep.......3A6GokZWKeQ6gkFW4Pgv

Important : Assurez-vous de remplacer les variables suivantes par vos propres informations : client-id, nom d'utilisateuret 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": {}
}

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?