在 Azure AD B2C 自定义策略中定义Microsoft Entra ID SSPR 技术配置文件

备注

在 Azure Active Directory B2C 中,自定义策略 主要用于解决复杂场景。 对于大多数场景,我们建议您使用内置的用户流。 如果未这样做,请通过 Active Directory B2C 中的自定义策略入门来了解自定义策略初学者包。

重要

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

Azure Active Directory B2C(Azure AD B2C)支持验证自助密码重置的电子邮件地址(SSPR)。 使用 Microsoft Entra ID SSPR 技术配置文件生成代码并将其发送到电子邮件地址,然后验证代码。 Microsoft Entra ID SSPR 技术配置文件也可能返回错误消息。 验证技术配置文件在用户旅程继续之前验证用户提供的数据。 使用验证技术配置文件,在自断言页面上显示一条错误消息。

此技术配置文件:

  • 不提供与用户交互的界面。 而是从 自断言 技术配置文件或 显示控件 作为 验证技术配置文件调用用户界面。
  • 使用 Microsoft Entra SSPR 服务生成代码并将其发送到电子邮件地址,然后验证代码。
  • 通过验证码验证电子邮件地址。

协议

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

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

以下示例显示了一个Microsoft Entra ID SSPR 技术配置文件:

<TechnicalProfile Id="AadSspr-SendCode">
  <DisplayName>Send Code</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AadSsprProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
    ...

发送电子邮件

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

输入声明

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

ClaimReferenceId 必选 DESCRIPTION
电子邮件地址 是的 拥有电子邮件地址的用户的标识符。 输入 PartnerClaimType 声明的属性必须设置为 emailAddress

InputClaimsTransformations 元素可能包含 InputClaimsTransformation 元素的集合,这些元素用于修改输入声明或生成新元素,然后再发送到 Microsoft Entra SSPR 服务。

输出声明

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

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

元数据

特征 必选 DESCRIPTION
操作 是的 必须是 SendCode

UI 元素

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

特征 必选 DESCRIPTION
UserMessageIfInternalError 如果服务器遇到内部错误,则用户错误消息。
UserMessageIfThrottled 如果请求受到限制,则用户错误消息。

示例:发送电子邮件

以下示例演示用于通过电子邮件发送代码的 Microsoft Entra ID SSPR 技术配置文件。

<TechnicalProfile Id="AadSspr-SendCode">
  <DisplayName>Send Code</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AadSsprProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="Operation">SendCode</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="email" PartnerClaimType="emailAddress"/>
  </InputClaims>
</TechnicalProfile>

验证验证码

此技术配置文件的第二种模式是验证代码。 可以为该模式配置以下选项。

输入声明

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

ClaimReferenceId 必选 DESCRIPTION
电子邮件地址 是的 与以前用于发送代码的电子邮件地址相同。 它还用于查找电子邮件验证会话。 输入 PartnerClaimType 声明的属性必须设置为 emailAddress
verificationCode 是的 要验证的用户提供的验证码。 输入 PartnerClaimType 声明的属性必须设置为 verificationCode

InputClaimsTransformations 元素可能包含 InputClaimsTransformation 元素的集合,这些元素用于在调用 Microsoft Entra SSPR 服务之前修改输入声明或生成新声明。

输出声明

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

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

元数据

特征 必选 DESCRIPTION
操作 是的 必须是 VerifyCode

UI 元素

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

特征 必选 DESCRIPTION
UserMessageIfChallengeExpired 如果代码验证会话已过期,则向用户显示的消息。 代码已过期,或者从未为给定标识符生成代码。
UserMessageIfInternalError 如果服务器遇到内部错误,则用户错误消息。
UserMessageIfThrottled 如果请求受到限制,则用户错误消息。
UserMessageIfVerificationFailedNoRetry 如果用户提供了无效代码,则向用户显示的消息,并且不允许用户提供正确的代码。
UserMessageIfVerificationFailedRetryAllowed 如果用户提供了无效代码,并且允许用户提供正确的代码,则向用户显示的消息。

示例:验证代码

以下示例演示用于验证代码的 Microsoft Entra ID SSPR 技术配置文件。

<TechnicalProfile Id="AadSspr-VerifyCode">
  <DisplayName>Verify Code</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AadSsprProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="Operation">VerifyCode</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="verificationCode" PartnerClaimType="verificationCode" />
    <InputClaim ClaimTypeReferenceId="email" PartnerClaimType="emailAddress"/>
  </InputClaims>
</TechnicalProfile>