Олицетворение и сетевой кредит


Мне нужно передать объект 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 9

2 ответа:

Несколько пространная статья в MSDN, объясняющая варианты получения сетевых учетных данных в ASP:

Как использовать олицетворение и делегирование в ASP.NET 2.0

Еще одна статья в блоге на эту тему (хотя я не проверял, действительно ли решение работает:

Олицетворение .NET (C#) с сетевыми учетными данными

Невозможно использовать asp.net олицетворенный пользователь (Current.User.Identity) для сетевой аутентификации он работает только локально.