Mi aplicación C# golpea un servidor web que usa autenticación NTLM.¿Cómo 'compartir' la autenticación NTLM en múltiples HttpWebRequests?
Encuentro que cada solicitud hecha al servidor (usando una nueva HttpWebRequest) se autentica individualmente. En otras palabras, cada solicitud da como resultado una respuesta 401, después de lo cual se produce una conversación NTLM handshaking antes de obtener la respuesta real.
por ejemplo:
solicitud GET Primero:
-> GET xyz
<- 401 error (WWW-Authenticate:NTLM)
-> GET xyz (Authorization:NTLM base64stuff)
<- 401 error (WWW-Authenticate:NTLM base64stuff)
-> GET xyz (Authorization: base64stuff)
<- 200
solicitudes posteriores:
-> GET xyz (Authorization:NTLM base64stuff)
<- 401 error (WWW-Authenticate:NTLM) //can this request be avoided?
-> GET xyz (Authorization: base64stuff)
<- 200
(inicialmente, con PreAuthenticate establece en false, las solicitudes posteriores parecía a la primera solicitud - es decir, tres solicitudes subyacentes por 'solicitud')
¿Hay alguna forma de 'compartir' la autenticación realizada en la primera solicitud al servidor con las siguientes HttpWebRequests?
Pensé que quizás la propiedad UnsafeAuthenticatedConnectionSharing
me permitiría hacer esto, pero establecerlo como verdadero para todos los objetos HttpWebRequest utilizados en la aplicación no tiene ningún efecto.
Sin embargo, si configuro PreAuthenticate
como verdadero, se produce una respuesta menos 401 para cada solicitud después de la primera.
Cuál es el problema que trata de resolver? –
Quiero efectivamente 'hacer autenticación' una vez, y reutilizar esto a través de HttpWebRequests. En lugar de autenticar cada vez que presiono el servidor. Sin embargo, es posible que esté malinterpretando NTLM, y de hecho NTLM impone una sobrecarga de una solicitud adicional en cada solicitud realizada. – mackenir
Sí, pero cuál es el problema con la forma en que funciona ahora, qué problema resolvería para cambiar el comportamiento que describes a la conducta que deseas, qué estás tratando de lograr en el mundo real. –