次の方法で共有


Azure Active Directory B2C カスタム ポリシーで CAPTCHA 技術プロファイルを定義する

重要

2025 年 5 月 1 日より、Azure AD B2C は新規のお客様向けに購入できなくなります。 詳細については、FAQ を参照してください

Azure Active Directory B2C で、カスタム ポリシーは、主に、複雑なシナリオに取り組む用途向けに設計されています。 ほとんどのシナリオで、組み込みユーザー フローを使用することをお勧めします。 まだ行っていない場合は、Active Directory B2C でのカスタム ポリシーの概要に関する記事で、カスタム ポリシー スターター パックの詳細を確認してください。

コンピューターとヒューマン アパート (CAPTCHA) の技術プロファイルを伝える完全に自動化されたパブリック チューリング テストを使用すると、Azure Active Directory B2C (Azure AD B2C) が自動攻撃を防ぐことができます。 Azure AD B2C の CAPTCHA 技術プロファイルでは、オーディオとビジュアルの両方の CAPTCHA チャレンジの種類がサポートされています。

プロトコル

Protocol 要素の Name 属性は Proprietary に設定する必要があります。 ハンドラー属性には、CAPTCHA 用に Azure AD B2C によって使用されるプロトコル ハンドラー アセンブリの完全修飾名が含まれている必要があります。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 技術プロファイル操作には、次の 2 つの操作があります。

  • チャレンジ操作を取得 すると CAPTCHA コード文字列が生成され、 CAPTCHA 表示コントロールを使用してユーザー インターフェイスに表示されます。 表示には、入力テキスト ボックスが含まれています。 この操作により、ユーザーが表示または読み上げる文字を入力テキスト ボックスに入力するように指示されます。 ユーザーは、必要に応じてビジュアルチャレンジタイプとオーディオチャレンジタイプを切り替えることができます。

  • コード操作 で、ユーザーが入力した文字が検証されていることを確認します。

チャレンジを取得する

最初の操作では CAPTCHA コード文字列が生成され、ユーザー インターフェイスに表示されます。

入力クレーム

InputClaims 要素には、Azure AD B2C の CAPTCHA サービスに送信する要求の一覧が含まれています。

ClaimReferenceId (クレーム参照ID) 必須 説明
課題タイプ いいえ CAPTCHA チャレンジの種類、オーディオまたはビジュアル (既定)。
Azureリージョン イエス CAPTCHA チャレンジ要求を処理するサービス リージョン。

表示要求

DisplayClaims 要素には、ユーザーが表示する画面に表示される要求の一覧が含まれています。 たとえば、読み取る CAPTCHA チャレンジ コードがユーザーに表示されます。

ClaimReferenceId (クレーム参照ID) 必須 説明
チャレンジ文字列 イエス CAPTCHA チャレンジ コード。

出力クレーム

OutputClaims 要素には、CAPTCHA 技術プロファイルによって返される要求の一覧が含まれています。

ClaimReferenceId (クレーム参照ID) 必須 説明
チャレンジID イエス CAPTCHA チャレンジ コードの一意識別子。
チャレンジ文字列 イエス CAPTCHA チャレンジ コード。
Azureリージョン イエス CAPTCHA チャレンジ要求を処理するサービス リージョン。

メタデータ

特性 必須 説明
オペレーション イエス 値は 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>

チャレンジを確認する

2 番目の操作は CAPTCHA チャレンジを検証します。

入力クレーム

InputClaims 要素には、Azure AD B2C の CAPTCHA サービスに送信する要求の一覧が含まれています。

ClaimReferenceId (クレーム参照ID) 必須 説明
課題タイプ いいえ CAPTCHA チャレンジの種類、オーディオまたはビジュアル (既定)。
チャレンジID イエス セッション検証に使用される CAPTCHA の一意識別子。 GetChallenge 呼び出しから設定されます。
captchaEntered(キャプチャ入力済み) イエス ユーザー インターフェイスのチャレンジ テキスト ボックスにユーザーが入力するチャレンジ コード。
Azureリージョン イエス CAPTCHA チャレンジ要求を処理するサービス リージョン。 GetChallenge 呼び出しから設定されます。

表示要求

DisplayClaims 要素には、ユーザーからの入力を収集するために画面に表示される要求の一覧が含まれています。

ClaimReferenceId (クレーム参照ID) 必須 説明
captchaEntered(キャプチャ入力済み) イエス ユーザーが入力した CAPTCHA チャレンジ コード。

出力クレーム

OutputClaims 要素には、captcha 技術プロファイルによって返される要求の一覧が含まれています。

ClaimReferenceId (クレーム参照ID) 必須 説明
チャレンジID イエス セッション検証に使用される CAPTCHA の一意識別子。
isCaptchaSolved(英語) イエス CAPTCHA チャレンジが正常に解決されたかどうかを示すフラグ。
理由 イエス チャレンジの解決が成功したかどうかをユーザーに伝えるために使用されます。

メタデータ

特性 必須 説明
オペレーション イエス 値は 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>

次のステップ