Amazon Cognito 使用者集區的簡訊設定 - Amazon Cognito

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

Amazon Cognito 使用者集區的簡訊設定

您使用者集區的部分 Amazon Cognito 事件可能會導致 Amazon Cognito 傳送簡訊給您的使用者。例如,如果您將您的使用者集區設定成需要電話驗證,則當使用者在您的應用程式中註冊新帳戶,或是重新設定其密碼時,Amazon Cognito 就會傳送簡訊。根據啟動簡訊的動作,簡訊會包含驗證碼、臨時密碼或歡迎訊息。

Amazon Cognito 使用 Amazon Simple Notification Service (Amazon SNS) 傳輸簡訊。如果您是第一次透過 Amazon Cognito 或 Amazon SNS 傳送簡訊,Amazon SNS 會將您放入 Amazon SNS 的沙盒環境中。在沙盒環境中,您可以測試應用程式的簡訊功能。在沙盒中,簡訊只能傳送至已驗證的電話號碼。

Amazon SNS 會針對簡訊收費。如需詳細資訊,請參閱 Amazon SNS 定價

注意

由於全世界有大量不受歡迎的 SMS 流量,部分政府對 SMS 訊息的傳送者和接收者之間設有障礙。當您使用 SMS 訊息進行 MFA 和使用者更新時,您必須採取額外步驟以確保訊息傳輸。您還必須監控使用者居住地國家/地區的 SMS 訊息相關法規,並使 SMS 訊息組態保持在最新狀態。如需詳細資訊,請參閱《Amazon Simple Notification Service 開發人員指南》中的手機簡訊 (SMS)

使用 SMS 訊息進行身分驗證和驗證使用者並不是安全性最佳作法。電話號碼所有者可能會變更,並且對於 MFA 使用者擁有的部分因素來說,可能不是一項可靠的因素。相反,您可以在應用程式中或使用第三方 IdP 中實施 TOTP MFA。您也可以使用 自訂身分驗證挑戰 Lambda 觸發程序 建立其他自訂的身分驗證因素。

Amazon Cognito 會傳送簡訊給您的使用者,當中包含可供他們輸入的代碼。下表顯示可產生簡訊的事件。

訊息選項

活動 API 操作 傳遞選項 格式選項 可自訂 訊息範本
忘記密碼 ForgotPassword 電子郵件,短信 code N/A
邀請 AdminCreateUser 電子郵件,短信 code 邀請訊息
自助登記 SignUp 電子郵件,短信 代碼,鏈接 驗證訊息
電子郵件地址或電話號碼驗證 UpdateUserAttributes 電子郵件,短信 code 驗證訊息
多重要素驗證 (MFA) AdminInitiateAuth, InitiateAuth 簡訊、驗證器應用程式 code 是 ¹ MFA 訊息

¹ 適用簡訊。

第一次在 Amazon Cognito 使用者集區中設定簡訊

Amazon Cognito 會使用 Amazon SNS 傳送簡訊到您的使用者集區。您也可以使用 自訂 SMS 寄件者 Lambda 觸發程序 以使用自己的資源來傳送簡訊。當您第一次設定 Amazon SNS 以特定傳送簡訊文字訊息時 AWS 區域,Amazon SNS 會將您置於該區域的 SMS 沙箱 AWS 帳戶 中。Amazon SNS 使用沙箱來防止詐欺和濫用,並符合合規要求。當您 AWS 帳戶 在沙箱中時,Amazon SNS 會施加一些限制。例如,您最多可以將簡訊傳送給 10 個已通過 Amazon SNS 驗證的電話號碼。當您 AWS 帳戶 保留在沙箱中時,請勿將 Amazon SNS 組態用於正在生產中的應用程式。您在沙盒中時,Amazon Cognito 無法將簡訊傳送到使用者的電話號碼。

準備 IAM 角色,讓 Amazon Cognito 可用來透過 Amazon SNS 傳送簡訊

當您從使用者集區傳送簡訊時,Amazon Cognito 會在您的帳戶中擔任 IAM 角色。Amazon Cognito 會使用指派給該角色的 sns:Publish 許可,來傳送簡訊給使用者。在 Amazon Cognito 主控台中,您可以在 SMS 下使用者集區的 Messaging (簡訊) 索引標籤中設定 IAM role selection (IAM 角色選擇),或在使用者集區建立精靈期間進行此選擇。

下列範例 IAM 角色信任政策授與 Amazon Cognito 使用者集區擔任角色的有限功能。Amazon Cognito 只有在代表 aws:SourceArn 條件中的使用者集區和 aws:SourceAccount 條件中的 AWS 帳戶 時,才能擔任此角色。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "cognito-idp.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "<your account number>" }, "ArnLike": { "aws:SourceArn": "<your user pool ARN>" } } }] }

