AWSサービスバックエンド側を使用するウェブアプリケーションを開発しています。 AWS Cognitoを使用してユーザーを管理していますが、問題があります。 (一時的なパスワードを使用して)新しいユーザーを作成するとき、このパスワードを決定的にするためにこのパスワードを手動で変更する必要があります。ここで説明するように、パスワードを変更する唯一の方法は、AWS Cliを使用することです。
https://docs.aws.Amazon.com/cli/latest/reference/cognito-idp/change-password.html
古いパスワード、新しいパスワード、アクセストークンをシェルに入力する必要があります。問題は、この「アクセストークン」の場所です。シェルに何を入力したらいいかわかりません! AWS Cognitoコンソールは役に立ちません。
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"