我需要将当前模拟用户的凭据作为NetworkCredential
对象传递给来自asp.net应用程序的Web服务。
我的代码如下:
WindowsIdentity windowsIdentity = HttpContext.Current.User.Identity as WindowsIdentity;
WindowsImpersonationContext context = windowsIdentity.Impersonate();
try {
var client = GetClient();
client.ClientCredentials.Windows.ClientCredential = CredentialCache.DefaultNetworkCredentials;
Log("WindowsIdentity = {0}", windowsIdentity.Name);
Log("DefaultNetworkCredentials = {0}", CredentialCache.DefaultNetworkCredentials.UserName);
client.DoSomething();
} finally {
context.Undo();
}
我曾经认为CredentialCache.DefaultNetworkCredentials
应该提供当前模拟用户的凭据,但事实并非如此。
我收到的日志信息是:
WindowsIdentity = TESTDOMAIN\TESTUSER
DefaultNetworkCredentials =
我是否做错了什么?如果是这样,如何获取当前模拟用户的NetworkCredential对象?