4

これまでのところ、ClaimsIdentityからWindowsIdentityオブジェクトを取得するための2つの解決策を見つけました。まず、ユーザープリンシパル名(upn)を抽出します。

ClaimsIdentity ci = (ClaimsIdentity) Thread.CurrentPrincipal.Identity;    
string upn = null;
foreach (Claim c in ci.Claims)
{
    if (c.ClaimType == ClaimTypes.Upn)
    {
        upn = c.Value;
        break;
    }
}
  1. upnを使用してWindowsIdentityのコンストラクターを呼び出すだけです。

    WindowsIdentity winId = new WindowsIdentity(upn);

  2. Windowsトークンサービス(c2WTS)に対するクレームの使用:

    WindowsIdentity winId = S4UClient.UpnLogon(upn);

解決策1は私にはより単純で簡単な解決策のように思えますが、c2WTSの目的がわかりませんか?

助言がありますか?

tnx!

4

1 に答える 1

2
  1. WindowsIdentity winId = S4UClient.UpnLogon(upn);

Excel Services および PerformancePoint サービスで使用されます。

一度使用するとキャッシュされます。それに対する他のいくつかのチェックもあります。

于 2011-05-22T22:24:13.717 に答える