次の方法で共有


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

重要

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

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

検証技術プロファイルは、Microsoft Entra IDREST API などの、あらゆるプロトコルの通常の技術プロファイルです。 検証技術プロファイルは、出力要求を返すか、次のデータを含む 4xx HTTP 状態コードを返します。 詳細については、エラー メッセージの返しを参照してください。

{
    "version": "1.0.0",
    "status": 409,
    "userMessage": "Your error message"
}

検証技術プロファイルの出力要求のスコープは、検証技術プロファイルとその検証 技術プロファイル を呼び出すセルフアサート技術プロファイルに制限されます。 次のオーケストレーション 手順で出力要求を使用する場合は、検証技術プロファイルを呼び出すセルフアサート技術プロファイルに出力要求を追加します。

検証技術プロファイルは、 ValidationTechnicalProfiles 要素に表示される順序で実行されます。 検証技術プロファイルでエラーが発生した場合、または成功した場合に後続の検証技術プロファイルの実行を続行するかどうかを検証技術プロファイルで構成できます。

検証技術プロファイルは、 ValidationTechnicalProfile 要素で定義されている前提条件に基づいて条件付きで実行できます。 たとえば、特定の要求が存在するかどうか、または要求が指定した値と等しいかどうかを確認できます。

セルフアサート技術プロファイルでは、その出力要求の一部またはすべてを検証するために使用する検証技術プロファイルを定義できます。 参照される技術プロファイルのすべての入力要求は、参照元の検証技術プロファイルの出力要求に表示される必要があります。

検証技術プロファイルを使用できるのは、セルフアサート技術プロファイルのみです。 セルフアサートされていない技術プロファイルからの出力要求を検証する必要がある場合は、検証を担当する技術プロファイルに対応するために、ユーザー体験で追加のオーケストレーション手順を使用することを検討してください。

検証技術プロファイル

ValidationTechnicalProfiles 要素には、次の要素が含まれています。

要素 発生回数 説明
検証技術プロファイル 1:n 参照元の技術プロファイルの出力要求の一部またはすべてを検証するために使用される技術プロファイル。

ValidationTechnicalProfile 要素には、次の属性が含まれています。

特性 必須 説明
ReferenceId イエス ポリシーまたは親ポリシーで既に定義されている技術プロファイルの識別子。
ContinueOnError (続行エラー) いいえ この検証技術プロファイルでエラーが発生した場合に、後続の検証技術プロファイルの検証を続行するかどうかを示します。 使用可能な値: true または false (既定では、追加の検証プロファイルの処理が停止し、エラーが返されます)。
コンティニュー・オン・サクセス いいえ この検証技術プロファイルが成功した場合に、後続の検証プロファイルの検証を続行するかどうかを示します。 指定できる値: true または false。 既定値は trueです。つまり、追加の検証プロファイルの処理が続行されます。

現在、ClaimsTransformation 型の検証技術プロファイルで ContinueOnError を false に設定した場合、技術プロファイルは設定を受け入れない。 この問題を解決するには、代わりに前提条件を使用します。

ValidationTechnicalProfile 要素には、次の要素が含まれています。

要素 発生回数 説明
前提 条件 0:1 検証技術プロファイルを実行するために満たす必要がある前提条件の一覧。

Precondition 要素には、次の属性が含まれています。

特性 必須 説明
Type イエス 前提条件に対して実行するチェックまたはクエリの種類。 指定した要求がユーザーの現在の要求セットに存在する場合にアクションを実行するように ClaimsExist を指定するか、指定した要求が存在し、その値が指定した値と等しい場合にアクションを実行する ClaimEquals を指定します。
ExecuteActionsIf イエス テストが true または false の場合に、前提条件のアクションを実行する必要があるかどうかを示します。

Precondition 要素には、次の要素が含まれています。

要素 発生回数 説明
価値 1:n チェックで使用されるデータ。 このチェックの型が ClaimsExist場合、このフィールドはクエリ対象の ClaimTypeReferenceId を指定します。 チェックの種類が ClaimEquals場合、このフィールドはクエリ対象の ClaimTypeReferenceId を指定します。 別の value 要素にチェックする値が含まれています。
アクション 1:1 オーケストレーション手順内の前提条件チェックが true の場合に実行する必要があるアクション。 Action の値は SkipThisValidationTechnicalProfile に設定されます。 関連付けられている検証技術プロファイルを実行しないことを指定します。

次の例では、これらの検証技術プロファイルを使用します。

  1. 最初の検証技術プロファイルでは、ユーザー資格情報がチェックされ、無効なユーザー名や無効なパスワードなどのエラーが発生しても続行されません。
  2. 次の検証技術プロファイルは、userType 要求が存在しない場合、または userType の値が Partner場合は実行されません。 検証技術プロファイルは、ユーザー プロファイルを内部顧客データベースから読み取り、REST API サービスが利用できない、内部エラーなどのエラーが発生した場合は続行しようとします。
  3. 最後の検証技術プロファイルは、userType 要求が存在しない場合、または userType の値が Customerされている場合は実行されません。 検証技術プロファイルは、内部パートナー データベースからユーザー プロファイルの読み取りを試み、REST API サービスが利用できない、内部エラーなどのエラーが発生した場合は続行されます。
<ValidationTechnicalProfiles>
  <ValidationTechnicalProfile ReferenceId="login-NonInteractive" ContinueOnError="false" />
  <ValidationTechnicalProfile ReferenceId="REST-ReadProfileFromCustomersDatabase" ContinueOnError="true" >
    <Preconditions>
      <Precondition Type="ClaimsExist" ExecuteActionsIf="false">
        <Value>userType</Value>
        <Action>SkipThisValidationTechnicalProfile</Action>
      </Precondition>
      <Precondition Type="ClaimEquals" ExecuteActionsIf="true">
        <Value>userType</Value>
        <Value>Partner</Value>
        <Action>SkipThisValidationTechnicalProfile</Action>
      </Precondition>
    </Preconditions>
  </ValidationTechnicalProfile>
  <ValidationTechnicalProfile ReferenceId="REST-ReadProfileFromPartnersDatabase" ContinueOnError="true" >
    <Preconditions>
      <Precondition Type="ClaimsExist" ExecuteActionsIf="false">
        <Value>userType</Value>
        <Action>SkipThisValidationTechnicalProfile</Action>
      </Precondition>
      <Precondition Type="ClaimEquals" ExecuteActionsIf="true">
        <Value>userType</Value>
        <Value>Customer</Value>
        <Action>SkipThisValidationTechnicalProfile</Action>
      </Precondition>
    </Preconditions>
  </ValidationTechnicalProfile>
</ValidationTechnicalProfiles>