到目前为止,我发现了两种从ClaimsIdentity获取WindowsIdentity对象的解决方案。 首先,我提取用户主体名称(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 =新的WindowsIdentity(upn);
将声明用于Windows令牌服务(c2WTS):
WindowsIdentity winId = S4UClient.UpnLogon(upn);
解决方案1对我来说似乎更简单,更容易解决,但后来我不明白c2WTS的目的?
有什么建议吗?
TNX!
答案 0 :(得分:2)
WindowsIdentity winId = S4UClient.UpnLogon(upn);
由Excel Services和PerformancePoint服务使用。
一旦使用它的缓存。还有一些其他检查。