Claims to Windows Token Service (c2WTS) の概要
は、SAML トークンや X.509 トークンなどの非 Windows セキュリティ トークンから UPN 要求を抽出し、偽装レベルの Windows セキュリティ トークンを生成する、Windows® Identity Foundation (WIF) の機能です。 この機能により、証明書利用者 (RP) アプリケーションはユーザーを偽装できます。 この機能は、RP アプリケーションを実行しているコンピューターの外部にある、SQL Server などのバックエンド リソースにアクセスする場合に必要になることがあります。
は、WIF の一部としてインストールされる Windows サービスです。 ただし、セキュリティ上の理由から、 を動作させるにはユーザー自身の操作が必要です。 手動で起動し、ローカル システム アカウントで実行する必要があります。 さらに、管理者は許可する呼び出し元の一覧を に手動で構成する必要があります。 既定では、この一覧は空です。 詳細については、「c2WTS からトークンを要求する方法」を参照してください。WIF は IPC を使用して を呼び出します。ただし、 はネットワーク ポートを開きません。
RP アプリケーションがローカル システム アカウントで実行されている場合は、 を使用する必要はありません。 一方、RP アプリケーションがネットワーク サービス アカウントで実行されている場合や、RP アプリケーションが ASP.NET アプリケーションである場合などには、別のコンピューター上のリソースにアクセスするために の使用が必要になることがあります。
たとえば、ASP.NET アプリケーションを実行するサーバーから成る Web ファームがあり、そのアプリケーションはバックエンド サーバー上の SQL データベースにアクセスするとします。 そして、このアプリケーションを要求に対応させる必要があるとします。 ただしこの場合、アプリケーションは STS から取得した要求を使用しても SQL データベースにはアクセスできません。 そこで、 を使用して UPN 要求を Windows セキュリティ トークンに変換します。 こうすることで、従来どおり SQL データベースにアクセスできます。
(アプリケーションが別のサーバー上のリソースにアクセスできるようにするには、ドメイン管理者が Active Directory を構成して制約付き委任を有効にする必要があります。 制約付き委任を有効にする方法の詳細については、「How To: ASP.NET 2.0 でプロトコル トランジションと制約付き委任を使用する方法」を参照してください。)
注意
が有効で、バインディングがセキュリティで保護された Cookie モードの通信である場合は、セキュリティで保護された通信の Cookie にシリアル化されている UPN から Windows ID をリハイドレードするために、 が使用されます。 つまり、 が有効でも、正しく構成されていない場合は、セキュリティで保護された Cookie モードの通信とセキュリティで保護されたセッション モードの通信を切り替えるときに認証が失敗する可能性があります。
c2WTS を使用して Windows セキュリティ トークンを取得する方法
の使用方法は 2 種類あります。mapToWindows を有効にする方法と、UpnLogon メソッドをオンデマンドで呼び出す方法です。 アプリケーションが偽装レベルの Windows セキュリティ トークンを常に必要とする場合は、<securityTokenHandlers>
要素の samlSecurityTokenRequirement
の mapToWindows
プロパティを有効にする方法を使用します。 一方、アプリケーションが特定の状況でのみ偽装レベルの Windows セキュリティ トークンを必要とする場合は、UpnLogon メソッドを必要に応じてプログラムで呼び出す方法を使用します。 ただし、このメソッドを正常に呼び出すためには、useWindowsTokenService
プロパティを true に設定し、 の構成を適切な呼び出し元の一覧に追加する必要があります。
WIF は、RP アプリケーションが呼び出すことができる UpnLogon メソッドを提供し、STS から受信した UPN 要求を渡します。その後で、WIF は IPC を使用してローカルの を呼び出します。UpnLogon は、ユーザーを表す WindowsIdentity を返します。 このしくみを次の図に示します。
クライアント要求が RP アプリケーションに到着します。 この要求では、RP アプリケーションが外部リソースにアクセスすることが求められます。 これを実行するには、RP アプリケーションがユーザーを偽装する必要があります。
認証のため、RP アプリケーションがクライアントを IP-STS にリダイレクトします。
IP-STS がユーザーを認証し、UPN 要求 (
https://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn
という種類の要求) を含む SAML トークンを発行します。 が操作を実行するためには、UPN 文字列が必要です。クライアントが SAML トークンを RP アプリケーションへ送信します。
RP アプリケーションが SAML トークンを検証し、UPN 要求を抽出します。
RP アプリケーションが UPN 要求をパラメーターとして UpnLogon メソッドに渡し、Windows セキュリティ トークンを取得し直します。 このメソッド呼び出しは、Saml 1.1 および Saml 2 の SecurityTokenHandlers の SamlSecurityTokenRequirement の mapToWindows プロパティが true に設定され、<microsoft.IdentityModel> の <windowsClaimsIdentity> 要素の useWindowsTokenService の値が true に設定されている場合に、これらの SecurityTokenHandlers によって自動的に実行されます。
RP アプリケーションが Windows ID を使用してユーザーを偽装し、リソースにアクセスします。