你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure AD B2C 自定义策略中定义Microsoft Entra ID 多重身份验证技术配置文件

重要

自 2025 年 5 月 1 日起,Azure AD B2C 将不再可供新客户购买。 在我们的常见问题解答中了解详细信息

Azure Active Directory B2C(Azure AD B2C)支持使用验证码或验证基于时间的一次性密码(TOTP)代码来验证电话号码。

协议

“Protocol”元素的“Name”属性必须设置为 处理程序属性必须包含 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 多重身份验证服务生成代码并将其发送到电话号码,然后验证代码。
  • 通过短信验证电话号码。

技术配置文件提供通过短信 发送验证码 的方法,并 验证代码。 以下屏幕截图显示了电话验证程序流。

显示 TOTP 流的屏幕截图

发送短信

若要验证电话,第一步将生成代码并将其发送到电话号码。 可以为此步骤配置以下选项。

输入声明

InputClaims 元素包含要发送到 Microsoft Entra 多重身份验证的声明列表。 还可以将声明的名称映射到 MFA 技术配置文件中定义的名称。

ClaimReferenceId 必选 DESCRIPTION
userPrincipalName 是的 拥有电话号码的用户的标识符。
phoneNumber 是的 要向其发送短信代码的电话号码。
companyName SMS 中的公司名称。 如果未提供,则使用应用程序的名称。
locale 短信的区域设置。 如果未提供,则使用用户的浏览器区域设置。

输出声明

Microsoft Entra 多重身份验证协议提供程序不返回任何输出声明,因此无需指定输出声明。

元数据

Metadata 元素包含以下属性。

特征 必选 DESCRIPTION
Operation 是的 必须是 OneWaySMS
UI 元素

以下元数据可用于配置发送短信失败时显示的错误消息。 应在 自断言 技术配置文件中配置元数据。 可以将错误消息本地化

特征 必选 DESCRIPTION
UserMessageIfCouldntSendSms 如果提供的电话号码不接受短信,则用户错误消息。
UserMessageIfInvalidFormat 如果提供的电话号码不是有效的电话号码,则用户错误消息。
UserMessageIfServerError 如果服务器遇到内部错误,则用户错误消息。
UserMessageIfThrottled 如果请求受到限制,则用户错误消息。

示例:发送短信

以下示例演示用于通过短信发送代码的 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 必选 DESCRIPTION
phoneNumber 是的 与以前用于发送代码的电话号码相同。 它还用于查找电话验证会话。
verificationCode 是的 要验证的用户提供的验证码

输出声明

Microsoft Entra 多重身份验证协议提供程序不返回任何输出声明,因此无需指定输出声明。

元数据

Metadata 元素包含以下属性。

特征 必选 DESCRIPTION
Operation 是的 必须是 Verify
UI 元素

以下元数据可用于配置代码验证失败时显示的错误消息。 应在 自断言 技术配置文件中配置元数据。 可以将错误消息本地化

特征 必选 DESCRIPTION
UserMessageIfMaxAllowedCodeRetryReached 如果用户尝试验证码的次数过多,则用户错误消息。
UserMessageIfServerError 如果服务器遇到内部错误,则用户错误消息。
UserMessageIfThrottled 如果请求受到限制,则用户错误消息。
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 码、打开深层链接,或使用验证器应用手动输入代码。 若要验证 TOTP 代码,请使用 “开始验证 OTP ”,然后 验证 TOTP 验证技术配置文件。

对于后续登录,请使用 “获取可用设备” 方法检查用户是否已注册其设备。 如果可用设备数大于零,则表示用户之前已注册。 在这种情况下,用户需要键入在验证器应用中显示的 TOTP 代码。

技术配置文件:

  • 不提供与用户交互的界面。 而是使用 TOTP 显示控件自断言技术配置文件调用用户界面。
  • 使用 Microsoft Entra 多重身份验证服务验证 TOTP 代码。
  • 检查用户是否已注册其设备。

以下屏幕截图显示了 TOTP 注册和验证流。 它首先检查可用设备的数量。 如果可用设备数为零,则用户将经历注册业务流程步骤。 否则,用户将经历验证业务流程步骤。

显示 TOTP 流的屏幕截图。

获取可用设备

获取可用的设备模式检查用户可用的设备数。 如果可用设备数为零,则表示用户尚未注册。

输入声明

InputClaims 元素包含要发送到 Microsoft Entra 多重身份验证的声明列表。 还可以将声明的名称映射到 MFA 技术配置文件中定义的名称。

ClaimReferenceId 必选 DESCRIPTION
userPrincipalName 是的 用户主体名称。

输出声明

输出声明元素包含从 Microsoft entra 多重身份验证返回的声明列表。 还可以将声明的名称映射到 MFA 技术配置文件中定义的名称。

ClaimReferenceId 必选 DESCRIPTION
numberOfAvailableDevices 是的 用户可用的设备数。

元数据

Metadata 元素包含以下属性。

特征 必选 DESCRIPTION
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 代码的自断言技术配置文件调用的。 必须调用 验证 TOTP 验证技术配置文件来验证此验证技术配置文件。

输入声明

InputClaims 元素包含要发送到 Microsoft Entra 多重身份验证的声明列表。 还可以将声明的名称映射到 MFA 技术配置文件中定义的名称。

ClaimReferenceId 必选 DESCRIPTION
userPrincipalName 是的 用户主体名称。
objectId 是的 用户对象 ID。
secretKey 是的 用户的密钥。 此密钥存储在 Azure AD B2C 目录中的用户配置文件中,并与验证器应用共享。 验证器应用使用机密生成 TOTP 代码。 此技术配置文件使用机密来验证 TOTP 代码。

输出声明

Microsoft Entra 多重身份验证协议提供程序不返回任何输出声明,因此无需指定输出声明。

元数据

Metadata 元素包含以下属性。

特征 必选 DESCRIPTION
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

验证 TOTP 方法验证 TOTP 代码。 此验证技术配置文件是从提供和验证 TOTP 代码的自断言技术配置文件调用的。 此验证技术配置文件必须在调用 “开始”验证 TOTP 验证技术配置文件之前。

输入声明

InputClaims 元素包含要发送到 Microsoft Entra 多重身份验证的声明列表。 还可以将声明的名称映射到 MFA 技术配置文件中定义的名称。

ClaimReferenceId 必选 DESCRIPTION
otpCode 是的 用户提供的 TOTP 代码。

输出声明

Microsoft Entra 多重身份验证协议提供程序不返回任何输出声明,因此无需指定输出声明。

元数据

Metadata 元素包含以下属性。

特征 必选 DESCRIPTION
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>

后续步骤