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

ForgotPassword API を使用しても、Amazon Cognito から確認コードのメールまたは SMS テキストメッセージが送信されなかった原因を教えてください。

所要時間2分
0

ForgotPassword API を呼び出したものの、Amazon Cognito から確認コードのメールまたはショートメッセージサービス (SMS) テキストでメッセージが送信されなかった原因を把握したいです。

解決策

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

スパムやジャンクフォルダを確認する

確認メールがユーザーのスパムフォルダや迷惑メールフォルダに届いていないことを確認します。

ユーザーがユーザープールに存在することを確認する

ユーザーが Amazon Cognito ユーザープールに存在することを確認します。Amazon Cognito コンソールを使用してユーザープール内のユーザーを検索する方法については、「ユーザーアカウントの管理と検索」を参照してください。AdminGetUser API コールでも検索が可能です。

ユーザーステータスを確認する

ユーザーのステータスが FORCE_CHANGE_PASSWORD ではないことを確認します。

管理者が作成したユーザーが、指定されたパスワードでサインインするまでは、ユーザーステータスはデフォルトの FORCE_CHANGE_PASSWORD に留まります。

ユーザーステータスが FORCE_CHANGE_PASSWORD の場合、ユーザーは ForgotPassword API を呼び出せず、確認コードを受信できません。代わりに、Amazon Cognito はユーザーにパスワードを変更するよう求めます。

ユーザーの AWS アカウントを復元する

ユーザー名と電話番号が確認されていない状態で ForgotPassword API を呼び出すと、次のいずれかのエラーが発生します。

  • AWS CLI:
    "An error occurred (InvalidParameterException) when calling the ForgotPassword operation: Cannot reset password for the user as there is no registered/verified email or phone_number"
  • Amazon Cognito コンソール:
    "Could not reset password for the account, please contact support or try again."

ユーザーアカウントを復旧するには、そのユーザーアカウントの設定を検証する必要があります。復旧メッセージの配信方法がメールまたは電話番号、メールのみ、電話番号のみ、使用可能な場合は電話番号、または「なし」のいずれに該当するかを確認します。

次の手順を実行します。

  1. Amazon Cognito コンソールを開きます。
  2. ユーザープールを選択します。
  3. [認証][サインイン] を選択します。
  4. [ユーザーアカウントの復旧] セクションで [復旧メッセージの配信方法] のオプションを確認します。
  5. その配信方法がユーザーの検証済み属性であることを確認します。

ユーザーステータスが CONFIRMED である場合も、そのユーザーはパスワード復旧用のメールまたは電話番号を所持していない場合があります。確認チェックボックスを選択してアカウントを作成する際、管理者が作成したユーザーアカウントの電子メールと電話番号を確認する必要があります。

この問題を解決するには、次のいずれかの方法でメールと電話番号の verified ステータスを true に設定します。

ユーザー属性を更新する

管理者ユーザーの場合は、次の AdminUpdateUserAttributes API コールを実行します。

aws cognito-idp admin-update-user-attributes --user-attributes Name=example-verification-method,Value=true --user-pool-id example-userpoolID --username example-user-name

注: ユーザーの復旧メッセージ配信方法に応じて example-verification-methodemail_verified または phone_number_verified に置き換えてください。example-userpoolID をユーザープール ID に、example-user-name を ForgotPassword API コールの実行を希望するユーザーに置き換えてください。

ユーザーの場合は、ログイン後、次の UpdateUserAttributes API コールを実行します。

aws cognito-idp update-user-attributes --user-attributes Name=example-verification-method,Value=true --access-token example-access-token

注: ユーザーの復旧メッセージ配信方法に応じて example-verification-methodemail_verified または phone_number_verified に置き換えてください。example-access-token をアクセストークンの値に置き換えてください。

サインアップ前の Lambda トリガー
サインアップ前 Lambda トリガーを使用し、ユーザーのメールアドレスと電話番号属性を verifed に設定します。

SignUp
ユーザーの場合は、次の手順を実行します。

  1. 次の SignUP API コールを実行します。
    aws cognito-idp sign-up --client-id example-client-ID --username example-user-name
    注: example-client-ID をサインアップを行うアプリクライアント ID に置き換えてください。example-user-name をユーザー名に置き換えてください。
  2. 上記コマンドの出力から、Session 値を書き留めておきます。
  3. 次の ConfirmSignUp API コールを実行します。
    aws cognito-idp confirm-sign-up --client-id example-client-ID --username example-user-name --confirmation-code example-confirmation-code
    注: example-client-ID をサインアップを行うアプリクライアント ID に置き換えてください。example-user-name をユーザー名に置き換えてください。example-confirmation-code をステップ 2 で書き留めた Session 値に置き換えてください。

管理者の場合は、次の AdminConfirmSignUp API コールを実行します。

aws cognito-idp admin-confirm-sign-up --client-id example-client-ID --username example-user-name

注: example-client-ID をアプリクライアント ID に置き換えてください。example-user-name をユーザー名に置き換えてください。

SMS メッセージに対するアカウントの支出制限を確認する

Amazon Cognito は、Amazon Simple Notification Service (Amazon SNS) を使用して SMS テキストメッセージを配信します。設定したアカウント支出クォータがアカウントの支出制限を超える場合、Amazon SNS は SMS メッセージを発行しません。

アカウントの支出クォータを確認または変更する方法については、「AWS マネジメントコンソールを使用して SMS メッセージのプリファレンスを設定する」を参照してください。

Amazon SES のクォータを確認する

Amazon Cognito は、Amazon Simple Email Service (Amazon SES) を使用してメールを配信します。デフォルトでは、Cognito ではユーザープールに許可される 1 日あたりのメール数は制限されています。詳細については、「リソース数とサイズのクォータ」を参照してください。

Amazon SES のメール設定を使用するようにユーザープールを設定すると、メール配信率を向上できます。手順については、「Amazon Cognito ユーザープール用のメール設定」を参照してください。

AdminSetUserPassword API コールを使用してユーザーパスワードをリセットする

管理者が AdminSetUserPassword API コールを使用すると、Amazon Cognito ユーザープール内のユーザーのパスワードを一時的または永続的に設定できます。一時パスワードを使用するユーザーは、有効期限が切れる前にサインインして一時パスワードを変更する必要があります。ユーザーが一時パスワードをリセットするか、永続的パスワードを使用している場合は、ステータスは CONFIRMED に変わります。

関連情報

SMS 配信に失敗した理由

admin-get-user

AdminResetUserPassword

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