如何在asp.net中获取运行用户的ICredential

时间:2010-06-11 13:49:45

标签: c# asp.net security

如何在我的网络应用程序中获取ICredential对象?

  • 我使用Windows身份验证

我尝试使用以下代码:

WindowsImpersonationContext securityContext = 
      Request.LogonUserIdentity.Impersonate(); 

在最后一行代码之后: CredentialCache.DefaultCredentials和CredentialCache.DefaultNetworkCredentials仍为空

我知道身份是正确的,因为以下属性显示了我正在使用的正确的域\用户帐户: Request.LogonUserIdentity.Name => “域\用户”

这是该对象的身份验证类型:

Request.LogonUserIdentity.AuthenticationType => “NTLM”

2 个答案:

答案 0 :(得分:2)

为了获得用户的ICredential实现,您首先需要为用户保留WindowsIdentity(例如通过Page.User.Identity)。使用WindowsIdentity对象,您可以impersonate用户。成功模拟后,您可以通过CredentialCache.DefaultCredentials获取用户的凭据。

现在的问题是,你想用凭证做什么?如果要使用这些凭据访问其他服务器上的某些资源,则可能必须启用Keberos委派以允许服务器跃点。我不知道该怎么做: - )

答案 1 :(得分:0)

你需要它在哪里?

您可以从System.Threading.Thread.CurrentPrincipal.Identity中检索用户名