Приложение C # подключается к веб-серверу, использующему проверку подлинности NTLM.
Я считаю, что каждый запрос к серверу (с использованием нового запроса HttpWebRequest) проходит индивидуальную аутентификацию. Другими словами, каждый запрос приводит к ответу 401, после чего происходит разговор о рукопожатии NTLM, прежде чем я получу фактический ответ.
например:.
Первый запрос GET:
-> GET xyz
<- 401 error (WWW-Authenticate:NTLM)
-> GET xyz (Authorization:NTLM base64stuff)
<- 401 error (WWW-Authenticate:NTLM base64stuff)
-> GET xyz (Authorization: base64stuff)
<- 200
Последующие запросы:
-> GET xyz (Authorization:NTLM base64stuff)
<- 401 error (WWW-Authenticate:NTLM) //can this request be avoided?
-> GET xyz (Authorization: base64stuff)
<- 200
(изначально с PreAuthenticate, установленным в false, последующие запросы выглядели как первый запрос - то есть три базовых запроса на «запрос»)
Есть ли способ «поделиться» аутентификацией, выполненной при первом запросе к серверу, с последующими HttpWebRequests?
Я думал, что, возможно, свойство UnsafeAuthenticatedConnectionSharing
позволит мне сделать это, но установка его в true для всех объектов HttpWebRequest, используемых в приложении, не имеет никакого эффекта.
Однако, если я установлю для PreAuthenticate
значение true, для каждого запроса после первого запроса будет получен менее 401 ответ.