Podszywanie się i poświadczenie sieciowe
Muszę przejśćNetworkCredential
obiekt z poświadczeniami aktualnie personifikowanego użytkownika do usługi internetowej z aplikacji asp.net.
Mój kod wygląda tak:
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();
}
Zrozumiałem toCredentialCache.DefaultNetworkCredentials
powinien podawać poświadczenia aktualnie podszytego użytkownika, ale tak nie jest.
Otrzymane komunikaty dziennika są
WindowsIdentity = TESTDOMAIN\TESTUSER
DefaultNetworkCredentials =
czy robię coś źle? Jeśli tak, jak uzyskać obiekt NetworkCredential dla aktualnie personifikowanego użytkownika?