Tengo un servicio ASP.NET Web API que se ejecuta en un servidor web con la Autenticación de Windows habilitada.No se puede autenticar en el servicio ASP.NET Web Api con HttpClient
Tengo un sitio de cliente creado en MVC4 que se ejecuta en un sitio diferente en el mismo servidor web que utiliza HttpClient para extraer datos del servicio. Este sitio de cliente se ejecuta con suplantación de identidad habilitada y también usa la autenticación de Windows.
El servidor web es Windows Server 2008 R2 con IIS 7.5.
El reto que tengo es conseguir que el HttpClient pase al usuario actual de Windows como parte de su proceso de autenticación. He configurado el HttpClient de esta manera:
var clientHandler = new HttpClientHandler();
clientHandler.UseDefaultCredentials = true;
clientHandler.PreAuthenticate = true;
clientHandler.ClientCertificateOptions = ClientCertificateOption.Automatic;
var httpClient = new HttpClient(clientHandler);
Mi entendimiento es que ejecuta el sitio de suplantación de identidad habilitado y luego construir el cliente de esta manera debe dar lugar a que el cliente autenticarse en el servicio utilizando la identidad suplantada de la usuario actualmente conectado.
Esto no está sucediendo. De hecho, el cliente no parece autenticarse en absoluto.
El servicio está configurado para usar la autenticación de Windows y esto parece funcionar perfectamente. Puedo ir al http://server/api/shippers en mi navegador web y se me solicita la autenticación de Windows. Una vez ingresado, recibo los datos solicitados.
En los registros de IIS veo que se reciben las solicitudes de API sin autenticación y se recibe una respuesta de desafío 401.
La documentación sobre este parece ser escasa.
Necesito una idea de lo que podría estar mal u otra forma de usar la autenticación de Windows con esta aplicación.
gracias, Craig
Bien manchado! .. – Aliostad
Seguí adelante y establecí estos valores sin ningún cambio en el comportamiento. Lo curioso es que puedo ver al cliente presionando el servidor y obteniendo una respuesta 401. El HttpClient simplemente NO envía información de autenticación y simplemente recibe el 401 y se cierra. ¿Alguna idea adicional? –
Además, cambié la identidad del grupo de aplicaciones en el que se ejecuta el cliente para que sea una cuenta de Windows que tiene acceso al servicio. Esto no produce ningún cambio. Estoy perdido en este? –