將 MFA 新增到使用者集區 - Amazon Cognito

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

將 MFA 新增到使用者集區

MFA 會將您具有身分驗證因素的某物新增至您所知的初始因素,通常是使用者名稱和密碼。您可以選擇簡訊、電子郵件訊息或以時間為基礎的一次性密碼 (TOTP) 作為其他因素,以登入具有密碼作為其主要身分驗證因素的使用者。

多重要素驗證 (MFA) 可提高應用程式中本機使用者的安全性。如果是聯合身分使用者,Amazon Cognito 會將所有身分驗證程序委派給 IdP,而且不會提供其他身分驗證因素。

注意

新使用者首次登入您的應用程式時,Amazon Cognito 會發出 OAuth 2.0 權杖,即使您的使用者集區需要 MFA 也是如此。您的使用者首次登入時的第二個身分驗證要素是確認 Amazon Cognito 傳送給他們的驗證訊息。如果您的使用者集區需要 MFA,Amazon Cognito 會提示您的使用者註冊一個額外的登入要素,以便在第一次之後的每次登入嘗試期間使用。

透過適應性身分驗證,您可以設定使用者集區,以需要額外的身分驗證因素來回應增加的風險層級。若要將適應性身分驗證新增到使用者集區,請參閱 具有威脅防護的進階安全性

當您將使用者集區的多重要素驗證 (MFA) 設定為 required 時,所有使用者都必須完成 MFA 才能登入。若要登入,每個使用者必須至少設定一個 MFA 因素。當需要 MFA 時,您必須在使用者加入中包含 MFA 設定,以便您的使用者集區允許他們登入。

當您將 MFA 設為必要時,受管登入會提示使用者設定 MFA。當您在使用者集區中將 MFA 設定為選用時,受管登入不會提示使用者。若要使用選用的 MFA,您必須在應用程式中建置一個介面來提示您的使用者選取要設定 MFA,然後引導他們進行 API 輸入,以驗證他們的另一項登入要素。

使用者集區 MFA 的須知事項

設定 MFA 之前,請考慮下列事項:

  • 您可以在使用者集區中具有必要的 MFA 無密碼登入因素。您無法在支援一次性密碼通行金鑰的使用者集區中將 MFA 設定為必要。您無法在需要 MFA 的使用者集區中使用USER_AUTH流程啟用以選擇為基礎的登入

  • 使用者偏好的 MFA 方法會影響他們可以用來復原密碼的方法。偏好的 MFA 是透過電子郵件傳送訊息的使用者無法透過電子郵件接收密碼重設碼。偏好的 MFA 是 SMS 訊息的使用者無法透過 SMS 接收密碼重設碼。

    當使用者不符合您偏好的密碼重設方法時,您的密碼復原設定必須提供替代選項。例如,您的復原機制可能將電子郵件視為第一優先,而電子郵件 MFA 可能是使用者集區中的選項。在此情況下,新增簡訊帳戶復原做為第二個選項,或使用管理 API 操作來重設這些使用者的密碼。

  • 使用者無法在相同的電子郵件地址或電話號碼接收 MFA 和密碼重設代碼。如果他們從 MFA 的電子郵件訊息中使用一次性密碼 (OTPs),則必須使用 SMS 訊息進行帳戶復原。如果他們使用來自 MFA 簡訊的 OTPs,則必須使用電子郵件訊息進行帳戶復原。在具有 MFA 的使用者集區中,如果使用者擁有電子郵件地址的屬性,但沒有電話號碼,或是電話號碼,但沒有電子郵件地址,則可能無法完成自助式密碼復原。

    若要防止使用者無法使用此組態在使用者集區中重設密碼的狀態,請視需要設定 emailphone_number 屬性。 使用使用者屬性或者,您可以設定程序,在使用者註冊或管理員建立使用者設定檔時,一律收集和設定這些屬性。當使用者同時擁有兩個屬性時,Amazon Cognito 會自動將密碼重設碼傳送至不是使用者 MFA 因素的目的地。

  • 當您在使用者集區中啟用 MFA 並選擇簡訊電子郵件訊息作為第二個因素時,您可以將訊息傳送到尚未在 Amazon Cognito 中驗證的電話號碼或電子郵件屬性。使用者完成 MFA 後,Amazon Cognito 會將其 phone_number_verifiedemail_verified 屬性設定為 true

  • 嘗試提供 MFA 代碼失敗五次之後,Amazon Cognito 會啟動指數遞增封鎖持續時間程序,如 失敗登入嘗試的鎖定行為 中所述。

  • 如果您的帳戶位於 中的 SMS 沙盒中 AWS 區域 ,其中包含使用者集區的 Amazon Simple Notification Service (Amazon SNS) 資源,您必須先在 Amazon SNS 中驗證電話號碼,才能傳送簡訊。如需詳細資訊,請參閱Amazon Cognito 使用者集區的簡訊設定

  • 若要變更使用者的 MFA 狀態,以回應具有威脅防護的偵測到事件,請在 Amazon Cognito 使用者集區主控台中啟用 MFA,並將其設定為選用。如需詳細資訊,請參閱具有威脅防護的進階安全性

  • 電子郵件和簡訊需要您的使用者分別擁有電子郵件地址和電話號碼屬性。您可以在使用者集區中將 emailphone_number 設定為必要屬性。在此情況下,除非使用者提供電話號碼,否則無法完成註冊。如果您不將這些屬性設定為必要,但想要執行電子郵件或簡訊 MFA,請在使用者註冊時提示他們輸入電子郵件地址或電話號碼。最佳實務是,設定您的使用者集區以自動傳送訊息給使用者,以驗證這些屬性

    如果使用者透過簡訊或電子郵件訊息成功收到臨時碼,並在 VerifyUserAttribute API 請求中傳回該碼,Amazon Cognito 會將電話號碼或電子郵件地址視為已驗證。或者,您的團隊可以設定電話號碼,並使用執行 AdminUpdateUserAttributes API 請求的管理應用程式將其標記為已驗證。

  • 如果您已將 MFA 設定為必要,且啟用多個身分驗證因素,Amazon Cognito 會提示新使用者選取他們要使用的 MFA 因素。使用者必須擁有設定簡訊 MFA 的電話號碼,以及設定電子郵件訊息 MFA 的電子郵件地址。如果使用者未為任何可用訊息型 MFA 定義 屬性,Amazon Cognito 會提示他們設定 TOTP MFA。選擇 MFA 因數 (SELECT_MFA_TYPE) 和設定所選因數 (MFA_SETUP) 的提示會做為 InitiateAuthAdminInitiateAuth API 操作的挑戰回應出現。

