2011-02-18 57 views
3

到目前为止,我发现了两种解决方案从ClaimsIdentity中获取WindowsIdentity对象。 首先我提取用户主体名称(upn)。什么是从ClaimsIdentity中检索WindowsIdentity的最佳方法

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. 只要打电话的WindowsIdentity的构造与UPN:

    的WindowsIdentity winId =新的WindowsIdentity(UPN);

  2. 使用声明为Windows令牌服务(C2WTS):

    的WindowsIdentity winId = S4UClient.UpnLogon(UPN);

解决方案1似乎对我来说更简单和更简单的解决方案,但后来我不明白c2WTS的目的?

有什么建议吗?

tnx!

回答

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

通过Excel Services和PerformancePoint Services的使用。

它的缓存一旦使用。还有其他一些检查。

相关问题