Cognitoユーザーのパスワードリセット実行時にInvalidParameterExceptionエラーが発生するのはなぜですか
困っていた内容
Cognitoのユーザーのパスワードリセット実行時にInvalidParameterExceptionエラーが発生するのはなぜですか。
どう対応すればいいの?
-
未検証の属性がある場合
メールアドレス及び、電話番号が未検証である場合、InvalidParameterExceptionエラーが発生します。未検証の属性を検証済みとした後に、パスワードリセットを実行してください。 -
単一チャネルでMFA設定を実施している場合
単一チャネル(メールアドレス、SMSどちらかのみ)かつ、MFA設定をそのチャネルに対して設定している場合、Cognitoの制約によりMFA利用しているチャネルでパスワードリセットを実行することはできません。そのためadmin-set-user-passwordコマンドなどにより、パスワードを強制的にリセットする必要があります。
やってみた
「未検証の属性がある場合」でのエラー発生を確認してみます。
前提条件として、Cognitoユーザープール及びアプリケーションクライアントは作成済みとなります。
-
パスワードリセット用のユーザーを作成します。Eメールを利用して、検証済みとしない設定でユーザーを作成します。
-
アプリケーションクライアントのログインページから、初回ログインを実行します。設定した各必須の属性を入力します。
-
設定後、「ユーザー」→作成したユーザーから「アクション」→「パスワードをリセット」を試みます。InvalidParameterExceptionエラーが発生します。
- CloudTrailでAdminResetUserPasswordイベント確認すると、errorMessageにて検証済みでないメールアドレス・SMSを持つユーザーはパスワードリセットを実行できない、とのエラーを確認できます。なお、上記記載の「単一チャネルでMFA設定を実施している場合」についても同様のエラーが発生する可能性があるためご注意ください。
"errorCode": "InvalidParameterException",
"errorMessage": "Cannot reset password for the user as there is no registered/verified email or phone_number",
- メールアドレスを検証済みに変更後は、正常にパスワードリセットを実行できました。
参考情報