您可指定精確的使用者集區 ARN,或在 aws:SourceArn 條件的值中使用萬用字元 ARN。在 AWS Management Console 或使用 DescribeUserPoolAPI 請求中查找用戶集區的 ARN。

如需有關 IAM 角色和信任政策的詳細資訊,請參閱AWS Identity and Access Management 使用者指南中的角色術語和概念

選擇 AWS 區域 Amazon SNS 短信

在某些情況下 AWS 區域,您可以選擇包含要用於 Amazon Cognito SMS 訊息之 Amazon SNS 資源的區域。 AWS 區域 在任何可使用 Amazon Cognito 的地方 (亞太區域 (首爾) 除外,您都可以在建立使用者集區的 AWS 區域 位置使用 Amazon SNS 資源。若要在可以選擇區域時,讓您的簡訊更快、更可靠,請使用與使用者集區位於相同區域的 Amazon SNS 資源。

注意

在中 AWS Management Console,您只能在切換到新的 Amazon Cognito 主控台體驗之後變更 SMS 資源的區域。

在新增使用者集區精靈的 Configure message delivery (設定訊息傳遞) 步驟中,選擇簡訊資源的區域。您也可以在現有使用者集區的 Messaging (簡訊) 索引標籤中的 SMS (簡訊) 下方,選擇 Edit (編輯)。

在啟動時,對於某些人來說 AWS 區域,Amazon Cognito 會在替代區域中使用 Amazon SNS 資源傳送簡訊。若要設定您偏好的區域,請使用使用者集區的SmsConfigurationType物件SnsRegion參數。當您以程式設計方式在下表的 Amazon Cognito Region (Amazon Cognito 區域) 中建立 Amazon Cognito 使用者集區資源,而且不提供 SnsRegion 參數時,您的使用者集區將使用舊式 Amazon SNS Region (Amazon SNS 區域) 中的 Amazon SNS 資源傳送 SMS 訊息。

亞太區域 (首爾) 的 Amazon Cognito 使用者集區 AWS 區域 必須在亞太區域 (東京) 區域使用您的 Amazon SNS 組態。

Amazon SNS 將所有新帳戶的花費配額設定為每月 1.00 USD (美元)。您可能已經增加了與 Amazon Cognito AWS 區域 一起使用的支出限制。在變更 Amazon SNS SMS 訊息之前,請先在 Sup AWS port 中心開啟配額增加案例,以增加新區域中的限制。 AWS 區域 如需詳細資訊,請參閱《Amazon Simple Notification Service 開發人員指南》中的為 Amazon SNS 請求提升您的每月簡訊花費配額

您可以使用對應的 Amazon SNS Region (Amazon SNS 區域) 中的 Amazon SNS 資源,將 SMS 訊息傳送至下表中的任何 Amazon Cognito Region (Amazon Cognito 區域)。

Amazon Cognito 區域 Amazon SNS 區域

美國東部 (俄亥俄)

美國東部 (俄亥俄)、美國東部 (維吉尼亞北部)

加拿大 (中部)

加拿大 (中部)、美國東部 (維吉尼亞北部)

歐洲 (法蘭克福)

歐洲 (法蘭克福)、歐洲 (愛爾蘭)

歐洲 (倫敦)

歐洲 (倫敦)、歐洲 (愛爾蘭)

亞太區域 (首爾)

亞太區域 (東京)

美國東部 (維吉尼亞北部)

美國東部 (維吉尼亞北部)

美國西部 (加利佛尼亞北部)

美國西部 (加利佛尼亞北部)

美國西部 (奧勒岡)

美國西部 (奧勒岡)

亞太區域 (孟買)

亞太區域 (孟買)、亞太區域 (新加坡)

亞太區域 (海德拉巴)

亞太區域 (海德拉巴)

亞太區域 (新加坡)

亞太區域 (新加坡)

亞太區域 (悉尼)

亞太區域 (悉尼)

亞太區域 (東京)

亞太區域 (東京)

亞太區域 (雅加達)

亞太區域 (雅加達)

亞太區域 (大阪)

亞太區域 (大阪)

亞太區域 (墨爾本)

亞太區域 (墨爾本)

歐洲 (愛爾蘭)

歐洲 (愛爾蘭)

Europe (Paris)

Europe (Paris)

歐洲 (斯德哥爾摩)

歐洲 (斯德哥爾摩)

歐洲 (米蘭)

歐洲 (米蘭)

歐洲 (西班牙)

歐洲 (西班牙)

Middle East (Bahrain)

Middle East (Bahrain)

南美洲 (聖保羅)

南美洲 (聖保羅)

以色列 (特拉維夫)

以色列 (特拉維夫)

非洲 (開普敦)

非洲 (開普敦)

中東 (阿拉伯聯合大公國)

中東 (阿拉伯聯合大公國)

歐洲 (蘇黎世)

歐洲 (蘇黎世)

取得來源身分以傳送簡訊至美國電話號碼

如果您打算將簡訊傳送至美國電話號碼,必須取得來源身分,無論您是建置簡訊沙盒測試環境,或是生產環境。

2021 年 6 月 1 日起,美國電信業者要求來源身分,才能將簡訊傳送至美國電話號碼。如果還沒有來源身分,您必須取得一個。若要了解如何取得來源身分,請參閱《Amazon Pinpoint 使用者指南》中的要求號碼

如果您在以下方面進行操作 AWS 區域,則必須打開 AWS Support 票證才能獲得發起身份。如需說明,請參閱《Amazon Simple Notification Service 開發人員指南》中的要求簡訊支援

  • 美國東部 (俄亥俄)

  • 歐洲 (斯德哥爾摩)

  • Europe (Paris)

  • 歐洲 (米蘭)

  • 中東 (巴林)

  • 南美洲 (聖保羅)

  • 美國西部 (加利佛尼亞北部)

如果您有多個相同的創始身分 AWS 區域,Amazon SNS 會按照下列優先順序選擇一個起始身分類型:短碼、10DLC、免費電話號碼。您無法變更此優先權。如需詳細資訊,請參閱 Amazon SNS 常見問常見問答集

確認您在簡訊沙盒中

使用下列操作程序來確認您是否位於簡訊沙盒中。針對您擁有生產 Amazon Cognito 使用者集區的每個 AWS 區域 位置重複此動作。

確認您是否在 SMS 沙盒中
  1. 前往 Amazon Cognito 主控台。若出現提示,請輸入 AWS 憑證。

  2. 選擇 User Pools (使用者集區)。

  3. 從清單中選擇現有的使用者集區。

  4. 選擇 Messaging (簡訊) 索引標籤。

  5. SMS configuration (SMS 組態) 區段中,展開 Move to Amazon SNS production environment (移至 Amazon SNS 生產環境)。如果您的帳戶在 SMS 沙盒中,您會看到以下訊息:

    You are currently in the SMS Sandbox and cannot send SMS messages to unverified numbers.

    如果您沒有看到此訊息,表示有人已在您的帳戶中設定簡訊。跳至 在 Amazon Cognito 中完成使用者集區設定

  6. 選擇訊息中的 Amazon SNS 連結。如此會在新索引標籤中開啟 Amazon SNS 主控台。

  7. 確認您在沙盒環境中。主控台訊息會指出您的沙箱狀態 AWS 區域,如下所示:

    This account is in the SMS sandbox in US East (N. Virginia).

將您的帳戶移出 Amazon SNS 沙盒

如果您正在測試應用程式,而且只需將簡訊傳送到管理員可驗證的電話號碼,請跳過此步驟。

若要在生產環境中使用您的應用程式,請將帳戶移出簡訊沙盒,然後移至生產環境中。在包含您希望 Amazon Cognito 使用的 AWS 區域 Amazon SNS 資源的中設定起始身分後,您可以在 AWS 帳戶 保留在 SMS 沙箱中的同時驗證美國電話號碼。當您的 Amazon SNS 環境處於生產狀態時,您無需驗證 Amazon SNS 中的使用者電話號碼,就能向使用者傳送簡訊。

如需詳細說明,請參閱 Amazon Simple Notification Service 開發人員指南中的移出簡訊沙盒

在 Amazon SNS 中為 Amazon Cognito 驗證電話號碼

如果您已將帳戶移出簡訊沙盒,請略過此步驟。

當您在簡訊沙盒中時,可以將訊息傳送至已通過 Amazon SNS 驗證的任何電話號碼。

若要驗證電話號碼,請執行以下操作:

  1. 在 Amazon SNS 主控台的 Text messaging (SMS) (文字簡訊 (SMS)) 區段中新增 Sandbox destination phone number ((沙盒目的地電話號碼))。

  2. 透過您提供的電話號碼接收附帶代碼的簡訊。

  3. 在 Amazon SNS 主控台中輸入來自簡訊的 Verification code (驗證碼)。

如需詳細說明,請參閱《Amazon Simple Notification Service 開發人員指南》中的在簡訊沙盒中新增和驗證電話號碼

注意

Amazon SNS 會限制您在簡訊沙盒時可驗證的目的地電話號碼的數量。請參閱 Amazon Simple Notification Service 開發人員指南中的簡訊沙盒

在 Amazon Cognito 中完成使用者集區設定

回到您建立編輯使用者集區的瀏覽器索引標籤。完成程序。成功將 SMS 組態新增至使用者集區後,Amazon Cognito 會將測試訊息傳送至內部電話號碼,以確認您的組態是否有效。Amazon SNS 會針對每個測試簡訊收取費用。