AD FS のトラブルシューティング - 要求規則の構文

要求とは、ある対象が自分自身または他の対象に対して行うステートメントのことです。 要求は証明書利用者によって発行され、要求に対して 1 つ以上の値が指定された後、AD FS サーバーによって発行されたセキュリティ トークンにパッケージ化されます。 この記事では、要求の構文と作成について説明します。 要求の発行の詳細については、「AD FS のトラブルシューティング - 要求の発行」を参照してください。

注意

要求の問題のトラブルシューティングを支援するために、AD FS ヘルプ サイトの ClaimsXRay を使用することができます。

要求規則の処理方法

要求規則は、要求エンジンを使用して要求パイプライン内で処理されます。 要求エンジンは、ユーザーによって提示される入力方向の要求のセットを調査し、各規則のロジックに応じて要求の出力セットを生成する、フェデレーション サービスの論理コンポーネントです。

要求規則の作成方法

要求規則は、フェデレーション サービス内のフェデレーションによる信頼関係ごとに作成され、複数の信頼間で共有されません。 規則は、要求規則テンプレートから作成することも、要求規則言語を使用して最初から作成することもできます。また、Windows PowerShell を使用して規則をカスタマイズすることもできます。

要求規則言語のコンポーネントを理解する

要求規則言語は、"=>" 演算子でそれぞれ区切られた次のコンポーネントから構成されます。

  • 条件: 入力要求をチェックして、規則の発行ステートメントを実行するかどうかを判断するために使用されます。 これは論理式を表し、規則の本文部分を実行するにはこの条件が true に評価される必要があります。

  • 発行ステートメント。

例:

c:[type == "Name", value == "domain user"] => issue(type = "Role", value = "employee");

この要求には次の内容があります。

  • 条件 - c:[type == "Name", value == "domain user"] - Windows アカウント名がドメイン ユーザーであるかどうかを示す入力要求を評価します。
  • 発行 - issue(type = "Role", value = "employee") 条件が true の場合は、従業員のロールを持つ入力要求に新しい要求を追加します。

要求と構文の詳細については、「要求規則言語の役割」を参照してください。

要求規則エディター

要求を完了して [OK] を選択すると、要求規則エディターによって構文チェックが実行されます。 そのため、構文が正しくない場合は、エディターによって通知されます。

カスタム要求規則の構文が無効であることを示すメッセージが表示された AD FS 管理ダイアログ ボックスのスクリーンショット。

イベント ログ

ログを使用して要求のトラブルシューティングを試みる場合、最も良い方法は、要求の出力を検索することです。 イベント ログで 1000 イベントと 1001 イベントを探します。

1000 というイベント ID の結果を示す [イベントのプロパティ] ダイアログ ボックスのスクリーンショット。

サンプル アプリケーションの作成

要求をエコーするサンプル アプリケーションを作成できます。 たとえば、サンプル アプリケーションを使用して、トラブルシューティングを試みようとしているのと同じ要求を持つ証明書利用者を作成し、その要求に関する問題がアプリにあるかどうかを確認できます。

ブラウザーに表示されたサンプル アプリケーションのスクリーンショット。

ここでは、優れたサンプル Web アプリを使用できます。 このアプリは、証明書利用者から受け取った要求をエコーバックします。 これを使用するには、web.config アプリを次の方法で編集する必要があります。

  • https://app1.contoso.com/sampapp を、サンプル アプリをホストするために使用する URL に変更する。
  • sts.contoso.com のすべてのインスタンスを、AD FS フェデレーション サーバーを指すように変更する。
  • 拇印を自分の拇印に置き換える。
  • decryptionKeyvalidationKey を実際のシナリオに適した値に置き換える。

Web 構成ファイルを示す Visual Studio のスクリーンショット。

次のブログ記事には、これを設定するための優れた詳細な手順があります。

次の手順