Je souhaite récupérer le mot de passe d'un utilisateur dans Amazon Cognito.
Résolution
Il existe deux méthodes pour récupérer le mot de passe d'un utilisateur dans Amazon Cognito :
- Avec un e-mail ou un numéro de téléphone vérifié.
- Avec un mot de passe utilisateur via l'administrateur.
Vérification par e-mail ou numéro de téléphone
Vous pouvez utiliser la commande d'API ForgotPassword pour récupérer un mot de passe utilisateur. La commande d'API ForgotPassword envoie un code de récupération à un e-mail ou un numéro de téléphone vérifié. Le code de récupération est valide pendant une heure. Utilisez ensuite la commande d'API ConfirmForgotPassword pour saisir un code de confirmation qui réinitialise le mot de passe.
Remarque : en cas d'erreurs lors de l'exécution de commandes depuis l'interface de la ligne de commande AWS (AWS CLI), vérifiez que vous utilisez la version la plus récente d'AWS CLI.
Commandes d'AWS CLI :
ForgotPassword
aws cognito-idp forgot-password --client-id 38fjsnc484p94kpqsnet7mpld0 --username jane@example.com
Sortie :
{
"CodeDeliveryDetails": {
"Destination": "j***@e***.com",
"DeliveryMedium": "EMAIL",
"AttributeName": "email"
}
}
ConfirmForgotPassword
aws cognito-idp confirm-forgot-password --client-id 3n4b5urk1ft4fl3mg5e62d9ado --username=diego@example.com --password PASSWORD --confirmation-code CONF_CODE
Remarque : vous devez transmettre --secret-hash dans la commande CLI si vous répondez aux deux exigences suivantes :
- Vos commandes AWS CLI possèdent le paramètre --client-id.
- Le client d'application est configuré avec un secret.
Pour calculer le hachage secret d'un client d'application, reportez-vous à la section [Comment résoudre les erreurs « Impossible de vérifier le hachage secret pour le client
» depuis l'API de mon groupe d'utilisateurs Amazon Cognito ?](https://repost.aws/fr/knowledge-center/cognito-unable-to-verify-secret-hash)
Réinitialisation par l'administrateur
Remarque : si vous n'êtes pas l'administrateur, prenez contact avec lui pour effectuer les actions suivantes.
Lorsque vous appelez la commande d'API AdminResetUserPassword, le mot de passe actuel n'est plus valide et vous devez le modifier. Si un utilisateur essaie de se connecter après l'appel de la commande API, l'application effectue les opérations suivantes :
- Récupère PasswordResetRequiredException.
- Invite l'utilisateur à réinitialiser le mot de passe à l'aide du flux de mot de passe oublié.
Appeler l'API entraîne également l'envoi d'un message à l'utilisateur comprenant un code qui lui permet de modifier son mot de passe si :
- La vérification par téléphone a été configurée dans le groupe d'utilisateurs, et
- S'il existe un numéro de téléphone ou un e-mail vérifié pour l'utilisateur.
Commandes d'AWS CLI :
AdminResetUserPassword
aws cognito-idp admin-reset-user-password --user-pool-id us-west-2_aaaaaaaaa --username diego@example.com
ConfirmForgotPassword
aws cognito-idp confirm-forgot-password --client-id 3n4b5urk1ft4fl3mg5e62d9ado --username diego@example.com --password PASSWORD --confirmation-code CONF_CODE
AdminSetUserPassword
En tant qu'administrateur, vous pouvez également utiliser la commande d'API AdminSetUserPassword pour appeler le mot de passe de l'utilisateur dans un groupe d'utilisateurs. Le mot de passe peut être temporaire ou permanent. S'il est temporaire, le statut de l'utilisateur passe à FORCE_CHANGE_PASSWORD. Lorsque vous vous connectez, la réponse InitiateAuth/AdminInitiateAuth contient le défi NEW_PASSWORD_REQUIRED. Si vous ne vous connectez pas avant son expiration, vous ne pouvez pas vous connecter et vous devez réinitialiser le mot de passe. Une fois que vous avez défini un nouveau mot de passe, ou si le mot de passe est permanent, le statut de l'utilisateur est défini sur CONFIRMED (CONFIRMÉ).
aws cognito-idp admin-set-user-password --user-pool-id us-west-2_aaaaaaaaa --username diego@example.com --password Hello@123 --permanent