在 Azure AD B2C 自定义策略中定义 Azure AD MFA 技术配置文件

备注

在 Azure Active Directory B2C 中,自定义策略主要用于解决复杂的情况。 在大多数情况下,建议你使用内置用户流

Azure Active Directory B2C (Azure AD B2C) 使用 Azure AD 多重身份验证 (MFA) 为验证电话号码提供支持。 使用此技术配置文件生成代码并将其发送到一定的手机号,然后验证该代码。 Azure AD MFA 技术配置文件也可能返回错误消息。 在用户旅程继续执行之前,验证技术配置文件将验证用户提供的数据。 使用验证技术配置文件时,将在自断言页面上显示错误消息。

此技术配置文件:

  • 不提供与用户交互的接口, 而是从自断言技术配置文件或充当验证技术配置文件显示控件中调用用户界面。
  • 使用 Azure AD MFA 服务生成代码并将其发送到某个手机号,然后验证该代码。
  • 通过文本消息验证电话号码。

备注

此功能目前以公共预览版提供。

协议

“Protocol”元素的“Name”属性必须设置为 Proprietary。 handler 属性必须包含 Azure AD B2C 使用的协议处理程序程序集的完全限定名称 :

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

以下示例演示了 Azure AD MFA 技术配置文件:

<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" />
    ...

发送短信

此技术配置文件的第一种模式是生成并发送代码。 可以为该模式配置以下选项。

输入声明

InputClaims 元素包含要发送到 Azure AD MFA 的声明的列表。 还可将声明名称映射到 MFA 技术配置文件中定义的名称。

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

InputClaimsTransformations 元素可能包含一系列 InputClaimsTransformation 元素,后者用于修改输入声明,或者生成新的输入声明并将其发送到 Azure AD MFA 服务。

输出声明

Azure AD MFA 协议提供程序未返回任何 OutputClaims,因此无需指定输出声明。 但是,只要设置了 DefaultValue 属性,就可以包含 Azure AD MFA 标识提供者不会返回的声明。

OutputClaimsTransformations 元素可能包含用于修改输出声明或生成新输出声明的 OutputClaimsTransformation 元素集合。

元数据

Attribute 必选 说明
Operation 必须是 OneWaySMS 。

UI 元素

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

Attribute 必选 说明
UserMessageIfCouldntSendSms 提供的电话号码不可接收短信时显示的用户错误消息。
UserMessageIfInvalidFormat 提供的电话号码不是有效电话号码时显示的用户错误消息。
UserMessageIfServerError 服务器遇到内部错误时显示的用户错误消息。
UserMessageIfThrottled 请求被限制时显示的用户错误消息。

示例:发送短信

以下示例显示了一个用于通过短信发送代码的 Azure AD MFA 技术配置文件。

<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 元素包含要发送到 Azure AD MFA 的声明的列表。 还可将声明名称映射到 MFA 技术配置文件中定义的名称。

ClaimReferenceId 必选 说明
phoneNumber 与之前用于发送代码的手机号相同。 它也用来定位电话验证会话。
verificationCode 待验证用户提供的验证码

InputClaimsTransformations 元素可能包含一系列 InputClaimsTransformation 元素,后者用于修改输入声明,或者生成新的输入声明并调用 Azure AD MFA 服务。

输出声明

Azure AD MFA 协议提供程序未返回任何 OutputClaims,因此无需指定输出声明。 但是,只要设置了 DefaultValue 属性,就可以包含 Azure AD MFA 标识提供者不会返回的声明。

OutputClaimsTransformations 元素可能包含用于修改输出声明或生成新输出声明的 OutputClaimsTransformation 元素集合。

元数据

Attribute 必选 说明
Operation 必须是“验证”

UI 元素

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

Attribute 必选 说明
UserMessageIfMaxAllowedCodeRetryReached 用户多次尝试提交某验证码时显示的用户错误消息。
UserMessageIfServerError 服务器遇到内部错误时显示的用户错误消息。
UserMessageIfThrottled 请求受限制时显示的用户错误消息。
UserMessageIfWrongCodeEntered 输入的验证码错误时显示的用户错误消息。

示例:验证代码

以下示例显示了用来验证代码的 Azure AD MFA 技术配置文件。

<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>