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

在 Azure Active Directory B2C 自定义策略中定义 CAPTCHA 技术配置文件

重要

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

注释

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

一个完全自动化的公共图灵测试,用于告知计算机和人类分离(CAPTCHA)技术配置文件使 Azure Active Directory B2C(Azure AD B2C)能够防止自动攻击。 Azure AD B2C 的 CAPTCHA 技术配置文件支持音频和视频 CAPTCHA 质询类型。

协议

“Protocol”元素的“Name”属性必须设置为 处理程序属性必须包含 Azure AD B2C 用于 CAPTCHA 的协议处理程序程序集的完全限定名称:Web.TPEngine.Providers.CaptchaProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

注释

此功能以公共预览版提供

以下示例演示电子邮件注册的自断言技术配置文件:

<TechnicalProfile Id="HIP-GetChallenge">
  <DisplayName>Email signup</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.CaptchaProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />

CAPTCHA 技术配置文件作

CAPTCHA 技术配置文件作有两个作:

  • 获取质询作 将生成 CAPTCHA 代码字符串,然后使用 CAPTCHA 显示控件在用户界面上显示它。 显示包括输入文本框。 此作将指示用户输入他们在输入文本框中看到或听到的字符。 用户可以根据需要在视觉和音频质询类型之间进行切换。

  • 验证代码作 验证用户输入的字符。

获取挑战

第一个作生成 CAPTCHA 代码字符串,然后将其显示在用户界面上。

输入声明

InputClaims 元素包含要发送到 Azure AD B2C CAPTCHA 服务的声明列表。

ClaimReferenceId 必选 DESCRIPTION
挑战类型 CAPTCHA 质询类型、音频或视觉对象(默认值)。
Azure区域 是的 为 CAPTCHA 质询请求提供服务的服务区域。

显示声明

DisplayClaims 元素包含要在屏幕上显示的声明列表,供用户查看。 例如,用户会显示要读取的 CAPTCHA 质询代码。

ClaimReferenceId 必选 DESCRIPTION
challengeString 是的 CAPTCHA 质询代码。

输出声明

OutputClaims 元素包含 CAPTCHA 技术配置文件返回的声明列表。

ClaimReferenceId 必选 DESCRIPTION
challengeId 是的 CAPTCHA 质询代码的唯一标识符。
challengeString 是的 CAPTCHA 质询代码。
Azure区域 是的 为 CAPTCHA 质询请求提供服务的服务区域。

元数据

特征 必选 DESCRIPTION
操作 是的 值必须是 GetChallenge
品牌 是的 值必须是 HIP

示例:生成 CAPTCHA 代码

以下示例显示了用于生成代码的 CAPTCHA 技术配置文件:

<TechnicalProfile Id="HIP-GetChallenge">
  <DisplayName>GetChallenge</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.CaptchaProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />

  <Metadata>
    <Item Key="Operation">GetChallenge</Item>
    <Item Key="Brand">HIP</Item>
  </Metadata>

  <InputClaims>
    <InputClaim ClaimTypeReferenceId="challengeType" />
  </InputClaims>

  <DisplayClaims>
    <DisplayClaim ClaimTypeReferenceId="challengeString" />
  </DisplayClaims>

  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="challengeId" />
    <OutputClaim ClaimTypeReferenceId="challengeString" PartnerClaimType="ChallengeString" />
    <OutputClaim ClaimTypeReferenceId="azureregion" />
  </OutputClaims>

</TechnicalProfile>

验证质询

第二个作验证 CAPTCHA 质询。

输入声明

InputClaims 元素包含要发送到 Azure AD B2C CAPTCHA 服务的声明列表。

ClaimReferenceId 必选 DESCRIPTION
挑战类型 CAPTCHA 质询类型、音频或视觉对象(默认值)。
challengeId 是的 用于会话验证的 CAPTCHA 的唯一标识符。 从 GetChallenge 调用填充。
captcha已输入 是的 用户输入到用户界面上质询文本框的挑战代码。
Azure区域 是的 为 CAPTCHA 质询请求提供服务的服务区域。 从 GetChallenge 调用填充。

显示声明

DisplayClaims 元素包含要在屏幕上显示的声明列表,用于从用户收集输入。

ClaimReferenceId 必选 DESCRIPTION
captcha已输入 是的 用户输入的 CAPTCHA 质询代码。

输出声明

OutputClaims 元素包含 captcha 技术配置文件返回的声明列表。

ClaimReferenceId 必选 DESCRIPTION
challengeId 是的 用于会话验证的 CAPTCHA 的唯一标识符。
isCaptchaSolved 是的 指示是否已成功解决 CAPTCHA 质询的标志。
原因 是的 用于与用户通信,无论尝试解决挑战是否成功。

元数据

特征 必选 DESCRIPTION
操作 是的 值必须是 VerifyChallenge
品牌 是的 值必须是 HIP

示例:验证 CAPTCHA 代码

以下示例演示了用于验证 CAPTCHA 代码的 CAPTCHA 技术配置文件:

  <TechnicalProfile Id="HIP-VerifyChallenge">
    <DisplayName>Verify Code</DisplayName>
    <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.CaptchaProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
    <Metadata>
      <Item Key="Brand">HIP</Item>
      <Item Key="Operation">VerifyChallenge</Item>
    </Metadata>

    <InputClaims>
      <InputClaim ClaimTypeReferenceId="challengeType" DefaultValue="Visual" />
      <InputClaim ClaimTypeReferenceId="challengeId" />
      <InputClaim ClaimTypeReferenceId="captchaEntered" PartnerClaimType="inputSolution" Required="true" />
      <InputClaim ClaimTypeReferenceId="azureregion" />
    </InputClaims>

    <DisplayClaims>
      <DisplayClaim ClaimTypeReferenceId="captchaEntered" />
    </DisplayClaims>

    <OutputClaims>
      <OutputClaim ClaimTypeReferenceId="challengeId" />
      <OutputClaim ClaimTypeReferenceId="isCaptchaSolved" PartnerClaimType="solved" />
      <OutputClaim ClaimTypeReferenceId="reason" PartnerClaimType="reason" />
    </OutputClaims>

  </TechnicalProfile>

后续步骤