Amazon Cognitoでユーザーがパスワードを変更できるように、パスワードを忘れた場合のフローを使用する必要があります。
解決方法
Amazon Cognito ユーザーは、ForgotPassword API を呼び出して、パスワードを忘れた場合のフローを開始してユーザーパスワードをリセットすることができます。
Amazon Cognito でユーザーのパスワードを変更するために、パスワードを忘れた場合のフローを設定するには、次の手順に従います。
1. ForgotPassword API を呼び出して、ユーザーのパスワードのリセットに必要な確認コードを含むメッセージをユーザーに送信します。
重要: AWS コマンドラインインターフェイス (AWS CLI) コマンド例で、サンプル文字列のすべてのインスタンスを、ご自分の値に置き換えてください。(例えば、「example_client_id」を自分のクライアント ID に置き換えます。)
forgot-password コマンドの例:
aws cognito-idp forgot-password --client-id example_client_id --username example_user_name
出力:
{
"CodeDeliveryDetails": {
"Destination": "t***@g***",
"DeliveryMedium": "EMAIL",
"AttributeName": "email"
}
}
確認コードメッセージは、ユーザーの確認済み E メールアドレスまたは確認済みの電話番号に送信されます。回復方法は、AccountRecoverySetting パラメータでカスタマイズできます。例の確認コードメッセージは、ユーザーの確認済み E メールアドレスに送信されます。構成はユースケースによって異なります。
**注:**ユーザーの確認済み電話番号も確認済みメールアドレスも存在しない場合は、InvalidParameterException エラーが発生します。E メールアドレスと電話番号の認証の設定について詳しくは、「E メールまたは電話による認証の設定」を参照してください。
2. ConfirmForgotPassword API を呼び出して、ユーザーが確認コードを入力してパスワードをリセットできるようにします。
confirm-forgot-password コマンドの例:
aws cognito-idp confirm-forgot-password --client-id example_client_id --username=user@example.com --password example_password --confirmation-code example_confirmation_code
3. 必要に応じて、PreventUserExistenceErrors を Enabled に設定して、パスワード回復エラーレスポンスをカスタマイズしてください。詳細については、「エラーレスポンスの管理」を参照してください。
4. アプリクライアントがユーザープールでクライアントシークレットを使用して構成されている場合は、シークレットハッシュを指定する必要があります。詳細については、「 Amazon Cognito ユーザープール API で発生する「クライアント <client-id> のシークレットハッシュを確認できません」エラーをトラブルシューティングする方法を教えてください。を参照してください。