Suplantación y credencial de red

Necesito pasar unNetworkCredential Objeto con las credenciales del usuario suplantado actualmente a un servicio web desde una aplicación asp.net.
Mi código se ve así:

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();
}

Había entendido queCredentialCache.DefaultNetworkCredentials Debe proporcionar las credenciales del usuario suplantado actualmente, pero no es el caso.
Los mensajes de registro que recibo son

WindowsIdentity = TESTDOMAIN\TESTUSER
DefaultNetworkCredentials = 

¿Estoy haciendo algo mal? Si es así, ¿cómo se obtiene un objeto NetworkCredential para el usuario suplantado actualmente?

Respuestas a la pregunta(2)

Su respuesta a la pregunta