為什麼 Amazon Cognito 沒有透過 ForgotPassword API 發送驗證碼電子郵件或簡訊?

上次更新日期:2022 年 2 月 10 日

Amazon Cognito 沒有在 ForgotPassword API 呼叫時發送驗證碼電子郵件或簡訊。

解析方案

按照以下最佳實務做法對 Amazon Cognito 使用者集區的組態進行疑難排解。

檢查垃圾郵件和垃圾郵件資料夾

確保驗證電子郵件沒有轉到使用者的垃圾郵件或垃圾郵件資料夾。

確認使用者集區中有該名使用者

確認 Amazon Cognito 使用者集區中有該名使用者。若要使用 Amazon Cognito 主控台來搜尋使用者集區中的使用者,請參閲管理和搜尋使用者帳户

-或-

使用 AdminGetUser API 搜尋使用者集區中的使用者。

該使用者的狀態並非「已確認」

在預設情況下,管理員所建立的使用者處於 FORCE_CHANGE_PASSWORD 狀態,直到他們使用提供的密碼登入為止。然後,系統會提示使用者更改密碼。

如果使用者狀態為 FORCE_CHANGE_PASSWORD,則無法使用 ForgotPassword API 呼叫,也不會發送驗證碼。

查看使用者該如何復原帳户

檢查使用者帳戶的設定方式以復原帳户。例如,使用電子郵件、使用手機、僅使用電子郵件、僅使用手機、使用可用的手機,或者無。

1.    開啟 Amazon Cognito 主控台,選擇管理使用者集區,然後選擇使用者集區。

2.    在一般設定中,選擇 MFA 和驗證

3.    在使用者該如何復原帳户?部分,請注意所選的復原方式。

處於「已確認」狀態的使用者可能沒有對其電子郵件或手機進行密碼復原驗證。使用驗證核取方塊建立帳户時,必須對管理員建立的使用者帳户進行驗證。管理員也可以使用 API 呼叫 AdminUpdateUserAttributes 將手機和電子郵件標示為已驗證,類似以下內容:

電子郵件已驗證

aws cognito-idp admin-update-user-attributes --user-pool-id <userpool
 id> --username <user name> --user-attributes 
Name=email_verified,Value=true --region <region name>

手機號碼已驗證

aws cognito-idp admin-update-user-attributes --user-pool-id <userpool
 id> --username <user name> --user-attributes 
Name=phone_number_verified,Value=true --region <region name>

檢查 Amazon SNS 配額限制

Amazon Cognito 使用 Amazon Simple Notification Service (Amazon SNS) 傳送簡訊。帳戶的預設 Amazon SNS 消費配額為每月 1.00 USD。若要查看或更改帳戶消費限制,請參閲使用 AWS 管理主控台設定 SMS 傳訊喜好設定

重要:如果 AWS 管理主控台中設定的帳戶消費限制超出您的服務配額,則 Amazon SNS 會停止發送簡訊。

有關增加配額的相關資訊,請參閲請求提高 Amazon SNS 的每月 SMS 消費配額

查看 Amazon SES 限制

Amazon Cognito 使用 Amazon Simple Email Service (Amazon SES) 傳送電子郵件。在預設情況下,Amazon Cognito 允許您每天發送有限數量的電子郵件到您的使用者集區。如需詳細資訊,請參閲 Amazon Cognito 使用者集區資源配額

設定您的使用者集區,使其使用 Amazon SES 電子郵件組態,就可以設定較多的電子郵件發送量。如需相關説明,請參閲 Amazon Cognito 使用者集區的電子郵件設定

使用 AdminSetUserPassword API 重設使用者密碼

管理員可使用 AdminSetUserPassword API 將 Amazon Cognito 使用者集區中的使用者密碼設為臨時或永久密碼。使用臨時密碼的使用者必須在到期前登入並更改密碼。如果使用者重設臨時密碼或是如果密碼是永久密碼,則狀態會設為「已確認」。


此文章是否有幫助?


您是否需要帳單或技術支援?