設定電子郵件或電話驗證 - Amazon Cognito

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定電子郵件或電話驗證

您可以在 傳訊 索引標籤下方,選擇電子郵件或電話驗證的各項設定。如需有關多因素驗證 (MFA) 的詳細資訊,請參閱SMS文字訊息MFA

Amazon Cognito 使用 Amazon 發SNS送SMS消息。如果您 AWS 服務 之前從未傳送過 Amazon Cognito 或其他任何SMS訊息,Amazon SNS 可能會將您的帳戶放在SMS沙箱中。我們建議您先將測試訊息傳送到已驗證的電話號碼,然後再將帳戶從沙盒移至生產環境。此外,如果您打算傳送SMS訊息到美國目的地電話號碼,您必須從 Amazon Pinpoint 取得來源或寄件者識別碼。若要為SMS訊息設定 Amazon Cognito 使用者集區,請參閱SMSAmazon Cognito 使用者集區的訊息設定

Amazon Cognito 可以自動驗證電子郵件地址或電話號碼。若要進行此驗證,Amazon Cognito 會傳送驗證碼或驗證連結。如果是電子郵件地址,Amazon Cognito 會以電子郵件訊息傳送代碼或連結。當您在 Amazon Cognito 主控台的 傳訊 索引標籤中編輯 驗證訊息 範本時,可以選擇 代碼連結驗證類型。如需詳細資訊,請參閱自訂電子郵件驗證訊息

對於電話號碼,Amazon Cognito 會在SMS簡訊中傳送代碼。

Amazon Cognito 必須驗證電話號碼或電子郵件地址以確認使用者,並協助使用者恢復忘記的密碼。或者,您可以使用預先註冊 Lambda 觸發器自動確認使用者,或使用該AdminConfirmSignUpAPI作業。如需詳細資訊,請參閱註冊及確認使用者帳戶

驗證碼或連結的有效時間為 24 小時。

如果您選擇要求驗證電子郵件地址或電話號碼,Amazon Cognito 會在使用者註冊時自動傳送驗證碼或連結。如果使用者集區具有 自訂SMS寄件者 Lambda 觸自訂電子郵件寄件者 Lambda 觸發程序,將會改為叫用該函數。

備註
  • SNSAmazon 會分別針對SMS用來驗證電話號碼的簡訊收費。傳送電子郵件訊息是免費的。如需 Amazon SNS 定價的相關資訊,請參閱全球SMS定價。如需目前提供SMS訊息功能的國家/地區清單,請參閱支援的地區和國家/地區。

  • 當您在應用程式中測試從 Amazon Cognito 產生電子郵件的動作時,請使用 Amazon Cognito 能夠送達而不致發生硬退信狀況的真實電子郵件地址。如需詳細資訊,請參閱在測試應用程式時傳送電子郵件

  • 忘記密碼流程需要使用者的電子郵件或電話號碼以驗證使用者。

重要

如果使用者同時使用電話號碼和電子郵件地址進行註冊,而您的使用者集區設定需要驗證這兩個屬性,Amazon Cognito 會透過SMS訊息將驗證碼傳送到電話號碼。Amazon Cognito 尚未驗證電子郵件地址,因此您的應用程式必須致電GetUser以查看電子郵件地址是否等待驗證。如果確實需要驗證,則應用程序必須致電GetUserAttributeVerificationCode以啟動電子郵件驗證流程。然後,它必須通過調用提交驗證碼VerifyUserAttribute

您可以針對個別郵件調整郵件 AWS 帳戶 的SMS訊息支出配額。這些限制僅適用於傳送SMS郵件的費用。如需詳細資訊,請參閱什麼是帳戶層級和訊息層級支出配額? 在 Amazon SNS FAQs

Amazon Cognito 使用 Amazon SNS 資源在您建立使用者集區的 AWS 區域 位置,或從下表傳統 Amazon SNS 替代區域傳送SMS訊息。亞太 (首爾) 區域的 Amazon Cognito 使用者集區除外。這些使用者集區使用亞太區域 (東京) 區域的 Amazon SNS 組態。如需詳細資訊,請參閱選擇 AWS 區域 Amazon SNS SMS 消息

