Олицетворение и сетевой кредит
Мне нужно передать объект NetworkCredential
с учетными данными текущего олицетворяемого пользователя в веб-службу из asp.net применение.
Мой код выглядит так:
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 = TESTDOMAINTESTUSER
DefaultNetworkCredentials =
Я делаю что-то не так? Если да, то как получить объект NetworkCredential для текущего олицетворенного пользователя?
2 ответа:
Несколько пространная статья в MSDN, объясняющая варианты получения сетевых учетных данных в ASP:
Как использовать олицетворение и делегирование в ASP.NET 2.0
Еще одна статья в блоге на эту тему (хотя я не проверял, действительно ли решение работает: