スキップしてコンテンツを表示

AWS CLI を使用して Amazon Cognito のユーザーパスワードをリセットする方法を教えてください。

所要時間2分
0

AWS コマンドラインインターフェイス (AWS CLI) を使用して、ユーザーが Amazon Cognito でパスワードをリセットまたは変更できるようにしたいと考えています。

解決策

注: AWS CLI のコマンドの実行時にエラーが発生する場合は、「AWS CLI でのエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。次のコマンドでは、VALID-ACCESS-TOKENUSER-POOL-IDCLIENT-IDUSERNAMECONFIRMATION-CODENEW-PASSWORDPREVIOUS-PASSWORD をそれぞれ実際の値に置き換えてください。

ユーザーとしてパスワードを変更する

注: change-password コマンドを実行するには、ユーザーはサインインしているユーザーのアクセストークンを持っている必要があります。アクセストークンには aws.cognito.signin.user.admin スコープが含まれている必要があります。

ユーザーとしてパスワードを変更するには、次の change-password コマンドを実行します。

aws cognito-idp change-password --previous-password PREVIOUS-PASSWORD --proposed-password NEW-PASSWORD --access-token VALID-ACCESS-TOKEN

管理者としてユーザーパスワードをリセットする

管理者がユーザーのパスワードをリセットするには、ユーザーはユーザープールに確認済みのメールアドレスまたは電話番号を持っている必要があります。管理者が admin-reset-user-password コマンドを実行すると、Amazon Cognito はユーザーの確認済み連絡方法に確認コードを自動的に送信します。

管理者として、次の admin-reset-user-password コマンドを実行してユーザーのパスワードをリセットします。

aws cognito-idp admin-reset-user-password --user-pool-id USER-POOL-ID --username USERNAME

注: 管理者がパスワードをリセットした後にユーザーがサインインしようとすると、"PasswordResetRequiredException" エラーが表示されます。次に、Amazon Cognito はユーザーをパスワードを忘れた場合のフローにリダイレクトします。

管理者が admin-reset-user-password コマンドを実行した後、ユーザーは次の confirm-forgot-password コマンドを実行して新しいパスワードを設定します。

aws cognito-idp confirm-forgot-password --client-id CLIENT-ID --username USERNAME --confirmation-code CONFIRMATION-CODE --password NEW-PASSWORD

ユーザーが確認済みのメールアドレスまたは電話番号を持っていない場合、管理者には "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" というメッセージが送信されます。

この問題を解決するには、管理者は次の admin-update-user-attributes コマンドを実行してユーザーの連絡先情報を確認し、email_verifed 属性、または phone_number_verifedtrue に設定します。

aws cognito-idp admin-update-user-attributes --user-pool-id USER-POOL-ID --username USERNAME --user-attributes Name="email_verified",Value="true"

管理者がユーザーの連絡先情報を確認したら、管理者は admin-reset-user-password コマンドを再度実行できます。ユーザーが確認コードを受け取ったら、ユーザーは confirm-forgot-password コマンドを実行して新しいパスワードを設定できます。

それでもユーザーが確認コードを受け取らない場合は、「ForgotPassword API を使用しても、Amazon Cognito から確認コードのメールまたは SMS テキストメッセージが送信されなかった原因を教えてください」を参照してください。

管理者として永続的パスワードまたは一時パスワードを設定します

ユーザーの永続的パスワードを設定するには、管理者は次の admin-set-user-password コマンドを実行します。

aws cognito-idp admin-set-user-password --user-pool-id USER-POOL-ID --username USERNAME --password NEW-PASSWORD --permanent

これで、ユーザーは新しい永続的パスワードでサインインできます。

ユーザーの一時パスワードを設定するには、管理者は次の admin-set-user-password コマンドを実行します。

aws cognito-idp admin-set-user-password --user-pool-id USER-POOL-ID --username USERNAME --password TEMPORARY-NEW-PASSWORD --no-permanent

管理者が一時パスワードを設定すると、ユーザーのステータスは FORCE_CHANGE_PASSWORD に変わります。ユーザーが一時パスワードでサインインすると、ユーザーは NEW_PASSWORD_REQUIRED チャレンジを受け取ります。

注: パスワードチャレンジを完了するまでのセッショントークンの有効期間は 3 分間です。アプリクライアントの認証フローの期間設定で有効期間を変更できます。

次に、ユーザーは次の respond-to-auth-challenge コマンドを実行して新しいパスワードを設定します。

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

重要: アプリクライアントにクライアントシークレットを設定した場合、ユーザーはユーザープールにアクセスするために respond-to-auth-challenge コマンドにシークレットハッシュパラメータを含める必要があります。ユーザーが "Unable to verify secret hash for client" というエラーを受け取った場合は、「Amazon Cognito ユーザープール API から返される、クライアントのシークレットハッシュを検証できないことを示すエラーのトラブルシューティング方法を教えてください」を参照してください。

AWS公式更新しました 6ヶ月前
コメントはありません

関連するコンテンツ