共用方式為


在 Azure AD B2C 自定義策略中定義 Microsoft Entra ID 多重身份驗證技術配置檔

這很重要

自 2025 年 5 月 1 日起,Azure AD B2C 將不再可供新客戶購買。 在我們的常見問題中深入瞭解

Azure Active Directory B2C (Azure AD B2C) 支援使用驗證碼驗證電話號碼,或驗證基於時間的一次性密碼 (TOTP) 代碼。

協定

Protocol 元素的 Name 屬性必須設定為 Proprietaryhandler 屬性必須包含 Azure AD B2C 使用的協定處理程式程式集的完全限定名稱:

Web.TPEngine.Providers.AzureMfaProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

以下範例顯示了 Microsoft Entra ID 多重身份驗證技術設定檔:

<TechnicalProfile Id="AzureMfa-SendSms">
    <DisplayName>Send Sms</DisplayName>
    <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AzureMfaProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
    ...

驗證手機模式

在驗證電話模式下,技術配置檔會生成代碼並將其發送到電話號碼,然後驗證代碼。 Microsoft Entra ID 多重身份驗證技術配置檔也可能返回錯誤消息。 驗證技術配置檔會在使用者旅程繼續之前驗證使用者提供的數據。 使用驗證技術配置檔時,錯誤消息會顯示在自斷言頁面上。 技術概況:

  • 不提供與使用者交互的介面。 相反,使用者介面是從自斷言的技術配置檔中調用的,或者從作為驗證技術配置文件顯示控件中調用。
  • 使用 Microsoft Entra 多重身份驗證服務生成代碼並將其發送到電話號碼,然後驗證該代碼。
  • 通過簡訊驗證電話號碼。

技術配置檔提供了通過SMS文本消息 發送驗證碼驗證驗證碼的方法。 以下螢幕截圖顯示了電話驗證程式流程。

顯示TOTP流的螢幕截圖

傳送 SMS

要驗證電話,第一步會生成一個代碼並將其發送到電話號碼。 可以為此步驟配置以下選項。

輸入宣告

InputClaims 元素包含要發送到 Microsoft Entra 多重身份驗證的聲明清單。 您還可以將聲明的名稱映射到 MFA 技術設定檔中定義的名稱。

ClaimReferenceId 為必填項目 說明
userPrincipalName 是的 擁有電話號碼的使用者的標識碼。
phoneNumber 是的 要向其發送SMS驗證碼的電話號碼。
companyName SMS 中的公司名稱。 如果未提供,則使用您的應用程式的名稱。
locale SMS 的區域設置。 如果未提供,則使用使用者的瀏覽器區域設置。

輸出宣告

Microsoft Entra 多重身份驗證協定提供者不返回任何輸出聲明,因此無需指定輸出聲明。

後設資料

Metadata 元素包含以下屬性。

屬性 為必填項目 說明
Operation 是的 必須是 OneWaySMS
UI 元素

以下元數據可用於配置發送SMS失敗時顯示的錯誤消息。 元數據應在 自斷言 技術配置檔中配置。 錯誤訊息可以 當地語系化

屬性 為必填項目 說明
UserMessageIfCouldntSendSms 如果提供的電話號碼不接受SMS,則會顯示使用者錯誤消息。
UserMessageIfInvalidFormat 如果提供的電話號碼不是有效的電話號碼,則會顯示使用者錯誤消息。
UserMessageIfServerError 如果伺服器遇到內部錯誤,則顯示User Error消息。
UserMessageIfThrottled 如果請求受到限制,則顯示使用者錯誤消息。

示例:發送簡訊

以下示例顯示了用於通過SMS發送代碼的 Microsoft Entra ID 多重身份驗證技術配置檔。

<TechnicalProfile Id="AzureMfa-SendSms">
  <DisplayName>Send Sms</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AzureMfaProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="Operation">OneWaySMS</Item>
  </Metadata>
  <InputClaimsTransformations>
    <InputClaimsTransformation ReferenceId="CombinePhoneAndCountryCode" />
    <InputClaimsTransformation ReferenceId="ConvertStringToPhoneNumber" />
  </InputClaimsTransformations>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="userPrincipalName" />
    <InputClaim ClaimTypeReferenceId="fullPhoneNumber" PartnerClaimType="phoneNumber" />
  </InputClaims>