Amazon Cognito 區域 傳統 Amazon SNS 替代區域
美國東部 (俄亥俄) 美國東部 (維吉尼亞北部)
亞太區域 (孟買) 亞太區域 (新加坡)
亞太區域 (首爾) 亞太區域 (東京)
加拿大 (中部) 美國東部 (維吉尼亞北部)
歐洲 (法蘭克福) 歐洲 (愛爾蘭)
歐洲 (倫敦) 歐洲 (愛爾蘭)

範例:如果您的 Amazon Cognito 使用者集區位於亞太區域 (孟買),而且已在 ap-southeast-1 區域增加支出限制,那麼您可能不希望個別請求增加 ap-south-1 的支出限制。相反,您可以在亞太地區(新加坡)使用 Amazon SNS 資源。

驗證對電子郵件地址和電話號碼的更新

在使用者變更電子郵件地址或電話號碼屬性值後,該屬性會立即變為作用中且未驗證。Amazon Cognito 還會要求您的使用者在 Amazon Cognito 更新屬性之前先驗證新值。當您要求使用者先驗證新值時,他們可以使用原始值登入與接收訊息,直到他們驗證新值為止。

當使用者可以將其電子郵件地址或電話號碼作為您使用者集區中的登入別名時,已更新屬性的登入名稱取決於您是否要求驗證已更新的屬性。當您要求使用者驗證已更新的屬性時,使用者可以使用原始屬性值登入,直到他們驗證新值為止。如果您不要求使用者驗證已更新的屬性,則使用者無法以新的或原始屬性值登入或接收訊息,直到他們驗證新值為止。

例如,您的使用者集區允許以電子郵件地址別名登入,且要求使用者在更新時驗證其電子郵件地址。Sue 使用 sue@example.com 登入,她想要將電子郵件地址變更為 sue2@example.com,但不小心輸入成 ssue2@example.com。Sue 沒有收到驗證電子郵件,因此無法驗證 ssue2@example.com。Sue 使用 sue@example.com 登入,並在您的應用程式中重新提交表單,將其電子郵件地址變更為 sue2@example.com。她收到此電子郵件,將驗證碼提供給您的應用程式,並開始使用 sue2@example.com 登入。

當使用者更新屬性且您的使用者集區驗證新屬性值時
  • 他們可以在確認代碼以驗證新值之前,使用原始屬性值登入。

  • 他們只能在確認代碼以驗證新值之後,使用新屬性值登入。

  • 如果您在AdminUpdateUserAttributesAPI請求true中設phone_number_verifiedemail_verified或設定,他們可以在確認 Amazon Cognito 傳送給他們的代碼之前登入。

當使用者更新屬性,但您的使用者集區未驗證新屬性值時
  • 他們無法使用原始屬性值登入或接收訊息。

  • 在確認代碼以驗證新值之前,他們無法使用新屬性值登入或接收確認碼以外的訊息。

  • 如果您在AdminUpdateUserAttributesAPI請求true中設phone_number_verifiedemail_verified或設定,他們可以在確認 Amazon Cognito 傳送給他們的代碼之前登入。

要求使用者更新其電子郵件地址或電話號碼時需要驗證屬性

  1. 登入 Amazon Cognito 主控台。如果出現提示,請輸入您的 AWS 認證。

  2. 在導覽窗格中,選擇 User Pools (使用者集區),然後選擇您要編輯的使用者集區。

  3. Sign-up experience (註冊體驗) 索引標籤中,選擇 Attribute verification and user account confirmation (屬性驗證與使用者帳戶確認) 下方的 Edit (編輯)

  4. 選擇 Keep original attribute value active when an update is pending (當更新待處理時,保持原始屬性值處於作用中)。

  5. Active attribute values when an update is pending (更新待處理時的作用中屬性值) 下方,選擇您希望在 Amazon Cognito 更新值之前要求使用者驗證的屬性。

  6. 選擇 Save changes (儲存變更)。

若要使用 Amazon Cognito 進行屬性更新驗證API,您可以在UpdateUserPool請求中設定AttributesRequireVerificationBeforeUpdate參數。

授權 Amazon Cognito 代表您發送SMS消息

若要代表您傳送SMS訊息給使用者,Amazon Cognito 需要您的許可。若要授與該權限,您可以建立 AWS Identity and Access Management (IAM) 角色。在 Amazon Cognito 主控台的「簡訊」索引標籤下SMS,選擇「編輯」以設定角色。