你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在 Azure Active Directory B2C 自定义策略中定义 CAPTCHA 技术配置文件
注意
在 Azure Active Directory B2C 中,自定义策略主要用于解决复杂的情况。 在大多数情况下,建议你使用内置用户流。 如果尚未这样做,请从 Active Directory B2C 中的自定义策略入门了解自定义策略新手包。
一个完全自动化的公共图灵测试,用于告知计算机和人类分离(CAPTCHA)技术配置文件使 Azure Active Directory B2C(Azure AD B2C)能够防止自动攻击。 Azure AD B2C 的 CAPTCHA 技术配置文件支持音频和视频 CAPTCHA 质询类型。
协议
“Protocol”元素的“Name”属性必须设置为 Proprietary
。 处理程序属性必须包含 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 | 必选 | 说明 |
---|---|---|
challengeType | 否 | CAPTCHA 质询类型、音频或视觉对象(默认值)。 |
azureregion | 是 | 为 CAPTCHA 质询请求提供服务的服务区域。 |
显示声明
DisplayClaims 元素包含要在屏幕上显示的声明列表,供用户查看。 例如,用户会显示要读取的 CAPTCHA 质询代码。
ClaimReferenceId | 必选 | 说明 |
---|---|---|
challengeString | 是 | CAPTCHA 质询代码。 |
输出声明
OutputClaims 元素包含 CAPTCHA 技术配置文件返回的声明列表。
ClaimReferenceId | 必选 | 说明 |
---|---|---|
challengeId | 是 | CAPTCHA 质询代码的唯一标识符。 |
challengeString | 是 | CAPTCHA 质询代码。 |
azureregion | 是 | 为 CAPTCHA 质询请求提供服务的服务区域。 |
元数据
Attribute | 必须 | 说明 |
---|---|---|
操作 | 是 | 值必须是 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 | 必选 | 说明 |
---|---|---|
challengeType | 否 | CAPTCHA 质询类型、音频或视觉对象(默认值)。 |
challengeId | 是 | 用于会话验证的 CAPTCHA 的唯一标识符。 从 GetChallenge 调用填充。 |
captchaEntered | 是 | 用户输入到用户界面上质询文本框的挑战代码。 |
azureregion | 是 | 为 CAPTCHA 质询请求提供服务的服务区域。 从 GetChallenge 调用填充。 |
显示声明
DisplayClaims 元素包含要在屏幕上显示的声明列表,用于从用户收集输入。
ClaimReferenceId | 必选 | 说明 |
---|---|---|
captchaEntered | 是 | 用户输入的 CAPTCHA 质询代码。 |
输出声明
OutputClaims 元素包含 captcha 技术配置文件返回的声明列表。
ClaimReferenceId | 必选 | 说明 |
---|---|---|
challengeId | 是 | 用于会话验证的 CAPTCHA 的唯一标识符。 |
isCaptchaSolved | 是 | 指示是否已成功解决 CAPTCHA 质询的标志。 |
reason | 是 | 用于与用户通信,无论尝试解决挑战是否成功。 |
元数据
Attribute | 必须 | 说明 |
---|---|---|
操作 | 是 | 值必须是 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>
后续步骤
- 在 Azure Active Directory B2C 中启用 CAPTCHA。