次の方法で共有


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

Note

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

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

Protocol

Protocol 要素の Name 属性は Proprietary に設定する必要があります。 ハンドラー属性には、CAPTCHA 用に Azure AD B2C によって使用されるプロトコル ハンドラー アセンブリの完全修飾名が含まれている必要があります。Web.TPEngine.Providers.CaptchaProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null

Note

この機能はパブリック プレビュー段階です

次の例は、電子メールのサインアップ用のセルフ アサート技術プロファイルを示しています。

<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 必須 説明
challengeType いいえ CAPTCHA チャレンジの種類、オーディオまたはビジュアル (既定)。
azureregion はい CAPTCHA チャレンジ要求を処理するサービス リージョン。

表示要求

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

ClaimReferenceId 必須 説明
challengeString はい CAPTCHA チャレンジ コード。

出力クレーム

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

ClaimReferenceId 必須 説明
challengeId はい CAPTCHA チャレンジ コードの一意識別子。
challengeString はい CAPTCHA チャレンジ コード。
azureregion はい CAPTCHA チャレンジ要求を処理するサービス リージョン。

Metadata

属性 必須 説明
Operation はい 値は 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 必須 説明
challengeType いいえ CAPTCHA チャレンジの種類、オーディオまたはビジュアル (既定)。
challengeId はい セッション検証に使用される CAPTCHA の一意識別子。 GetChallenge 呼び出しから設定されます。
captchaEntered はい ユーザー インターフェイスのチャレンジ テキスト ボックスにユーザーが入力するチャレンジ コード。
azureregion はい CAPTCHA チャレンジ要求を処理するサービス リージョン。 GetChallenge 呼び出しから設定されます。

表示要求

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

ClaimReferenceId 必須 説明
captchaEntered はい ユーザーが入力した CAPTCHA チャレンジ コード。

出力クレーム

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

ClaimReferenceId 必須 説明
challengeId はい セッション検証に使用される CAPTCHA の一意識別子。
isCaptchaSolved はい CAPTCHA チャレンジが正常に解決されたかどうかを示すフラグ。
reason はい チャレンジの解決が成功したかどうかをユーザーに伝えるために使用されます。

Metadata

属性 必須 説明
Operation はい 値は 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>

次のステップ