次の方法で共有


カスタム要求規則を使用する場合

要求規則言語を使用して、Active Directory フェデレーション サービス (AD FS) でカスタム要求規則を記述します。これは、要求の生成、変換、パススルー、フィルター処理をプログラムで行うために要求発行エンジンが使用するフレームワークです。 カスタム ルールを使用すると、標準ルール テンプレートよりも複雑なロジックを使用してルールを作成できます。 次の場合は、カスタムルールの使用を検討してください。

  • 構造化クエリ言語 (SQL) 属性ストアから抽出された値に基づいて要求を送信します。

  • カスタム LDAP フィルターを使用して、ライトウェイト ディレクトリ アクセス プロトコル (LDAP) 属性ストアから抽出された値に基づいて要求を送信します。

  • カスタム属性ストアから抽出された値に基づいて要求を送信します。

  • 2 つ以上の受信要求が存在する場合にのみ要求を送信します。

  • 受信要求の値が複雑なパターンと一致する場合にのみ要求を送信します。

  • 受信要求値に複雑な変更を加えた要求を送信します。

  • 実際に要求を送信せずに、後の規則でのみ使用する要求を作成します。

  • 複数の受信要求の内容から送信要求を作成します。

送信要求の要求値が受信要求の値に基づいている必要があるが、追加のコンテンツも含める必要がある場合は、カスタム規則を使用することもできます。

要求規則の言語はルール ベースです。 条件部分と実行部分があります。 要求規則の言語構文を使用して、組織のニーズに合わせて要求を列挙、追加、削除、または変更できます。 これらの各部分の動作の詳細については、「 要求規則言語の役割」を参照してください。

次のセクションでは、要求規則の基本的な概要について説明します。 また、カスタム要求規則を使用するタイミングに関する詳細も提供します。

要求規則について

要求規則は、受信要求を受け取り、条件を適用し (x、y の場合)、条件パラメーターに基づいて送信要求を生成するビジネス ロジックのインスタンスを表します。

重要

  • AD FS 管理スナップインでは、要求規則は要求規則テンプレートを使用してのみ作成できます
  • 要求規則は、要求プロバイダー (Active Directory や別のフェデレーション サービスなど) から直接、または要求プロバイダー信頼に対する受け入れ変換規則の出力から受信要求を処理します。
  • 要求規則は、特定の規則セット内の時系列の順序で要求発行エンジンによって処理されます。 ルールに優先順位を設定することで、特定のルール セット内の以前のルールによって生成された要求をさらに絞り込んだりフィルター処理したりできます。
  • 要求規則テンプレートでは、常に受信要求の種類を指定する必要があります。 ただし、1 つの規則を使用して、同じ要求の種類を持つ複数の要求値を処理できます。

要求規則と要求規則セットの詳細については、「#B0 要求規則の役割 #A1」を参照してください。 ルールの処理方法の詳細については、「#B0 要求エンジン #A1 の役割」を参照してください。 要求規則セットの処理方法の詳細については、「要求パイプラインの役割」を参照してください。

このルールを作成する方法

この規則を作成するには、最初に要求規則言語を使用して操作に必要な構文を作成し、その結果を、AD FS 管理スナップインの要求プロバイダー信頼または証明書利用者信頼のプロパティのカスタム規則テンプレートを使用して要求を送信するテンプレートで提供されるテキスト ボックスに貼り付けます。

このルール テンプレートには、次のオプションがあります。

  • 要求規則名を指定する

  • AD FS 要求規則言語を使用して、1 つ以上のオプションの条件と発行ステートメントを入力します

このテンプレートを使用してカスタム 規則を作成する方法の詳細については、「AD FS 展開ガイド」の「 カスタム 規則を使用して要求を送信する規則を作成 する」を参照してください。

要求規則の言語のしくみを理解するには、その規則のプロパティの [ルール言語の表示] タブをクリックして、スナップインに既に存在する他の規則の要求 規則言語 構文を表示します。 このセクションの情報とこのタブの構文情報を使用すると、独自のカスタム ルールを構築する方法に関する洞察を得ることができます。

要求規則言語の使用方法の詳細については、「要求規則 言語の役割」を参照してください。

要求規則言語の使用

例: ユーザーの名前属性値に基づいて姓と名を結合する方法

次の規則構文は、特定の属性ストアの属性値の姓と名を組み合わせたものです。 ポリシー エンジンは、各条件の一致のデカルト積を形成します。 たとえば、名 {"Frank"、"Alan"}、姓 {"Miller"、"Shen"} の出力は {"Frank Miller"、"Frank Shen"、"Alan Miller"、"Alan Shen"} です。

c1:[type == "http://exampleschema/firstname" ]
&&  c2:[type == "http://exampleschema/lastname",]
=> issue(type = "http://exampleschema/name", value = c1.value + "  " + c2.value);

例: ユーザーが直属の部下を持っているかどうかに基づいてマネージャー要求を発行する方法

次の規則は、ユーザーが直属の部下を持っている場合にのみ、マネージャー要求を発行します。

c:[type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"] => add(store = "SQL Store", types = ("http://schemas.xmlsoap.org/claims/Reports"), query = "SELECT Reports FROM dbo.DirectReports WHERE UserName = {0}", param = c.value );
count([type == "http://schemas.xmlsoap.org/claims/Reports"] ) > 0 => issue(= "http://schemas.xmlsoap.org/claims/ismanager", value = "true");

例: LDAP 属性に基づいて PPID 要求を発行する方法

次の規則では、LDAP 属性ストア内のユーザーの windowsaccountname 属性と originalissuer 属性に基づいて、プライベート個人識別子 (PPID) 要求を発行します。

c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"]
 => issue(store = "_OpaqueIdStore", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/privatepersonalidentifier"), query = "{0};{1};{2}", param = "ppid", param = c.Value, param = c.OriginalIssuer);

このクエリのユーザーを一意に識別するために使用できる一般的な属性は次のとおりです。

  • ユーザー SID

  • windowsaccountname

  • samaccountname