変換クレーム ルールをいつ使うべきか

このルールは、Active Directory フェデレーション サービス (AD FS) 2.0 で受信クレームの種類を送信クレームの種類にマッピングし、その受信クレームで生成された値に基づいて、出力を決定するアクションを適用する場合に使用で きます。このルールを使用するときは、次の表に示すように、ルールで設定したいずれかのオプションに基づいて、該当するルール ロジックに適合するクレームをパス スルーまたは変換します。

ルール オプション ルール ロジック
すべての受信クレームをパス スルーする 受信クレームの種類が指定されたクレームの種類と等しく、値が任意の値と等しい場合は、出力クレームの種類を指定されたクレームの種類としてそのクレームをパス スルーする
送信クレーム値とはちがう受信クレーム値を置き換える 受信クレームの種類が指定されたクレームの種類に等しく、値が指定されたクレーム値に等しい場合は、新しい送信クレームの値を指定されたクレーム値、送信クレームの種類を指定されたクレームの種類としてクレームを変換する
受信メールの接尾を新しい受信メールの接尾と置き換える 受信クレームの種類が指定されたクレームの種類に等しく、値が任意のサフィックス値に等しい場合は、新しい送信クレームの値を指定されたサフィックス値、送信クレームの種類を指定されたクレームの種類としてクレームを変換する

以下のセクションでは、クレームルールの基本事項について説明します。また、いつこのルールを使用するかについても詳しく解説します。

クレーム ルールについて

クレーム ルールは、受信クレームを取得し、それに条件を適用し (x の場合はy を実行、という形式)、条件パラメーターに基づいて送信クレームを生成するというビジネス ロジックのインスタンスを表します。このトピックを読み進める前に、クレーム ルールについて、以下の重要事項を確認しておいてください。

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

クレームルールおよびクレーム ルール セットの詳細については、「クレーム ルールの役割」を参照してください。ルールの処理方法の詳細については、「クレーム エンジンの役割」 を参照してください。クレームルール セットの処理方法の詳細については、「クレーム パイプラインの役割」を参照してください。

Pass through all claim values

このアクションを使用すると、まず、指定した受信クレームの種類に対応するすべての受信クレーム値が、指定された送信クレームの種類にマップされます。次にそれらのクレーム値が送信クレームとして、フェデレーション サービスで署名されるトークンに送信されます。

たとえば、Pass through all claim values オプションロジックを含むルールが設定され、受信クレームの種類Group と送信クレームの種類 Role が指定されている場合、発行者から受け取ったすべての受信クレーム値がそれぞれ新しい送信クレームにコピーされ、クレームの種類は Role となります。

クレームを変換する

AD FS 2.0 では、クレーム変換と いう用語は、任意の受信クレーム値を別の送信クレーム値に置き換えることを意味します。この機能は、Transform an Incoming Claim ルールによって可能になっています。このルールのプロパティ内で、指定された受信クレームの種類に基づいて到着値を別の送信クレーム値に変換するための条 件を設定できます。

たとえば、次の図に示すように、受信した値を別の送信クレーム値に置き換えるための条件を含むルールが設定されている場 合は、受信クレームの種類Group がすべて新しい送信クレームの種類 Role にマップされます。この場合、受信クレーム値 Purchaser が新しい送信クレーム値 Admin に置き換えられます。

このルールを使用して、指定された電子メールのサフィックス値を含むすべての受信クレームを新しい値に置き換える条件を適用することもできます。たとえば、 sales.corp.fabrikam.com のサフィックスを含むすべてのクレーム値を fabrikam.com に変更するように、このルールに条件を設定できます。

クレーム プロバイダーの信頼でこのルールを構成する

クレーム プロバイダーの信頼を使用する場合は、クレーム プロバイダーからの受信クレームが信頼できる受信クレームに変換されるように、このルールを構成できます。クレームの種類またはクレーム値は、クレーム プロバイダー組織と自組織とで意味が異なる場合があります。このルールを使用すると、クレーム プロバイダーから送信されるクレームの種類とクレーム値を正規化して、送信クレームに相当するものを証明書利用者が理解できるようにすることができます。

証明書利用者の信頼でこのルールを構成する