</TechnicalProfile>

檢查驗證碼

驗證代碼步驟驗證發送給用戶的代碼。 可以為此步驟配置以下選項。

輸入宣告

InputClaims 元素包含要發送到 Microsoft Entra 多重身份驗證的聲明清單。 您還可以將聲明的名稱映射到 MFA 技術設定檔中定義的名稱。

ClaimReferenceId 為必填項目 說明
phoneNumber 是的 與之前用於發送驗證碼的電話號碼相同。 它還用於查找電話驗證會話。
verificationCode 是的 待驗證使用者提供的驗證碼

輸出宣告

Microsoft Entra 多重身份驗證協定提供者不返回任何輸出聲明,因此無需指定輸出聲明。

後設資料

Metadata 元素包含以下屬性。

屬性 為必填項目 說明
Operation 是的 必須是 Verify
UI 元素

以下元數據可用於配置代碼驗證失敗時顯示的錯誤消息。 元數據應在 自斷言 技術配置檔中配置。 錯誤訊息可以 當地語系化

屬性 為必填項目 說明
UserMessageIfMaxAllowedCodeRetryReached 如果使用者嘗試驗證碼的次數過多,則顯示User錯誤消息。
UserMessageIfServerError 如果伺服器遇到內部錯誤,則顯示User Error消息。
UserMessageIfThrottled 如果請求受阻,則顯示User錯誤消息。
UserMessageIfWrongCodeEntered 如果輸入用於驗證的代碼有誤,則會顯示使用者錯誤消息。

示例:驗證代碼

以下示例顯示了用於驗證代碼的 Microsoft Entra ID 多重身份驗證技術配置檔。

<TechnicalProfile Id="AzureMfa-VerifySms">
    <DisplayName>Verify Sms</DisplayName>
    <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AzureMfaProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
    <Metadata>
        <Item Key="Operation">Verify</Item>
    </Metadata>
    <InputClaims>
        <InputClaim ClaimTypeReferenceId="phoneNumber" PartnerClaimType="phoneNumber" />
        <InputClaim ClaimTypeReferenceId="verificationCode" />
    </InputClaims>
</TechnicalProfile>

TOTP 模式

在此模式下,使用者需要在他們擁有的設備上安裝任何支援基於時間的一次性密碼 (TOTP) 驗證的驗證器應用程式,例如 Microsoft Authenticator 應用程式

在首次註冊或登錄期間,用戶掃描 QR 碼、打開深層連結或使用 Authenticator 應用程式手動輸入代碼。 要驗證 TOTP 代碼,請使用 開始驗證 OTP ,然後使用 驗證 TOTP 驗證技術設定檔。

對於後續登錄,請使用 Get available devices 方法檢查使用者是否已註冊其設備。 如果可用設備的數量大於零,則表示使用者之前已註冊。 在這種情況下,使用者需要鍵入身份驗證器應用程式中顯示的TOTP代碼。

技術概況:

  • 不提供與使用者交互的介面。 相反,使用者介面是從自 斷言 的技術配置檔中調用的,具有 TOTP 顯示控件
  • 使用 Microsoft Entra 多重身份驗證服務驗證 TOTP 代碼。
  • 檢查使用者是否已註冊其設備。

以下螢幕截圖顯示了 TOTP 註冊和驗證流程。 它首先檢查可用設備的數量。 如果可用設備的數量為零,則使用者將完成註冊編排步驟。 否則,使用者將完成驗證編排步驟。

顯示TOTP流的螢幕截圖。

獲取可用設備

獲取可用裝置模式檢查使用者可用的設備數量。 如果可用設備的數量為零,則表示使用者尚未註冊。

輸入宣告

InputClaims 元素包含要發送到 Microsoft Entra 多重身份驗證的聲明清單。 您還可以將聲明的名稱映射到 MFA 技術設定檔中定義的名稱。

