これまでのところ、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;
}
}
upnを使用してWindowsIdentityのコンストラクターを呼び出すだけです。
WindowsIdentity winId = new WindowsIdentity(upn);
Windowsトークンサービス(c2WTS)に対するクレームの使用:
WindowsIdentity winId = S4UClient.UpnLogon(upn);
解決策1は私にはより単純で簡単な解決策のように思えますが、c2WTSの目的がわかりませんか?
助言がありますか?
tnx!