本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
SMS Amazon Cognito 使用者集區的訊息設定
使用者集區的某些 Amazon Cognito 事件可能會導致 Amazon Cognito 向您的使用者傳送SMS文字訊息。例如,如果您將使用者集區設定為需要電話驗證,Amazon Cognito 會在使用者在應用程式中註冊新帳戶或重設密碼時傳送SMS簡訊。根據啟動SMS文字訊息的動作,訊息包含驗證碼、臨時密碼或歡迎訊息。
Amazon Cognito 使用 Amazon Simple Notification Service (Amazon SNS) 來傳遞SMS文字訊息。如果您是SNS第一次透過 Amazon Cognito 或 Amazon 傳送文字訊息,Amazon 會將您SNS置於沙盒環境中。在沙盒環境中,您可以測試應用程式是否有SMS文字訊息。在沙盒中,簡訊只能傳送至已驗證的電話號碼。
SMS 簡訊的 Amazon SNS費用。如需詳細資訊,請參閱 Amazon SNS定價。
注意
由於全球主動發出的SMS流量數量,某些政府會在SMS訊息的寄件者和收件者之間施加障礙。當您使用 MFA和 使用者更新SMS的訊息時,您必須採取其他步驟,以確保訊息已交付。您還必須監控 SMS-message-related使用者可能居住的國家/地區的法規,並保持SMS訊息組態為最新狀態。如需詳細資訊,請參閱 Amazon Simple Notification Service 開發人員指南中的行動簡訊 (SMS)。
使用SMS訊息來驗證和驗證使用者不是安全最佳實務。電話號碼可以變更擁有者,而且可能無法可靠地代表您對使用者具有 因素的物件。 MFA相反地,TOTPMFA請在您的應用程式中實作 ,或使用第三方 IdP 實作 。您也可以使用 自訂身分驗證挑戰 Lambda 觸發程序 建立其他自訂的身分驗證因素。
Amazon Cognito 會使用可輸入的代碼傳送訊息SMS給您的使用者。下表顯示可產生SMS訊息的事件。
訊息選項
活動 | API 操作 | 傳遞選項 | 格式選項 | 可自訂 | 訊息範本 |
---|---|---|---|---|---|
忘記密碼 | ForgotPassword, AdminResetUserPassword | 電子郵件、 SMS | code | 否 | N/A |
邀請 | AdminCreateUser | 電子郵件、 SMS | code | 是 | 邀請訊息 |
自我註冊 | SignUp, ResendConfirmationCode | 電子郵件、 SMS | 程式碼、連結 | 是 | 驗證訊息 |
電子郵件地址或電話號碼驗證 | UpdateUserAttributes, AdminUpdateUserAttributes, GetUserAttributeVerificationCode | 電子郵件、 SMS | code | 是 | 驗證訊息 |
多重要素驗證 (MFA) | AdminInitiateAuth, InitiateAuth | SMS,身分驗證器應用程式 | code | 是1 | MFA 訊息 |
1 針對SMS訊息。
第一次在 Amazon Cognito 使用者集區中設定SMS訊息
Amazon Cognito 使用 Amazon SNS將SMS訊息傳送到您的使用者集區。您也可以使用 自訂SMS寄件者 Lambda 觸發程序來使用您自己的資源來傳送訊息SMS。您第一次設定 Amazon SNS 在特定 中傳送SMS文字訊息時 AWS 區域,Amazon 會將您的 SNS 放置在該區域的SMS沙盒 AWS 帳戶 中。Amazon SNS會使用沙盒來防止詐騙和濫用,並符合合規要求。當您 AWS 帳戶 的 位於沙盒中時,Amazon 會SNS施加一些限制。例如,您可以將文字訊息傳送到您向 Amazon 進行驗證的最多 10 個電話號碼SNS。當您的 AWS 帳戶 保留在沙盒中時,請勿將 Amazon SNS組態用於生產中的應用程式。您在沙盒中時,Amazon Cognito 無法將簡訊傳送到使用者的電話號碼。
傳送SMS文字訊息給使用者集區使用者
準備 Amazon Cognito 可用來透過 Amazon SMS傳送訊息IAM的角色 SNS
當您SMS從使用者集區傳送訊息時,Amazon Cognito 會在您的帳戶中擔任 IAM角色。Amazon Cognito 會使用指派給該角色的sns:Publish
許可,將SMS訊息傳送給您的使用者。在 Amazon Cognito 主控台中,您可以從使用者集區的傳訊索引標籤中,在使用者集區建立精靈中設定IAM角色選擇,SMS或在建立精靈期間進行此選擇。
下列範例IAM角色信任政策會授予 Amazon Cognito 使用者擔任角色的有限能力。Amazon Cognito 只有在符合下列條件時才能擔任該角色:
-
擔任角色操作代表
aws:SourceArn
條件中的使用者集區。 -
擔任角色操作代表
aws:SourceAccount
條件所設定之 AWS 帳戶 中的使用者集區。 -
assume-role 操作在
sts:externalId
條件中包含外部 ID。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "cognito-idp.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "
a1b2c3d4-5678-90ab-cdef-EXAMPLE22222
", "aws:SourceAccount": "111122223333
" }, "ArnLike": { "aws:SourceArn": "arn:aws:cognito-idp:us-west-2:111122223333:userpool/us-west-2_EXAMPLE
" } } } ] }
您可以在aws:SourceArn
條件的值ARN中指定確切的使用者集ARN區或萬用字元。在 AWS Management Console 或 中尋找具有 DescribeUserPoolAPI請求ARNs的使用者集區的 。
若要傳送多因素身分驗證 SMS的訊息,您的IAM角色信任政策必須具有 sts:ExternalId
條件。此條件的值必須符合SmsConfiguration使用者集區的 ExternalId
屬性。當您在 Amazon Cognito 主控台中建立使用者集區的過程中建立IAM角色時,Amazon Cognito 會在角色和使用者集區設定中為您設定外部 ID。當您使用現有IAM角色時,這並非事實。
您必須更新UpdateUserPoolAPI請求中的使用者集區ExternalId
參數,並使用具有相同值sts:externalId
的條件更新IAM角色信任政策。若要了解如何使用 API 以保留原始組態的方式更新使用者集區,請參閱 更新使用者集區和應用程式用戶端組態。
如需IAM角色和信任政策的詳細資訊,請參閱 AWS Identity and Access Management 使用者指南 中的角色術語和概念。
選擇適用於 Amazon SNS SMS 訊息 AWS 區域 的
在某些 中 AWS 區域,您可以選擇包含要用於 Amazon Cognito 訊息的 Amazon SNS 資源的區域。 SMS在 Amazon Cognito 可用的任何 AWS 區域 中,除了亞太區域 (首爾) 之外,您可以在建立使用者集區 AWS 區域 所在的 中使用 Amazon SNS 資源。若要在選擇區域時讓您的SMS訊息更快且更可靠,請使用與使用者集區相同區域中的 Amazon SNS 資源。
注意
在 中 AWS Management Console,您只能在切換到新的 Amazon Cognito 主控台體驗之後變更SMS資源的區域。
在新使用者集區精靈的設定訊息傳遞步驟中選擇SMS資源的區域。您也可以在現有使用者集區的傳訊索引標籤SMS中選擇編輯。
啟動時,對於某些 AWS 區域,Amazon Cognito 會在替代區域中SMS使用 Amazon SNS 資源傳送訊息。若要設定偏好的區域,請使用使用者集區的SmsConfigurationType物件SnsRegion
參數。當您從下表以程式設計方式在 Amazon Cognito 區域中建立 Amazon Cognito 使用者集區資源,但您未提供 SnsRegion
參數時,您的使用者集區可以傳送舊版 Amazon SNS區域中 Amazon SNS 資源SMS的訊息。
亞太區域 (首爾) 的 Amazon Cognito 使用者集區 AWS 區域 必須在亞太區域 (東京) 區域使用您的 Amazon SNS組態。
Amazon 為所有新帳戶SNS設定每月 1.00 (USD) 美元的支出配額。您可能已增加與 AWS 區域 Amazon Cognito 搭配使用的 中的支出限制。在變更 Amazon SNS SMS 訊息 AWS 區域 的 之前,請在 AWS 支援中心開啟配額增加案例,以增加新區域中的限制。如需詳細資訊,請參閱Amazon Simple Notification Service 開發人員指南中的請求增加 Amazon 的每月SMS支出配額SNS。
您可以使用對應 Amazon 區域 中的 Amazon 資源,傳送下表中任何 Amazon Cognito SNS區域SMS的訊息。 SNS
Amazon Cognito 區域 | Amazon SNS區域 |
---|---|
美國東部 (俄亥俄) |
美國東部 (俄亥俄)、美國東部 (維吉尼亞北部) |
美國東部 (維吉尼亞北部) |
美國東部 (維吉尼亞北部) |
美國西部 (加利佛尼亞北部) |
美國西部 (加利佛尼亞北部) |
美國西部 (奧勒岡) |
美國西部 (奧勒岡) |
加拿大 (中部) |
加拿大 (中部)、美國東部 (維吉尼亞北部) |
加拿大西部 (卡加利) |
加拿大西部 (卡加利) |
歐洲 (法蘭克福) |
歐洲 (法蘭克福)、歐洲 (愛爾蘭) |
歐洲 (倫敦) |
歐洲 (倫敦)、歐洲 (愛爾蘭) |
歐洲 (愛爾蘭) |
歐洲 (愛爾蘭) |
Europe (Paris) |
Europe (Paris) |
歐洲 (斯德哥爾摩) |
歐洲 (斯德哥爾摩) |
歐洲 (米蘭) |
歐洲 (米蘭) |
歐洲 (西班牙) |
歐洲 (西班牙) |
歐洲 (蘇黎世) |
歐洲 (蘇黎世) |
亞太區域 (孟買) |
亞太區域 (孟買)、亞太區域 (新加坡) |
亞太區域 (海德拉巴) |
亞太區域 (海德拉巴) |
亞太區域 (香港) |
亞太區域 (新加坡) |
亞太區域 (首爾) |
亞太區域 (東京) |
亞太區域 (新加坡) |
亞太區域 (新加坡) |
亞太區域 (悉尼) |
亞太區域 (悉尼) |
亞太區域 (東京) |
亞太區域 (東京) |
亞太區域 (雅加達) |
亞太區域 (雅加達) |
亞太區域 (大阪) |
亞太區域 (大阪) |
亞太區域 (墨爾本) |
亞太區域 (墨爾本) |
Middle East (Bahrain) |
Middle East (Bahrain) |
中東 (UAE) |
中東 (UAE) |
南美洲 (聖保羅) |
南美洲 (聖保羅) |
以色列 (特拉維夫) |
以色列 (特拉維夫) |
非洲 (開普敦) |
非洲 (開普敦) |
取得原始身分以SMS傳送訊息至美國電話號碼
如果您打算將SMS文字訊息傳送至美國電話號碼,則無論您是建置SMS沙盒測試環境還是生產環境,都必須取得原始身分。
2021 年 6 月 1 日起,美國電信業者要求來源身分,才能將簡訊傳送至美國電話號碼。如果還沒有來源身分,您必須取得一個。若要了解如何取得來源身分,請參閱《Amazon Pinpoint 使用者指南》中的要求號碼。
如果您在下列 中操作 AWS 區域,則必須開啟 AWS Support 票證以取得原始身分。如需指示,請參閱 Amazon Simple Notification Service 開發人員指南 中的請求SMS訊息支援。
-
美國東部 (俄亥俄)
-
歐洲 (斯德哥爾摩)
-
Europe (Paris)
-
歐洲 (米蘭)
-
中東 (巴林)
-
南美洲 (聖保羅)
-
美國西部 (加利佛尼亞北部)
當您在同一 中具有多個原始身分時 AWS 區域,Amazon 會依下列優先順序SNS選擇原始身分類型:短碼、10DLC、免付費電話號碼。您無法變更此優先權。如需詳細資訊,請參閱 Amazon SNS FAQs
確認您位於SMS沙盒中
使用下列程序來確認您位於SMS沙盒中。針對您擁有生產 Amazon Cognito 使用者集區的每個 AWS 區域 重複 。
確認您位於SMS沙盒中
-
前往 Amazon Cognito 主控台
。若出現提示,請輸入 AWS 憑證。 -
選擇 User Pools (使用者集區)。
-
從清單中選擇現有的使用者集區。
-
選擇 Messaging (簡訊) 索引標籤。
-
在SMS組態區段中,展開移至 Amazon SNS生產環境 。如果您的帳戶位於SMS沙盒中,您會看到下列訊息:
You are currently in the SMS Sandbox and cannot send SMS messages to unverified numbers.
如果您沒有看到此訊息,則表示您的帳戶中已有人設定SMS訊息。跳至 在 Amazon Cognito 中完成使用者集區設定。
-
選擇訊息中的 Amazon SNS
連結。這會在新索引標籤中開啟 Amazon SNS主控台。 -
確認您在沙盒環境中。主控台訊息會指出沙盒狀態和 AWS 區域,如下所示:
This account is in the SMS sandbox in US East (N. Virginia).
將您的帳戶移出 Amazon SNS沙盒
如果您正在測試應用程式,而且只需要將SMS訊息傳送到管理員可以驗證的電話號碼,請略過此步驟。
若要在生產環境中使用您的應用程式,請將您的帳戶移出SMS沙盒並移至生產環境。在 AWS 區域 中設定原始身分,其中包含您希望 Amazon Cognito 使用的 Amazon SNS 資源後,您可以在您的 AWS 帳戶 保留在SMS沙盒中時驗證美國電話號碼。當您的 Amazon SNS環境處於生產狀態時,您不需要在 Amazon 中驗證使用者電話號碼SNS,即可SMS傳送訊息給使用者。
如需詳細說明,請參閱 Amazon Simple Notification Service 開發人員指南 中的移出SMS沙盒。
驗證 Amazon 中 Amazon Cognito 的電話號碼 SNS
如果您已將帳戶移出SMS沙盒,請略過此步驟。
當您在SMS沙盒中時,您可以將訊息傳送到已向 Amazon 進行驗證的任何電話號碼SNS。
若要驗證電話號碼,請執行以下操作:
-
在 Amazon SNS主控台的簡訊 (SMS) 區段中新增沙盒目的地電話號碼。
-
在您提供的電話號碼收到包含代碼SMS的訊息。
-
在 Amazon SNS主控台中輸入SMS訊息中的驗證碼。
如需詳細說明,請參閱 Amazon Simple Notification Service 開發人員指南 中的在SMS沙盒中新增和驗證電話號碼。
注意
Amazon 會SNS限制您在SMS沙盒中可以驗證的目的地電話號碼數量。請參閱 Amazon Simple Notification Service 開發人員指南 中的SMS沙盒。
在 Amazon Cognito 中完成使用者集區設定
回到您建立或編輯使用者集區的瀏覽器索引標籤。完成程序。當您成功將SMS組態新增至使用者集區時,Amazon Cognito 會將測試訊息傳送至內部電話號碼,以驗證您的組態是否有效。每個測試SMS訊息的 Amazon SNS費用。