C# uygulağım NTLM kimlik doğrulamasını kullanan bir web sunucusuna ulaşıyor.Birden çok HttpWebRequests genelinde NTLM kimlik doğrulaması nasıl?
Sunucuya yapılan her isteğin (yeni bir HttpWebRequest kullanarak) tek tek doğrulandığını buldum. Diğer bir deyişle, her istek 401 cevabıyla sonuçlanır, ardından gerçek yanıtı almadan önce bir NTLM el sıkışma konuşması gerçekleşir.
örn:
İlk GET isteği:
-> GET xyz
<- 401 error (WWW-Authenticate:NTLM)
-> GET xyz (Authorization:NTLM base64stuff)
<- 401 error (WWW-Authenticate:NTLM base64stuff)
-> GET xyz (Authorization: base64stuff)
<- 200
sonraki istekler: PreAuthenticate false olarak ayarlanmış ile başlangıçta
-> GET xyz (Authorization:NTLM base64stuff)
<- 401 error (WWW-Authenticate:NTLM) //can this request be avoided?
-> GET xyz (Authorization: base64stuff)
<- 200
(, art arda istek ilk istek benziyordu - yani 'istek' başına üç temel istek:)
Orada bir İlk istekte gerçekleştirilen kimlik doğrulamasını daha sonraki HttpWebRequests ile sunucuya 'paylaşma' yolu?
Belki de UnsafeAuthenticatedConnectionSharing
özelliğinin bunu yapmama izin verdiğini düşündüm, ancak uygulamanın içinde kullanılan tüm HttpWebRequest nesneleri için true değerine ayarlamanın bir etkisi yoktur.
Ancak, PreAuthenticate
değerini true olarak ayarlarsanız, ilk isteğinden sonra her istek için 401 yanıt daha az olur.
Ne sorunu çözmeye çalışıyoruz: Daha fazla bilgi için, NTLM düzeni hakkında çok yararlı ve anlaşılır bulmak Bu sayfayı, görüyor musunuz? –
Bir kez etkin bir şekilde 'kimlik doğrulama' yapmak ve bunu HttpWebRequests genelinde yeniden kullanmak istiyorum. Sunucuya her vurduğumda kimlik doğrulaması yapmak yerine. Yine de NTLM'yi yanlış anlatabildim ve aslında NTLM, yapılan her talep üzerine ekstra bir talep yükü getirdi. – mackenir
Evet, ancak şimdi nasıl çalıştığıyla ilgili sorun nedir, tanımladığınız davranışa, arzu ettiğiniz davranışa, gerçek dünyada ne elde etmeye çalışıyorsunuz, hangi sorunu çözecektir? –