ID 委任が必要になるシナリオ
ID 委任はどのような場合に必要になるか
ID 委任は Active Directory フェデレーション サービス (AD FS) の機能の 1 つです。これを使用すれば、管理者が指定したアカウントでユーザーの権限を借用できます。 ユーザーの権限を借用するアカウントを、代理人と呼びます。 この委任機能は、元の要求の承認チェーン内にある各アプリケーション、データベース、またはサービスに対して、一連のアクセス制御チェックを順次行う必要がある、多くの分散アプリケーションにおいて非常に重要です。 実際のシナリオとして多いのは、"フロント エンド" の Web アプリケーションが、より安全な "バック エンド" (Microsoft SQL Server データベースに接続された Web サービスなど) からデータを取得する必要があるケースです。
たとえば、既存の部品注文用 Web サイトをプログラムによって拡張し、パートナー組織が自社の購入履歴やアカウントの状態を確認できるようにするケースもあるでしょう。 セキュリティ上の理由から、パートナーの財務データはすべて、専用の SQL (構造化照会言語) サーバー上にある安全なデータベースに格納されます。 この場合、フロント エンド アプリケーションのコードでは、パートナー組織の財務データを一切把握できません。 そのため、部品データベース用の Web サービス (バック エンド) をホストしている、ネットワーク上の別のコンピューターからデータを取得する必要があります。
このデータ取得プロセスを完了するには、次の図に示すように、Web アプリケーションと部品データベース用 Web サービスの間で、一連の認証 "ハンドシェイク" を実行する必要があります。
元の要求は Web サーバー自体に対して送られますが、この種の Web サーバーは通常、アクセスしようとしているユーザーの組織とはまったく別の組織に存在するため、要求と共に送信されるセキュリティ トークンでは、Web サーバーの承認条件しか満たすことができず、それ以外のコンピューターにアクセスできません。 そのため、発信元のユーザーの要求に応えるには、リソース パートナー組織に中間フェデレーション サーバーを配置して、適切なアクセス特権を持ったセキュリティ トークンを再発行できるようにする必要があります。
ID 委任のしくみ
多層アプリケーション アーキテクチャ内の Web アプリケーションは多くの場合、共通のデータや機能にアクセスするために、Web サービスを呼び出します。 ここで重要になるのは、これらの Web サービスが発信元ユーザーの ID を把握できるようにして、承認の判断や監査をそのサービスから行えるようにすることです。 この場合、フロント エンドの Web アプリケーションは Web サービスに対し、ユーザーを代理人として表します。 AD FS では、Active Directory アカウントが別の証明書利用者から見てユーザーとして動作できるようにすることで、このシナリオが実現されます。 次の図は、ID 委任のシナリオを説明したものです。
Frank が、別の組織内の Web アプリケーションから、部品注文履歴にアクセスしようとします。 彼のクライアント コンピューターは、部品注文用のフロント エンド Web アプリケーションにアクセスするためのトークンを AD FS に要求し、受け取ります。
クライアント コンピューターは、手順 1 で取得したトークンと共に、Web アプリケーションへ要求を送信し、クライアントの ID を証明します。
Web アプリケーションは、クライアントのトランザクションを完了するために、Web サービスと通信する必要があります。 Web アプリケーションは AD FS とコンタクトして、Web サービスとやりとりするための委任トークンを取得します。 委任トークンとは、ユーザーとして動作する代理人に発行されるセキュリティ トークンです。 AD FS からは、Web サービスに対するクライアントの信頼性情報と共に、委任トークンが返されます。
Web アプリケーションでは、手順 3 で AD FS から取得したトークンを使用して、クライアントとして動作している Web サービスにアクセスします。 委任トークンを調べることで、Web サービスは Web アプリケーションがクライアントとして動作していることを確認できます。 Web サービスは承認ポリシーを実行し、要求をログに記録して、もともと Frank が要求した部品履歴データを、Web アプリケーション経由で Frank に提供します。
AD FS では、特定の委任について、Web アプリケーションが委任トークンを要求できる Web サービスを制限できます。 クライアント コンピューターは、Active Directory アカウントを持っていなくてもこの操作を完了できます。 前述のように、Web サービスはユーザーとして動作している代理人の ID を簡単に確認できます。 そのため Web サービスは、クライアント コンピューターと直接やりとりしているのか、それとも代理人を通じてやりとりしているのかによって、異なる動作を実行することができます。
ID 委任を使用するための AD FS の構成
AD FS 管理スナップインを使用すれば、データの取得プロセスが必要になったときに、AD FS を ID 委任用に構成できます。 構成が完了すると、AD FS では保護されたデータへのアクセスを提供する前に、バックエンド サービスから要求される承認コンテキストを含んだ、新しいセキュリティ トークンを生成できるようになります。
AD FS では、権限を借用できるユーザーは制限されません。 AD FS を ID 委任用に構成したら、次のことが実行されます。
ユーザー権限を借用するためのトークンを要求する権限を、どのサーバーに委任できるかを決定する。
委任されるクライアント アカウントの ID コンテキストと、代理人として動作するサーバーの両方を確立し、個別に保持する。
ID 委任は、AD FS 管理スナップインで証明書利用者の信頼に委任承認規則を追加することによって構成できます。 この方法の詳細については、「 Checklist: Creating Claim Rules for a Relying Party Trust」を参照してください。
ID 委任を使用するためのフロント エンド Web アプリケーションの構成
開発者が Web フロント エンド アプリケーションやサービスを適切にプログラムして、委任要求を AD FS コンピューターにリダイレクトするための方法には、いくつかのオプションがあります。 Web アプリケーションをカスタマイズして ID 委任と連携させる方法の詳細については、「Windows Identity Foundation SDK」を参照してください。