使用者 MFA 偏好設定

使用者可以設定多個 MFA 因素。只有一個可以處於作用中狀態。您可以在使用者集區設定或從使用者提示中選擇使用者的有效 MFA 偏好設定。當使用者集區設定及其自己的使用者層級設定符合下列條件時,使用者集區會提示使用者輸入 MFA 代碼:

  1. 您可以在使用者集區中將 MFA 設定為選用或必要。

  2. 使用者具有有效的 emailphone_number屬性,或已為 TOTP 設定驗證器應用程式。

  3. 至少一個 MFA 因素處於作用中狀態。

  4. 一個 MFA 因素設定為偏好。

使用者集區設定及其對 MFA 選項的影響

使用者集區的組態會影響使用者可以選擇的 MFA 方法。以下是會影響使用者設定 MFA 能力的一些使用者集區設定。

  • 在 Amazon Cognito 主控台的登入功能表中的多重要素驗證組態中,您可以將 MFA 設定為選用或必要,或將其關閉。此設定的 API 對等項目是 CreateUserPoolUpdateUserPool和 的 MfaConfiguration 參數SetUserPoolMfaConfig

    此外,在多重要素驗證組態中,MFA 方法設定會決定使用者可以設定的 MFA 要素。此設定的 API 對等項目是 SetUserPoolMfaConfig 操作。

  • 登入選單的使用者帳戶復原下,您可以設定使用者集區傳送訊息給忘記密碼的使用者的方式。使用者的 MFA 方法不能具有與忘記密碼代碼的使用者集區交付方法相同的 MFA 交付方法。忘記密碼交付方法的 API 參數是 CreateUserPool和 的 AccountRecoverySetting 參數UpdateUserPool

    例如,當您的復原選項是僅限電子郵件時,使用者無法設定電子郵件 MFA。這是因為您無法啟用電子郵件 MFA,且只能在相同的使用者集區中將復原選項設定為電子郵件。當您將此選項設定為電子郵件時,否則 SMS 會是優先順序復原選項,但當使用者不符合電子郵件訊息復原的資格時,您的使用者集區可能會回到 SMS 訊息。在這種情況下,使用者可以將電子郵件 MFA 設為偏好,而且只有在他們嘗試重設密碼時才會收到簡訊。

  • 如果您只將一個 MFA 方法設為可用,則不需要管理使用者 MFA 偏好設定。

  • 作用中 SMS 組態會自動將 SMS 訊息設為使用者集區中的可用 MFA 方法。

    在使用者集區中具有您自己的 Amazon SES 資源的作用中電子郵件組態,以及 Essentials 或 Plus 功能計劃,會自動將電子郵件訊息設定為使用者集區中的可用 MFA 方法。

  • 當您將 MFA 設定為使用者集區中的必要時,使用者無法啟用或停用任何 MFA 方法。您只能設定偏好的方法。

  • 當您在使用者集區中將 MFA 設定為選用時,受管登入不會提示使用者設定 MFA,但會在使用者有偏好的 MFA 方法時提示他們輸入 MFA 代碼。

  • 當您啟用威脅防護並在全功能模式下設定自我調整驗證回應時,MFA 必須是使用者集區中的選用項目。具有適應性身分驗證的回應選項之一,是要求 MFA 適用於其登入嘗試評估為包含風險層級的使用者。

    主控台的註冊功能表中的必要屬性設定,會決定使用者是否必須提供電子郵件地址或電話號碼,才能在應用程式中註冊。當使用者具有對應的屬性時,電子郵件和簡訊會變成合格的 MFA 因素。的結構描述參數會視需要CreateUserPool設定屬性。

  • 當您在使用者集區中將 MFA 設定為必要,且使用者使用受管登入登入登入時,Amazon Cognito 會提示他們從使用者集區可用的方法中選取 MFA 方法。受管登入會處理電子郵件地址或電話號碼的集合,以及 TOTP 的設定。

