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

Azure Active Directory B2C (Azure AD B2C) 使用验证码帮助验证电话号码。

协议

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

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

Screenshot showing TOTP flow

发送短信

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

输入声明

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

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

输出声明

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

Metadata

Metadata 元素包含以下属性。

Attribute 必须 说明
Operation 必须是 OneWaySMS
UI 元素

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

Attribute 必须 说明
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 必选 说明
phoneNumber 与之前用于发送代码的手机号相同。 它也用来定位电话验证会话。
verificationCode 待验证用户提供的验证码

输出声明

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

Metadata

Metadata 元素包含以下属性。

Attribute 必须 说明
Operation 必须是 Verify
UI 元素

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

Attribute 必须 说明
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>

后续步骤