L'app My C# colpisce un server Web che utilizza l'autenticazione NTLM.Come 'condividere' l'autenticazione NTLM su più HttpWebRequests?
Trovo che ogni richiesta effettuata al server (utilizzando una nuova HttpWebRequest) sia autenticata individualmente. In altre parole, ogni richiesta produce una risposta 401, dopo di che si verifica una conversazione di handshake NTLM prima di ottenere la risposta effettiva.
esempio:
Prima richiesta GET:
-> GET xyz
<- 401 error (WWW-Authenticate:NTLM)
-> GET xyz (Authorization:NTLM base64stuff)
<- 401 error (WWW-Authenticate:NTLM base64stuff)
-> GET xyz (Authorization: base64stuff)
<- 200
richieste successive:
-> GET xyz (Authorization:NTLM base64stuff)
<- 401 error (WWW-Authenticate:NTLM) //can this request be avoided?
-> GET xyz (Authorization: base64stuff)
<- 200
(inizialmente, con PreAuthenticate impostato su false, le richieste successive sembrava la prima richiesta - vale a dire tre richieste sottostanti per "richiesta")
C'è un modo di 'condividere' l'autenticazione eseguita sulla prima richiesta al server con successivi HttpWebRequests?
Ho pensato che forse la proprietà UnsafeAuthenticatedConnectionSharing
mi avrebbe consentito di farlo, ma impostarla su true per tutti gli oggetti HttpWebRequest utilizzati nell'app non ha alcun effetto.
Tuttavia, se si imposta PreAuthenticate
su true, una risposta 401 in meno si verifica per ogni richiesta successiva alla prima.
Quale problema stai cercando di risolvere? –
Voglio effettivamente "fare l'autenticazione" una volta e riutilizzarlo su HttpWebRequests. Piuttosto che autenticarsi ogni volta che colpisco il server. Tuttavia, potrei fraintendere NTLM e in effetti NTLM impone un sovraccarico di una richiesta aggiuntiva su ogni richiesta effettuata. – mackenir
Sì, ma qual è il problema con il modo in cui funziona ora, quale problema risolverebbe per cambiare il comportamento che descrivi al comportamento che desideri, che cosa stai cercando di ottenere nel mondo reale. –