パス スルーまたはフィルター クレーム ルールをいつ使うべきか
このルールは、Active Directory フェデレーション サービス (AD FS) 2.0 で受信クレームの種類を取得してから、その受信クレームの値に基づいて、出力を決定するアクションを適用する場合に使用できます。このルールを使用するときは、ルールで設定したいずれかのオプションに基づいて、次の表に示すルール ロジックに適合するクレームをパス スルーまたはフィルター処理します。
ルール オプション | ルール ロジック |
すべてのクレーム値をパス スルーする | 受信クレームの種類が指定されたクレームの種類と等しく、値が任意の値と等しい場合は、そのクレームをパス スルーする |
特定のクレーム値のみをパス スルーする | 受信クレームの種類が指定されたクレームの種類と等しく、値が指定されたクレーム値と等しい場合は、そのクレームをパス スルーする |
特定の接尾をもつメール アドレスのクレーム値をパス スルーする | 受信クレームの種類が指定されたクレームの種類と等しく、値が指定されたサフィックス値と等しい場合は、そのクレームをパス スルーする |
特定の値から始まるクレーム値のみをパス スルーする | 受信クレームの種類が指定されたクレームの種類と等しく、値が指定されたクレーム値で始まる場合は、そのクレームをパス スルーする |
以下のセクションでは、クレーム ルールの基本事項について説明します。また、いつこのルールを使用するかについても詳しく解説します。
クレーム ルールについて
クレーム ルールは、受信クレームを取得し、それに条件を適用し (x の場合は y を実行、という形式)、条件パラメーターに基づいて送信クレームを生成するというビジネス ロジックのインスタンスを表します。このトピックを読み進める前に、クレーム ルールについて、以下の重要事項を確認しておいてください。
AD FS 2.0 管理スナップインでクレーム ルールを作成するには、クレーム ルール テンプレートを使用する必要があります。
クレーム ルールは、クレーム プロバイダー (Active Directory または別のフェデレーション サービスなど) から直接送信された受信クレームを処理するか、クレーム プロバイダーの信頼に関する受け入れ変換ルールの出力から得られる受信クレームを処理します。
クレーム ルールは、1 つのルール セット内で古い順に、クレーム発行エンジンによって処理されます。ルールに優先順位を設定することで、指定されたルール セット内で先行するルールによって生成されたクレームをさらに絞り込んだり、フィルター処理することができます。
クレーム ルール テンプレートでは、常に受信クレームの種類を指定する必要があります。ただし、クレームの種類が同じ複数のクレーム値は 1 つのルールで処理できます。
クレーム ルールおよびクレーム ルール セットの詳細については、「クレーム ルールの役割」を参照してください。ルールの処理方法の詳細については、「クレーム エンジンの役割」 を参照してください。クレーム ルール セットの処理方法の詳細については、「クレーム パイプラインの役割」を参照してください。
すべてのクレーム値をパス スルーする
このアクションを使用すると、指定されたクレームの種類のすべての受信クレーム値が送信クレームとしてパス スルーされます。たとえば、受信クレームの種類が Role と指定されている場合、すべての受信クレーム値は、新しい送信クレームに個別にコピーされ、送信クレームの種類は Role となります。
クレームをフィルター処理する
AD FS 2.0 では、クレームのフィルター処理という用語は、特定の値のみが送信クレームとしてパス スルーまたは送信されるように、受信クレーム値をフィルター処理または制限することを意味します。この機能は、Pass Through or Filter an Incoming Claim ルール テンプレートで実行できます。このルールのプロパティ内では、指定された基準を満たす値のみがパス スルーされるように、受信した値をフィルター処理するための条件を設定できます。
たとえば、このルールを使用して、受信クレームの種類が Role で、クレーム値が Purchaser のクレームのみをパス スルーできます。または、ユーザーの名前に関するクレームのみを発行する場合、ユーザーの社会保障番号を含むクレームを発行しないように指定することができます。
このルールにフィルター条件を使用すると、ルールによって設定された条件に一致するクレームを見つけるために、すべての受信クレームがチェックされます。一致しないクレームはすべて無視され、選択されたクレームの種類と一致する指定されたクレーム値のみがパス スルーされます。
たとえば、次の図に示すように、クレームの種類が UPN であり、かつ @fabrikam.com で終わる受信クレームのみをフィルター処理する条件がルールに設定されている場合、この条件を満たさない他のすべての受信クレームは無視されます。クレームの種類が E-Mail Address の受信クレームは、クレーム値が @fabrikam.com で終わる場合も無視されます。この例では、Nick@fabrikam.com の値を含むクレームのみが証明書利用者に送信されます。
クレーム プロバイダーの信頼でこのルールを構成する
クレーム プロバイダーの信頼を使用する場合は、特定の制約と一致するクレーム プロバイダーからの受信クレームのみがパス スルーされるように、このルールを構成できます。たとえば、クレーム プロバイダーからの電子メール クレームのみを受け入れたい場合に、このルール テンプレートを使用して、プロバイダーのドメイン ネーム システム (DNS) 名で終了する種類の電子メール クレームを受け入れるルールを構成します。
証明書利用者の信頼でこのルールを構成する
証明書利用者の信頼を使用する場合は、証明書利用者に送信する送信クレームをパス スルーまたはフィルター処理するように、このルールを構成できます。一部の証明書利用者が特定のクレームの種類を理解できない場合があります。また、特定のクレームに、特定の証明書利用者に送信してはならない機密情報が含まれる場合もあります。このルール テンプレートを使用すると、特定の証明書利用者の信頼に対してこれらのポリシーを適用できます。
このルールの作成方法
このルールを作成するには、クレーム ルール言語を使用するか、または AD FS 2.0 管理スナップインの Pass Through or Filter an Incoming Claim ルール テンプレートを使用します。このルール テンプレートには、以下の構成オプションがあります。
クレーム ルール名を指定する
受信クレームの種類を指定する
すべてのクレーム値をパス スルーする
特定のクレーム値のみをパス スルーする
特定の接尾をもつメール アドレスのクレーム値をパス スルーする
特定の値から始まるクレーム値のみをパス スルーする
このテンプレートを作成する方法については、「AD FS 2.0 展開ガイド」の「受信クレームをパス スルーまたはフィルター処理するためのルールを作成する」(英語) を参照してください。
クレーム ルール言語を使用する
クレーム値がカスタム パターンと一致する場合にのみクレームを送信するようにする場合は、カスタム ルールを使用する必要があります。詳細については、「カスタム ルールを使用する場合」(英語) を参照してください。
パス スルー構文またはフィルター処理ルール構文の構築例
単純なフィルター処理ルールは、前述したプロパティの 1 つに基づいて、クレームをフィルター処理します。たとえば、次のルールは、すべての電子メール クレームをパス スルーします。
c:[type == “https://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress”] => issue(claim = c);
各フィルターは論理 AND 演算子で結合することができます。たとえば、次のルールは、値が johndoe@fabrikam.com であるすべての電子メール クレームを受け入れます。
c:[type == “https://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress”, value == “johndoe@fabrikam.com “] => issue(claim = c);
上の例では、フィルターには必ず等価演算子が使用されています。クレーム ルール言語は、以下の演算子をサポートします。
== - 等しい (大文字と小文字を区別する)
!= - 等しくない (大文字と小文字を区別する)
=~- 正規表現による一致
!~ - 正規表現による不一致
たとえば、次のルールは、サフィックスが boeing.com であり、ローカル フェデレーション サーバー以外によって発行されたすべての電子メール クレームを受け入れます。
c:[type == “https://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress”, value =~ “^.*@boeing\.com$” , issuer != “LOCAL AUTHORITY”] => issue(claim = c);
カスタム ルールを作成するためのベスト プラクティス
次の表に示すように、1 つのフィルターを各クレームの 1 つまたは複数のプロパティに適用できます。
クレーム プロパティ | 説明 |
Type | クレームの種類 (通常は URI として表される) は、どのような種類の情報がクレームによって伝達されるかに関するフェデレーション内のパートナー間の暗黙的な同意を表しています。たとえば、種類が https://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress のクレームには、ユーザーの電子メール アドレスが含まれます。 |
Value | クレームの値を表します。たとえば、種類が https://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress のクレームは、johndoe@fabrikam.com などの値を含みます。 |
ValueType | ValueType は、クレームの値に含まれる情報の解釈方法を表します。通常、ValueType は http://www.w3.org/2001/XMLSchema#string に設定されますが、クレーム値には、Base64Binary エンコード データ (イメージなど)、日付、ブール値などを含めることができます。 |
Issuer | Issuer (発行者) は、ユーザーに関するクレームを最後に発行したパーティを表します。クレームがクレーム プロバイダーのフェデレーション サーバーで取得される場合、すべてのクレームの発行者は "LOCAL AUTHORITY" に設定されます。フェデレーション プロバイダーのフェデレーション サーバーがクレームを受け取った場合、クレームの発行者は、トークンに署名したクレーム プロバイダーのクレーム プロバイダー ID に設定されます。したがって、クレーム プロバイダーから受け取ったクレームに対してルールが適用されると、すべてのクレームの発行者は同じ値に設定されます。証明書利用者のルールを記述する際には、Issuer プロパティを使用して、さまざまなクレーム プロバイダーから送信されるクレームを区別できます。 |
OriginalIssuer | このクレーム プロパティは、クレームを最初に発行したフェデレーション サーバーを示します。クレームの Issuer プロパティには、トークンに署名した最後のフェデレーション サーバーが設定されるため、クレームが複数のフェデレーション サーバーを通過するシナリオでは、OriginalIssuer プロパティが役立ちます (たとえば、フェデレーション プロバイダーのフェデレーション サーバーからトークンを取得する証明書利用者は、ユーザーを認証したクレーム プロバイダーのフェデレーション サーバーを特定できます)。 |
Properties | 前述した 5 つのプロパティのほかに、各クレームには、名前付きのプロパティを格納できるプロパティ バッグも含まれます。これらのプロパティは、トークンではシリアル化されず、1 つのフェデレーション サーバーのスコープ内にあるクレーム発行パイプラインのコンポーネント間で情報を渡す場合にのみ機能します。たとえば、クレーム プロバイダーのルールの処理中にプロパティを設定し、証明書利用者のルールでそのプロパティを参照します。 |