Amazon Cognito でユーザーパスワードを回復したいと考えています。
解決方法
Amazon Cognito でユーザーパスワードを回復するには、次の 2 つの方法があります。
- 確認済みの E メールアドレスまたは電話番号を通じて。
- 管理者によりユーザーパスワードを通じて。
E メールアドレスまたは電話番号の検証
ForgotPassword API コマンドを使用して、ユーザーパスワードを回復できます。ForgotPassword API コマンドは、検証済みの E メールアドレスまたは確認済みの電話番号にリカバリーコードを送信します。リカバリーコードは 1 時間有効です。次に、ConfirmForgotPassword API コマンドを使用して、パスワードをリセットする確認コードを入力します。
注: AWS コマンドラインインターフェイス (AWS CLI) のコマンド実行中にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください。
AWS CLI コマンド:
ForgotPassword
aws cognito-idp forgot-password --client-id 38fjsnc484p94kpqsnet7mpld0 --username jane@example.com
出力:
{
"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
注: 次の要件の両方を満たす場合は、CLI コマンドで --secret-hash を渡す必要があります。
- AWS CLI コマンドに --client-id がパラメータとして含まれている。
- アプリケーションクライアントはシークレットで設定されている。
アプリケーションクライアントのシークレットハッシュを計算するには、「[Amazon Cognito ユーザープール API で発生する「クライアント
のシークレットハッシュを確認できません」エラーをトラブルシューティングする方法を教えてください](https://repost.aws/ja/knowledge-center/cognito-unable-to-verify-secret-hash) 」を参照してください。
管理者リセット
注: 管理者でない場合は、管理者に連絡して次の操作を完了してください。
AdminResetUserPassword API コマンドを呼び出すと、現在のパスワードは無効になるため、変更する必要があります。API コマンドが呼び出された後にユーザーがログインしようとすると、アプリケーションは次の処理を行います。
- PasswordResetRequiredException を元に戻します。
- パスワードを忘れた場合のフローでパスワードをリセットするようユーザーに指示します。
さらに、API を呼び出すと、次の場合にパスワードを変更するためのコードが記載されたメッセージがユーザーに送信されます。
- ユーザープールには電話認証が設定されている場合。
- ユーザーの確認済みの電話番号または E メールアドレスが存在している場合。
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
管理者は、AdminSetUserPassword API コマンドを使用して、ユーザープール内のユーザーのパスワードを呼び出すこともできます。パスワードは一時的なものでも永続的なものでもかまいません。一時的な場合、ユーザーステータスは FORCE_CHANGE_PASSWORD 状態になります。サインインすると、InitiateAuth/AdminInitiateAuth レスポンスに NEW_PASSWORD_REQUIRED チャレンジが含まれます。有効期限が切れる前にサインインしないと、サインインできないため、パスワードをリセットする必要があります。新しいパスワードを設定した後、またはパスワードが永続的な場合は、ユーザーステータスは CONFIRMED に設定されます。
aws cognito-idp admin-set-user-password --user-pool-id us-west-2_aaaaaaaaa --username diego@example.com --password Hello@123 --permanent