我需要將NetworkCredential
對象與當前模擬用戶的憑據傳遞給來自asp.net應用程序的Web服務。
我的代碼如下所示:模擬和NetworkCredential
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對象?
這不是雙跳問題的表現嗎? http://blogs.msdn.com/knowledgecast/archive/2007/01/31/the-double-hop-problem.aspx – Richard 2010-01-14 10:38:43
是的,似乎與雙跳問題有關,因爲您將在第二個令牌中ASP不會給你網絡憑證。 – 2010-01-14 11:30:12