Comment réinitialiser les mots de passe des utilisateurs dans Amazon Cognito avec l'AWS CLI ?

Lecture de 5 minute(s)
0

Je dois apprendre à utiliser l'interface de la ligne de commande AWS (AWS CLI) pour aider les utilisateurs à réinitialiser ou modifier leurs mots de passe dans Amazon Cognito.

Solution

Les mots de passe Amazon Cognito peuvent être réinitialisés ou modifiés avec l'AWS CLI. Un administrateur Amazon Cognito peut démarrer un flux de réinitialisation de mot de passe pour réinitialiser les mots de passe des utilisateurs. Un utilisateur Amazon Cognito peut modifier lui-même son mot de passe, ou un administrateur Amazon Cognito peut définir un mot de passe utilisateur temporaire ou permanent.

Réinitialiser le mot de passe d'un utilisateur

Pour démarrer un flux de réinitialisation de mot de passe, les administrateurs comme les utilisateurs procèdent comme suit :

1.    L'administrateur appelle l'API AdminResetUserPassword.

Important : dans les exemples de commandes de l'interface de la ligne de commande AWS (AWS CLI) suivants, remplacez toutes les instances des exemples de chaînes par vos valeurs. (Par exemple, remplacez « example_user_pool_id » par l'ID de votre groupe d'utilisateurs.)

Exemple de commande admin-reset-user-password :

aws cognito-idp admin-reset-user-password --user-pool-id example_user_pool_id --username example_user_name

2.    Lorsque le mot de passe d'un utilisateur est réinitialisé et que celui-ci essaie de se connecter, il reçoit une exception PasswordResetRequiredException. L'utilisateur est ensuite redirigé vers le flux de réinitialisation de mot de passe.

Remarque : le flux de réinitialisation de mot de passe est identique à celui de mot de passe oublié.

3.    L'utilisateur dont l'adresse e-mail ou le numéro de téléphone est vérifié(e) reçoit un message contenant un code de confirmation pour réinitialiser son mot de passe.

En cas d'attributs utilisateur non vérifiés :

1.    Si l'adresse e-mail ou le numéro de téléphone de l'utilisateur n'est pas vérifié(e), l'administrateur reçoit le message d'erreur suivant lorsqu'il appelle l'API AdminResetUserPassword :

An error occurred (InvalidParameterException) when calling the AdminResetUserPassword operation: Cannot reset password for the user as there is no registered/verified email or phone_number

2.    Pour résoudre ce problème, l'administrateur appelle l'API AdminUpdateUserAttributes et définit les attributs email_verified ou phone_number_verified sur true.

Exemple de commande admin-update-user-attributes :

aws cognito-idp admin-update-user-attributes --user-pool-id example_user_pool_id --username example_user_name --user-attributes Name="email_verified",Value="true"

3.    Si l'utilisateur ne reçoit pas le code de confirmation, suivez les bonnes pratiques pour résoudre le problème.

L'utilisateur suit le flux complet de mot de passe oublié :

1.    Après avoir reçu un code de confirmation, l'utilisateur peut créer un nouveau mot de passe en appelant l'API ConfirmForgotPassword.

Exemple de commande confirm-forgot-password :

aws cognito-idp confirm-forgot-password --client-id example_client_id --username example_user_name --confirmation-code example_code --password example_new password

Modifier le mot de passe d'un utilisateur

Les utilisateurs peuvent modifier eux-mêmes leurs mots de passe, et les administrateurs peuvent définir des mots de passe utilisateur temporaires ou permanents. Pour modifier le mot de passe d'un utilisateur, les utilisateurs comme les administrateurs procèdent comme suit :

L'utilisateur modifie le mot de passe utilisateur :

1.    L'utilisateur appelle l'API ChangePassword. L'utilisateur doit disposer d'un jeton d'accès valide émis par Amazon Cognito pour appeler l'API ChangePassword.

Exemple de commande change-password :

aws cognito-idp change-password --previous-password example_old_password --proposed-password example_new_password --access-token valid_access_token

L'administrateur crée un nouveau mot de passe utilisateur permanent :

1.    L'administrateur appelle l'API AdminSetUserPassword pour créer un nouveau mot de passe permanent.

Exemple de commande admin-set-user-password pour modifier définitivement le mot de passe utilisateur :

aws cognito-idp admin-set-user-password --user-pool-id example_user_pool_id --username example_user_name --password example_new_password --permanent

2.    Une fois que l'administrateur a modifié définitivement le mot de passe utilisateur, ce dernier peut utiliser le nouveau mot de passe pour se connecter à l'application.

L'administrateur crée un nouveau mot de passe utilisateur temporaire :

1.    L'administrateur appelle l'API AdminSetUserPassword pour créer un nouveau mot de passe temporaire.

Exemple de commande admin-set-user-password pour modifier temporairement le mot de passe utilisateur :

aws cognito-idp admin-set-user-password --user-pool-id example_user_pool_id --username example_user_name --password example_temporary_password --no-permanent

Si l'administrateur remplace le mot de passe utilisateur par un mot de passe temporaire, l'utilisateur doit suivre des étapes supplémentaires.

2.    Le statut de l'utilisateur passe à « FORCE_CHANGE_PASSWORD » après avoir appelé l'API AdminSetUserPassword avec un mot de passe temporaire. Un utilisateur qui tente de se connecter en appelant l'API InitiateAuth avec un mot de passe temporaire reçoit une demande d'authentification « NEW_PASSWORD_REQUIRED ».

Exemple de commande initiate-auth :

aws cognito-idp initiate-auth --auth-flow USER_PASSWORD_AUTH --auth-parameters USERNAME=example_user_name,PASSWORD=example_temporary_password --client-id example_client_id

Sortie :

{
  "ChallengeName": "NEW_PASSWORD_REQUIRED",
  "Session": "AYA......",
  "ChallengeParameters": {
    "USER_ID_FOR_SRP": "544.....",
    "requiredAttributes": "[]",
    "userAttributes": "{\"email_verified\":\"true\",\"email\":\"user@example.com\"}"
  }
}

Remarque : la validité du jeton de session dépend du paramètre Authentication flow session duration (Durée de la session de flux d'authentification) de votre client d'application. Par défaut, la durée de session de ce jeton de session est de 3 minutes. Pour modifier la validité du jeton, reportez-vous aux étapes de configuration de la durée de la session de flux d'authentification du client d'application.

3.    L'utilisateur répond à la demande « NEW_PASSWORD_REQUIRED » en appelant l'API RespondToAuthChallenge avec le jeton de session qu'il a reçu à l'étape précédente.

Exemple de commande respond-to-auth-challenge :

aws cognito-idp respond-to-auth-challenge --client-id example_client_id --challenge-name NEW_PASSWORD_REQUIRED --challenge-responses USERNAME=example_username,NEW_PASSWORD="example_new_password" --session "example_session_token"

4.    L'utilisateur reçoit des jetons d'identification, d'accès et d'actualisation, puis se connecte à l'application.

Important : si votre client d'application est configuré avec un secret client dans le groupe d'utilisateurs, vous devez fournir le hachage secret. Pour en savoir plus, reportez-vous à la section Comment résoudre les erreurs « Impossible de vérifier le hachage secret pour le client <client-id> » de mon API de groupes d'utilisateurs Amazon Cognito ?


AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an
Aucun commentaire