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