用於設定 MFA 偏好設定的 API 操作

您可以在具有存取金鑰授權的自助式模型中,或在具有管理 API 操作的管理員管理模型中,為使用者設定 MFA 偏好設定。這些操作會啟用或停用 MFA 方法,並將多種方法之一設定為偏好的選項。您的使用者設定 MFA 偏好設定後,Amazon Cognito 會在登入時提示他們提供其偏好 MFA 方法的代碼。未設定偏好設定的使用者會收到提示,在SELECT_MFA_TYPE挑戰中選擇偏好的方法。

  • 在使用者自助式模型或公有應用程式中,使用登入使用者的存取字符授權的 SetUserMfaPreference 會設定 MFA 組態。

  • 在管理員管理或機密應用程式中,使用管理 AWS 登入資料授權的 AdminSetUserPreference 會設定 MFA 組態。

您也可以從 Amazon Cognito 主控台的使用者選單設定使用者 MFA 偏好設定。如需 Amazon Cognito 使用者集區 API 中公有和機密身分驗證模型的詳細資訊,請參閱了解 API、OIDC 和受管登入頁面身分驗證

設定使用者集區以進行多重要素身分驗證

您可以在 Amazon Cognito 主控台中設定 MFA。

在 Amazon Cognito 主控台中設定 MFA
  1. 登入 Amazon Cognito 主控台

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

  3. 從清單中選擇現有的使用者集區,或建立使用者集區

  4. 選擇登入選單。尋找多重要素身分驗證,然後選擇編輯

  5. 選擇您想要與使用者集區搭配使用的 MFA 強制執行方法。

    Amazon Cognito 主控台的螢幕擷取畫面,其中包含 MFA 選項。
    1. Require MFA (需要 MFA)。您使用者集區中的所有使用者都必須使用額外的簡訊、電子郵件或時間型一次性密碼 (TOTP) 程式碼登入,做為額外的身分驗證因素。

    2. 選用 MFA。您可以提供使用者註冊其他登入因素的選項,但仍允許尚未設定 MFA 的使用者登入。如果您正在使用適應性身分驗證,請選擇此選項。如需有關適應性身分驗證的詳細資訊,請參閱 具有威脅防護的進階安全性

    3. No MFA (沒有 MFA)。您的使用者無法註冊額外的登入要素。

  6. 選擇您應用程式中支援的 MFA methods (MFA 方法)。您可以將電子郵件訊息簡訊或 TOTP 產生的 Authenticator 應用程式設定為第二個因素。

  7. 如果使用文字簡訊作為第二個要素,且您尚未設定與 Amazon Simple Notification Service (Amazon SNS) 搭配用於簡訊的 IAM 角色,則您可以在主控台中建立一個角色。在使用者集區的身分驗證方法選單中,尋找 SMS 並選擇編輯。您也可以使用允許 Amazon Cognito 為您將簡訊傳送給使用者的現有角色。如需詳細資訊,請參閱 IAM 角色

    如果您使用電子郵件訊息做為第二個因素,且您尚未將原始身分設定為搭配 Amazon Simple Email Service (Amazon SES) 用於電子郵件訊息,請在 主控台中建立一個。您必須選擇使用 SES 傳送電子郵件選項。在使用者集區的身分驗證方法功能表中,找到電子郵件,然後選擇編輯。從清單中可用的已驗證身分中選取 FROM 電子郵件地址。如果您選擇已驗證的網域,例如 example.com,您還必須在已驗證的網域中設定 FROM 寄件者名稱,例如 admin-noreply@example.com

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