web-dev-qa-db-ja.com

AWS Cognitoユーザーのパスワードを変更するには?

AWSサービスバックエンド側を使用するウェブアプリケーションを開発しています。 AWS Cognitoを使用してユーザーを管理していますが、問題があります。 (一時的なパスワードを使用して)新しいユーザーを作成するとき、このパスワードを決定的にするためにこのパスワードを手動で変更する必要があります。ここで説明するように、パスワードを変更する唯一の方法は、AWS Cliを使用することです。

https://docs.aws.Amazon.com/cli/latest/reference/cognito-idp/change-password.html

古いパスワード、新しいパスワード、アクセストークンをシェルに入力する必要があります。問題は、この「アクセストークン」の場所です。シェルに何を入力したらいいかわかりません! AWS Cognitoコンソールは役に立ちません。

11
claudioz

aws cognito-idp change-passwordは、aws cognito-idp admin-initiate-authからのアクセストークンが必要なため、サインインできるユーザーでのみ使用できます。

ただし、ユーザーは一時的なパスワードを持っているため、サインインしようとするとNEW_PASSWORD_REQUIREDチャレンジに直面します。

以下がその方法です。

$ 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"

これで、NEW_PASSWORD_REQUIREDチャレンジと非常に長いセッショントークンを取得できます。その1つを使用して、チャレンジに応答します。

$ 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"
12