Je développe une application Web qui utilise le côté backend des services AWS. J'utilise AWS Cognito pour gérer les utilisateurs mais j'ai un problème. Lorsque je crée un nouvel utilisateur (avec un mot de passe temporaire), je dois modifier ce mot de passe manuellement pour le rendre définitif. La seule façon dont je dois changer le mot de passe est d'utiliser AWS Cli, comme expliqué ici:
https://docs.aws.Amazon.com/cli/latest/reference/cognito-idp/change-password.html
Je dois taper dans le shell l'ancien mot de passe, le nouveau mot de passe et le jeton d'accès. Le problème est: où je trouve ce "jeton d'accès"? Je ne sais pas quoi taper dans le Shell! La console AWS Cognito n'aide pas.
Le aws cognito-idp change-password
ne peut être utilisé qu'avec un utilisateur qui peut se connecter, car vous avez besoin du jeton d'accès de aws cognito-idp admin-initiate-auth
.
Mais puisque l'utilisateur a un mot de passe temporaire, il sera confronté au NEW_PASSWORD_REQUIRED
défi lorsque vous essayez de vous connecter.
Voici comment je l'ai fait:
$ aws cognito-idp admin-create-user --user-pool-id USERPOOLID --username [email protected] --desired-delivery-mediums EMAIL --user-attributes Name=email,[email protected]
$ aws cognito-idp initiate-auth --client-id CLIENTID --auth-flow USER_PASSWORD_AUTH --auth-parameters [email protected],PASSWORD="tempPassword"
Maintenant, vous obtenez un NEW_PASSWORD_REQUIRED
défi et un jeton de session très long. Utilisez celui-là pour relever le défi:
$ aws cognito-idp admin-respond-to-auth-challenge --user-pool-id USERPOOLID --client-id CLIENTID --challenge-responses "NEW_PASSWORD=LaLaLaLa1234!!!!,[email protected]" --challenge-name NEW_PASSWORD_REQUIRED --session "YourLongSessionToken"