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

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

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

协议

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

TOTP 模式

在此模式下,用户必须在他们拥有的设备上安装支持基于时间的一次性密码 (TOTP) 验证的验证器应用,例如 Microsoft Authenticator 应用

在首次注册或登录期间,用户扫描 QR 码,打开一个深层链接,或使用验证器应用手动输入代码。 若要验证 TOTP 代码,请使用开始验证 OTP,然后使用验证 TOTP 验证技术配置文件。

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

技术配置文件:

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

以下屏幕截图显示了 TOTP 注册和验证流。 该流首先检查可用设备数。 如果可用设备数为零,则用户需要完成注册业务流程步骤。 否则,用户需要完成验证业务流程步骤。

Screenshot showing TOTP flow.

获取可用设备数

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

输入声明

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

ClaimReferenceId 必选 说明
userPrincipalName 用户主体名称。

输出声明

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

ClaimReferenceId 必选 说明
numberOfAvailableDevices 用户的可用设备数。

Metadata

Metadata 元素包含以下属性。

Attribute 必须 说明
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 必选 说明
userPrincipalName 用户主体名称。
objectId 用户对象 ID。
secretKey 用户的机密密钥。 此密钥存储在 Azure AD B2C 目录中的用户配置文件内,并与验证器应用共享。 验证器应用使用该机密生成 TOTP 代码。 此技术配置文件使用该机密来验证 TOTP 代码。

输出声明

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

Metadata

Metadata 元素包含以下属性。

Attribute 必须 说明
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 必选 说明
otpCode 用户提供的 TOTP 代码。

输出声明

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

Metadata

Metadata 元素包含以下属性。

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

后续步骤