Windows Identity Foundation の概要
Windows® Identity Foundation (WIF) は ID 対応のアプリケーションを構築するためのフレームワークです。 このフレームワークは、WS-Trust プロトコルと WS-Federation プロトコルを抽象化し、セキュリティ トークン サービスと要求に対応したアプリケーションを構築するための API を開発者に提供します。 アプリケーションでは、WIF を使用して、セキュリティ トークン サービスから発行されたトークンを処理し、Web アプリケーションまたは Web サービスで ID ベースの決定を下すことができます。
WIF の主要な機能は次のとおりです。
要求に対応するアプリケーション (証明書利用者アプリケーション) の構築。開発者は WIF を使用して、要求に対応するアプリケーションを効率よく作成できます。 新しい要求モデルだけでなく、要求に基づいたユーザー アクセスの決定に役立つ豊富な API セットがアプリケーション開発者に提供されます。また、アプリケーションの構築に ASP.NET 環境と WCF 環境のどちらを選択しても、WIF では一貫した操作性でプログラムを記述できます。 詳細については、「要求の利用者: 証明書利用者アプリケーション」を参照してください。
Visual Studio テンプレート。 WIF には、要求に対応する ASP.NET Web サイトおよび WCF Web サービス アプリケーション用の組み込みの Visual Studio テンプレートが用意されているため、要求ベースのプログラミング モデルを短期間で習得することができます。 詳細については、「Visual Studio テンプレート」を参照してください。
要求に対応するアプリケーションと STS の間の信頼の容易な確立。 WIF には、FedUtil という名前のユーティリティが用意されています。これを使用すると、要求に対応するアプリケーションと STS (Active Directory フェデレーション サービス 2.0、LiveID STS など) との間で信頼を簡単に確立できます。 FedUtil は、ASP.NET と WCF の両方のアプリケーションをサポートします。 また、Visual Studio に統合されるため、ソリューション エクスプローラーでプロジェクトを右クリックし、[STS 参照の追加] メニュー項目をクリックして呼び出すか、または Visual Studio の [ツール] メニューから呼び出すことができます。 詳細については、「FedUtil: RP から STS への信頼を確立するためのフェデレーション ユーティリティ」を参照してください。
ASP.NET コントロール。ASP.NET コントロールを使用すると、要求に対応する Web アプリケーションを構築するための ASP.NET ページの開発を簡略化できます。 詳細については、「FederatedPassiveSignIn コントロールを使用した ASP.NET 証明書利用者アプリケーションから STS への信頼の確立」を参照してください。
要求と NT トークンとの間の変換。 WIF には、 という名前の Windows サービスが用意されています。これは、要求に対応するアプリケーションと NT トークン ベースのアプリケーションとの間のブリッジとして機能します。 このサービスを使用すると、要求を NT トークン ID に簡単に変換し、要求に対応するアプリケーションから、NT トークン ベースの ID が必要なリソースにアクセスできます。 詳細については、「Claims to Windows Token Service (c2WTS) の概要」を参照してください。
要求に対応するアプリケーションの ID 委任のサポートの構築。 WIF には、複数のサービスの境界を越えて元の要求元の ID を保持する機能が用意されています。 この機能は、フレームワークの "ActAs" 機能または "OnBehalfOf" 機能を使用することで有効にできます。開発者は、この機能を使用して、ID 委任のサポートを要求に対応するアプリケーションに追加することができます。 詳細については、「IIdentity および IPrincipal との統合」および「ID 委任のシナリオ」を参照してください。
カスタム セキュリティ トークン サービス (STS) の構築。 WIF では、WS-Trust プロトコルをサポートするカスタム セキュリティ トークン サービス (STS) を非常に簡単に構築できます。 これらの STS は、"アクティブ STS" とも呼ばれます。
また、フレームワークでは、Web ブラウザー クライアントを有効にする WS-Federation をサポートする STS の構築もサポートしています。 これらの STS は、"パッシブ STS" とも呼ばれます。
フレームワークには、ASP.NET STS および WCF STS を構築するための組み込みの Visual Studio テンプレートが用意されています。テンプレートから作成されるのは単純な STS ですが、開発者はこれらの STS を拡張することによって、各自の要件を満たした運用 STS を実装できます。 詳細については、「ASP.NET STS を構築する方法」および「WCF STS を構築する方法」を参照してください。
WIF がサポートする主要なシナリオを次に示します。
フェデレーション。WIF では、複数のパートナー間にフェデレーションを構築できます。 要求に対応するアプリケーション (RP) およびカスタム セキュリティ トークン サービス (STS) を構築するために用意されている機能を使用して、このシナリオを実現できます。 詳細については、「フェデレーションのシナリオ」を参照してください。
ID の委任。 WIF では、サービスの境界を越えて ID を保持できるため、ID 委任のシナリオを簡単に実現できます。 詳細については、「ID 委任のシナリオ」を参照してください。
ステップアップ認証。 同じアプリケーション内でも、認証の要件がリソースによって異なる場合があります。 WIF では、認証要件を段階的に厳しくするようなアプリケーションを構築できます (最初はユーザー名とパスワード認証でログインし、次にスマート カード認証にステップアップするなど)。 詳細については、「ステップアップ認証のシナリオ」を参照してください。
このトピックで取り上げる要求ベースのID モデルは、WIF を使用することによって簡単に活用することができます。 このトピックでは、Windows® Identity Foundation (WIF) が備える新しい要求処理の機能を大まかに説明します。 詳細については、Windows Identity Foundation の開発者向けホワイト ペーパーを参照してください。
Thread.CurrentPrincipal を介した要求へのアクセス
RP アプリケーションから現在のユーザーの一連の要求にアクセスするには、Thread.CurrentPrincipal
を使用します。
次のコード サンプルは、このメソッドを使用して IClaimsIdentity を取得する方法を示しています。
IClaimsIdentity claimsIdentity = ((IClaimsPrincipal)Thread.CurrentPrincipal).Identities[0];
詳細については、「ASP.NET ページで要求にアクセスする方法」を参照してください。
要求の種類としての役割
RP アプリケーションを構成する際には、要求の種類としての役割を決める必要があります。 この要求の種類は IsInRole で使用されます。 既定の要求の種類は https://schemas.microsoft.com/ws/2008/06/identity/claims/role
です。
Windows Identity Foundation が各種のトークンから抽出する要求
WIF は、さまざまな認証メカニズムの組み合わせを標準でサポートしています。 WIF がさまざまなトークンの種類から抽出する要求の一覧を次の表に示します。
トークンの種類 |
生成される要求 |
Windows アクセス トークンへのマッピング |
SAML 1.1 |
|
"SAML 1.1" にリストされている要求 ( |
SAML 2.0 |
"SAML 1.1" と同じ。 |
"Windows アカウントにマッピングされた SAML 1.1" と同じ。 |
X509 |
|
|
UPN |
|
|
Windows (Kerberos または NTLM) |
|
|
RSA キー ペア |
|
認証の種類 |
"AuthenticationMethod" 要求で出力される URI |
Password |
|
Kerberos |
|
SecureRemotePassword |
|
TLSClient |
|
X509 |
|
PGP |
|
Spki |
|
XmlDSig |
|
Unspecified |
|