ClaimReferenceId 為必填項目 說明
userPrincipalName 是的 用戶主體名稱。

輸出宣告

output claims 元素包含要從 Microsoft Entra 多重身份驗證返回的聲明清單。 您還可以將聲明的名稱映射到 MFA 技術設定檔中定義的名稱。

ClaimReferenceId 為必填項目 說明
numberOfAvailableDevices 是的 使用者的可用設備數。

後設資料

Metadata 元素包含以下屬性。

屬性 為必填項目 說明
Operation 是的 必須是 GetAvailableDevices

範例:獲取可用設備

以下示例顯示了用於獲取可用設備數的 Microsoft Entra ID 多重身份驗證技術配置檔。

<TechnicalProfile Id="AzureMfa-GetAvailableDevices">
  <DisplayName>Get Available Devices</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AzureMfaProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="Operation">GetAvailableDevices</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="userPrincipalName" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="numberOfAvailableDevices" />
  </OutputClaims>
</TechnicalProfile>

開始驗證 TOTP

開始驗證 TOTP 將啟動驗證過程。 此驗證技術配置檔是從提供和驗證 TOTP 代碼的自斷言技術配置檔中調用的。 此驗證技術配置檔后必須調用 Verify TOTP 驗證技術配置檔。

輸入宣告

InputClaims 元素包含要發送到 Microsoft Entra 多重身份驗證的聲明清單。 您還可以將聲明的名稱映射到 MFA 技術設定檔中定義的名稱。

ClaimReferenceId 為必填項目 說明
userPrincipalName 是的 用戶主體名稱。
objectId 是的 用戶物件ID。
secretKey 是的 使用者的金鑰。 此金鑰儲存在 Azure AD B2C 目錄中的使用者設定檔中,並與驗證器應用共用。 身份驗證器應用程式使用金鑰生成 TOTP 代碼。 此技術配置檔使用金鑰來驗證 TOTP 代碼。

輸出宣告

Microsoft Entra 多重身份驗證協定提供者不返回任何輸出聲明,因此無需指定輸出聲明。

後設資料

Metadata 元素包含以下屬性。

屬性 為必填項目 說明
Operation 是的 必須是 BeginVerifyOTP

範例:開始驗證 TOTP

以下示例顯示了用於開始 TOTP 驗證過程的 Microsoft Entra ID 多重身份驗證技術配置檔。

<TechnicalProfile Id="AzureMfa-BeginVerifyOTP">
  <DisplayName>Begin verify TOTP"</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AzureMfaProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="Operation">BeginVerifyOTP</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="secretKey" />
    <InputClaim ClaimTypeReferenceId="objectId" />
    <InputClaim ClaimTypeReferenceId="userPrincipalName" />
  </InputClaims>
</TechnicalProfile>

驗證 TOTP

verify TOTP 方法驗證 TOTP 代碼。 此驗證技術配置檔是從提供和驗證 TOTP 代碼的自斷言技術配置檔中調用的。 此驗證技術配置檔之前必須調用 Begin 驗證 TOTP 驗證技術配置檔。

輸入宣告

InputClaims 元素包含要發送到 Microsoft Entra 多重身份驗證的聲明清單。 您還可以將聲明的名稱映射到 MFA 技術設定檔中定義的名稱。

ClaimReferenceId 為必填項目 說明
otpCode 是的 使用者提供的TOTP代碼。

輸出宣告

Microsoft Entra 多重身份驗證協定提供者不返回任何輸出聲明,因此無需指定輸出聲明。

後設資料

Metadata 元素包含以下屬性。

屬性 為必填項目 說明
Operation 是的 必須是 VerifyOTP

示例:驗證 TOTP

以下示例顯示了用於驗證 TOTP 代碼的 Microsoft Entra ID 多重身份驗證技術配置檔。

<TechnicalProfile Id="AzureMfa-VerifyOTP">
  <DisplayName>Verify OTP</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AzureMfaProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="Operation">VerifyOTP</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="otpCode" />
  </InputClaims>
</TechnicalProfile>

後續步驟