Zdarzają się uruchamianie usługi sieciowej REST z interfejsem API wymagającym, aby klienci używali uwierzytelniania Basic. Przygotowaliśmy zestaw ładnych próbek w różnych językach, pokazujący, w jaki sposób połączyć się z naszą usługą. Teraz mam przeglądając logi IIS usługi i zobaczyć, że następujący wzór zdarza się dość często:Dlaczego klienci usługi .NET w usłudze REST wyślą każde żądanie bez nagłówków uwierzytelniania, a następnie spróbują go ponownie z nagłówkiem uwierzytelniania?
- żądanie przyjdzie, zostanie odrzucona z kodem HTTP 401
- taka sama prośba jest Odesłano i uda
która wygląda jak pierwsza prośba jest wysyłana bez nagłówków Authorization, a następnie druga jest wysyłana z prawymi nagłówkami i kończy się sukcesem. W większości przypadków rekord dziennika zawiera "user-agent", który jest tym samym ciągiem, który wsadziliśmy do naszej próbki .NET.
Zakładam więc, że problem dotyczy tylko programów .NET. Problem nie jest reprodukowany za pomocą naszego przykładowego kodu, więc zakładam, że użytkownicy w jakiś sposób zmodyfikowali kod lub napisali własne od podstaw.
Próbowaliśmy skontaktować się z użytkownikami, ale najwyraźniej nie chcą poświęcać czasu na badania. Więc byłoby miło znaleźć najbardziej prawdopodobny scenariusz, który prowadzi do takiego zachowania programów .NET.
Dlaczego mieliby to robić? Dlaczego nie załączyliby nagłówków za pierwszym razem?
To rozwiązanie działa także pozwala ustawić nagłówek Authorization na pierwszym żądaniu, omijając 401 Challenge/Response. Jednak w moim doświadczeniu z HttpClient i HttpClientHandler ustawienie wstępnego uwierzytelnienia działa, ponieważ nagłówek Authorize jest ustawiany przy każdym żądaniu po zakończeniu wyzwania 401 Challenge/Response. Ten artykuł wyjaśnia to dobrze: http://weblog.west-wind.com/posts/2010/Feb/18/NET-WebRequestPreAuthenticate-not-quite-what-it-sounds- like – Philippe
@Philippe: Tak, to działa także. Dziękuję Ci. – sharptooth
Wskazówka: w przypadku proxy należy zamiast tego ustawić nagłówek 'client.DefaultRequestHeaders.ProxyAuthorization'. – stil