在 Azure AD B2C 自定義原則中定義 Microsoft Entra ID 多重要素驗證技術配置檔
Azure Active Directory B2C (Azure AD B2C) 支援使用驗證碼來驗證電話號碼,或驗證以時間為基礎的單次密碼 (TOTP) 代碼。
通訊協定
Protocol 元素的 Name 屬性必須設定為 Proprietary
。 處理程式屬性必須包含 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簡訊傳送驗證碼 ,並 驗證代碼。 下列螢幕快照顯示電話驗證程式流程。
傳送 SMS
若要驗證電話,第一個步驟會產生代碼,並將其傳送至電話號碼。 您可以針對此步驟設定下列選項。
輸入宣告
InputClaims 元素包含要傳送至 Microsoft Entra 多重要素驗證的宣告清單。 您也可以將宣告的名稱對應至 MFA 技術設定檔中定義的名稱。
ClaimReferenceId | 必要 | 描述: |
---|---|---|
userPrincipalName |
Yes | 擁有電話號碼之使用者的標識碼。 |
phoneNumber |
Yes | 要傳送簡訊碼的電話號碼。 |
companyName |
No | SMS 中的公司名稱。 如果未提供,則會使用應用程式的名稱。 |
locale |
No | SMS 的地區設定。 如果未提供,則會使用使用者的瀏覽器地區設定。 |
輸出宣告
Microsoft Entra 多重要素驗證通訊協定提供者不會傳回任何輸出宣告,因此不需要指定輸出宣告。
中繼資料
Metadata 元素包含下列屬性。
屬性 | 必要 | 描述: |
---|---|---|
Operation |
Yes | 必須是 OneWaySMS 。 |
UI 元素
下列元數據可用來設定傳送SMS失敗時所顯示的錯誤訊息。 元數據應該在自我判斷技術配置檔中設定。 錯誤訊息可以 當地語系化。
屬性 | 必要 | 描述 |
---|---|---|
UserMessageIfCouldntSendSms |
No | 如果提供的電話號碼不接受SMS,則使用者錯誤訊息。 |
UserMessageIfInvalidFormat |
No | 如果提供的電話號碼不是有效的電話號碼,則使用者錯誤訊息。 |
UserMessageIfServerError |
No | 如果伺服器發生內部錯誤,則使用者錯誤訊息。 |
UserMessageIfThrottled |
No | 如果要求已節流,使用者錯誤訊息。 |
範例:傳送簡訊
下列範例顯示 Microsoft Entra ID 多重要素驗證技術配置檔,用來透過 SMS 傳送程式代碼。
<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 |
Yes | 與先前用來傳送代碼的電話號碼相同。 它也可用來尋找電話驗證會話。 |
verificationCode |
Yes | 要驗證之使用者提供的驗證碼 |
輸出宣告
Microsoft Entra 多重要素驗證通訊協定提供者不會傳回任何輸出宣告,因此不需要指定輸出宣告。
中繼資料
Metadata 元素包含下列屬性。
屬性 | 必要 | 描述: |
---|---|---|
Operation |
Yes | 必須是 Verify 。 |
UI 元素
下列元數據可用來設定程式代碼驗證失敗時所顯示的錯誤訊息。 元數據應該在自我判斷技術配置檔中設定。 錯誤訊息可以 當地語系化。
屬性 | 必要 | 描述 |
---|---|---|
UserMessageIfMaxAllowedCodeRetryReached |
No | 如果使用者嘗試驗證碼太多次,則使用者錯誤訊息。 |
UserMessageIfServerError |
No | 如果伺服器發生內部錯誤,則使用者錯誤訊息。 |
UserMessageIfThrottled |
No | 如果要求已節流,則使用者錯誤訊息。 |
UserMessageIfWrongCodeEntered |
No | 輸入驗證的程式代碼錯誤時,使用者錯誤訊息。 |
範例:驗證程序代碼
下列範例顯示用來驗證程序代碼的 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 代碼、開啟深層連結,或使用驗證器應用程式手動輸入代碼。 若要驗證 TOTP 程式代碼,請使用 Begin verify OTP ,後面接著 驗證 TOTP 驗證技術配置檔。
如需後續登入,請使用 取得可用的裝置 方法來檢查使用者是否已註冊其裝置。 如果可用的裝置數目大於零,這表示使用者先前已註冊。 在此情況下,用戶必須輸入出現在驗證器應用程式中的 TOTP 程式代碼。
技術設定檔:
- 不提供與用戶互動的介面。 相反地,使用 TOTP 顯示控件,從自我判斷技術配置檔呼叫使用者介面。
- 使用 Microsoft Entra 多重要素驗證服務來驗證 TOTP 程式代碼。
- 檢查使用者是否已註冊其裝置。
下列螢幕快照顯示TOTP 註冊和驗證流程。 一開始會檢查可用的裝置數目。 如果可用的裝置數目為零,則用戶會經歷註冊協調流程步驟。 否則,用戶會經歷驗證協調流程步驟。
取得可用的裝置
取得可用的裝置模式會檢查使用者可用的裝置數目。 如果可用的裝置數目為零,這表示使用者尚未註冊。
輸入宣告
InputClaims 元素包含要傳送至 Microsoft Entra 多重要素驗證的宣告清單。 您也可以將宣告的名稱對應至 MFA 技術設定檔中定義的名稱。
ClaimReferenceId | 必要 | 描述: |
---|---|---|
userPrincipalName |
Yes | 用戶主體名稱。 |
輸出宣告
輸出宣告專案包含要從 Microsoft Entra 多重要素驗證傳回的宣告清單。 您也可以將宣告的名稱對應至 MFA 技術設定檔中定義的名稱。
ClaimReferenceId | 必要 | 描述: |
---|---|---|
numberOfAvailableDevices |
Yes | 使用者可用的裝置數目。 |
中繼資料
Metadata 元素包含下列屬性。
屬性 | 必要 | 描述: |
---|---|---|
Operation |
Yes | 必須是 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 代碼的自我判斷技術配置檔呼叫。 此驗證技術配置檔後面必須接著驗證 TOTP 驗證技術配置檔的呼叫。
輸入宣告
InputClaims 元素包含要傳送至 Microsoft Entra 多重要素驗證的宣告清單。 您也可以將宣告的名稱對應至 MFA 技術設定檔中定義的名稱。
ClaimReferenceId | 必要 | 描述: |
---|---|---|
userPrincipalName |
Yes | 使用者主體名稱。 |
objectId |
Yes | 使用者物件識別碼。 |
secretKey |
Yes | 使用者的秘密金鑰。 此金鑰會儲存在 Azure AD B2C 目錄中的使用者設定檔中,並與驗證器應用程式共用。 驗證器應用程式會使用秘密來產生 TOTP 程式碼。 此技術設定檔會使用秘密來驗證 TOTP 程式碼。 |
輸出宣告
Microsoft Entra 多重要素驗證通訊協定提供者不會傳回任何輸出宣告,因此不需要指定輸出宣告。
中繼資料
Metadata 元素包含下列屬性。
屬性 | 必要 | 描述: |
---|---|---|
Operation |
Yes | 必須是 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
驗證 TOTP 方法會驗證 TOTP 程式碼。 這個驗證技術設定檔是從呈現及驗證 TOTP 代碼的自我判斷技術設定檔呼叫。 此驗證技術設定檔之前,必須先呼叫 Begin 驗證 TOTP 驗證技術設定檔。
輸入宣告
InputClaims 元素包含要傳送至 Microsoft Entra 多重要素驗證的宣告清單。 您也可以將宣告的名稱對應至 MFA 技術設定檔中定義的名稱。
ClaimReferenceId | 必要 | 描述: |
---|---|---|
otpCode |
Yes | 使用者提供的 TOTP 程式碼。 |
輸出宣告
Microsoft Entra 多重要素驗證通訊協定提供者不會傳回任何輸出宣告,因此不需要指定輸出宣告。
中繼資料
Metadata 元素包含下列屬性。
屬性 | 必要 | 描述: |
---|---|---|
Operation |
Yes | 必須是 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>