从ClaimsIdentity检索WindowsIdentity的最佳方法是什么
到目前为止,我发现了两个从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!
-
WindowsIdentity winId = S4UClient.UpnLogon(upn);
由Excel Services和PerformancePoint服务使用。
它的缓存曾经使用过。 还有一些其他检查。