証明書利用者の信頼を使用する場合は、クレームを特定の証明書利用者向けに変換するように、このルールを構成できます。クレームの種類またはクレーム値は、 対象となる証明書利用者によって別の意味を持つことがあるため、このルールを使用して、送信クレームの種類と値を単一の証明書利用者向けに変更できます。

このルールの作成方法

このルールを作成するには、クレーム ルール言語を使用するか、またはAD FS 2.0 管理スナップインの[Transform an Incoming Claim] ルールテンプレートを使用します。このルール テンプレートには、以下の構成オプションがあります。

  • クレーム ルール名を指定する
  • 特定の受信クレームの型を別な送信クレームの型に変換する
  • すべてのクレーム値をパス スルーする
  • 受信クレーム値を別な送信クレーム値に置き換える
  • 受信メールの接尾クレームを新しいメールの接尾に置き換える

このテンプレートを作成する方法については、「AD FS 2.0 展開ガイド」の「受信クレームを変換するためのルールを作成する」(英語) を参照してください。

クレーム ルール言語を使用する

送信クレームを複数の受信クレームのコンテンツから作成する必要がある場合は、カスタム ルールを使用する必要があります。受信クレームの値を基礎にして送信クレームのクレーム値を作成し、コンテンツを追加する必要がある場合は、そのコンテキ ストでカスタムルールを使用することも必要です。詳細については、「カスタム ルールを使用する場合」(英語) を 参照してください。

変換ルール構文の構築例

クレーム ルール言語の構文を使用してクレームを変換する場合は、変換されるクレームのプロパティを新しいリテラル値に設定できます。たとえば、次のルールは、ク レームの種類は維持したまま、役割クレームの値を Administrators から root に変更します。

c:[type == “https://schemas.microsoft.com/ws/2008/06/identity/claims/role”, value == “Administrators”] => issue(type = c.type, value = “root”);

クレーム変換に正規表現を使用することもできます。たとえば、次のルールは、DOMAIN\USER 形式のWindows ユーザー名クレームのドメインをFABRIKAM に設定します。

c:[type == "https://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"] => issue(type = c.type, value = regexreplace(c.value, "(?<domain>[^\\]+)\\(?<user>.+)", "FABRIKAM\${user}"));

カスタム ルールを作成するためのベスト プラクティス

クレーム変換は、基本的なフィルター処理機能を使用して選択したクレームだけに適用することができます。フィルター処理に使用する各クレーム プロパティには、次の注意事項を条件として値を代入できます。

クレーム プロパティ 説明
Type、Value、ValueType これらのプロパティは、代入で最もよく使用されます。少なくとも変換後のクレームの種類と値を指定する必要があります。
Issuer ク レーム ルール言語ではクレームの Issuer (発行者) を設定できますが、これは一般的にお勧めしません。クレームの Issuer は、トークンではシリアル化されません。トークンを受け取ると、すべてのクレームの Issuer プロパティは、トークンに署名したフェデレーション サーバーの識別子に設定されます。このため、ルールでクレームの Issuer を設定しても、トークンのコンテンツには影響せず、クレームをトークンにパッケージ化した時点で設定は失われます。クレームの Issuer の設定が意味を持つ唯一のシナリオは、クレームの Issuer がクレーム プロバイダーのルール セットで特定の値に設定され、証明書利用者のルール セットがこの特定の値を参照するルールを使用して作成されている場合です。Issuer プロパティの値がクレーム ルールで明示的に設定されていない場合、クレーム発行エンジンは、その値を "LOCAL AUTHORITY" に設定します。
OriginalIssuer Issuer と同様に、OriginalIssuer には一般的に値が明示的に代入されません。Issuer とは異なり、OriginalIssuer プロパティはトークン内でシリアル化されます。ただし、プロパティに値が設定されている場合、トークン コンシューマーは、クレームを最初に発行したフェデレーション サーバーの識別子がそのプロパティに設定されていると想定します。
Properties 前のセクションで示したように、クレームのプロパティ バッグはトークン内で永続化されないため、Properties への代入は、プロパティに格納された情報を後続のローカル ポリシーが参照する場合にのみ実行される必要があります。

クレームルール言語の詳細については、「クレーム ルール言語の役割」を参照してください。