Próbuję napisać prosty test dymu dla aplikacji internetowej.Przekazywanie podstawowych poświadczeń uwierzytelniających przy każdym żądaniu za pomocą HtmlUnit WebClient
Aplikacja zwykle korzysta z uwierzytelniania opartego na formularzach, ale akceptuje także podstawowy uwierzytelnienie, ale ponieważ domyślnie jest to uwierzytelnianie oparte na formularzach, nigdy nie wysyła wymaganego uwierzytelnienia, ale zamiast tego po prostu wysyła formularz logowania.
W teście próbuję wysłać nagłówek podstawowego uwierzytelniania przy użyciu
WebClient webClient = new WebClient();
DefaultCredentialsProvider creds = new DefaultCredentialsProvider();
// Set some example credentials
creds.addCredentials("usr", "pwd");
// And now add the provider to the webClient instance
webClient.setCredentialsProvider(creds);
webClient.getPage("<some url>")
Próbowałem też farsz poświadczeń w obiekcie WebRequest i mimochodem, że metody webClient.getPage
.
Ale na serwerze nie dostaję nagłówka uwierzytelniania. Podejrzewam, że WebClient wysyła tylko nagłówek uwierzytelniania, jeśli otrzyma jawnie żądanie od serwera, co nigdy się nie zdarza.
Pytanie więc, w jaki sposób mogę sprawić, aby WebClient wysyłał nagłówek uwierzytelniania na każde żądanie, w tym pierwsze?
nie jestem jasne, co masz na myśli przez „tylko wysyła formularz logowania” - - czy pojawia się na stronie w twojej aplikacji? Właśnie wykopałem stary kod testujący witrynę za pomocą okien dialogowych uwierzytelniania przeglądarki, wstawionych przez niektóre zabezpieczenia domenowe, a nie przez aplikację. Zasadniczo zrobiłem dokładnie tak, jak ty, co sprawdziło się dobrze. –
W ten sposób aplikacja jest zaimplementowana. Podstawowa autoryzacja dotyczy tylko testów i innych urządzeń współpracujących z aplikacją. Nie chcemy, aby użytkownik kiedykolwiek widział paskudną podstawową formę uwierzytelnienia wygenerowaną przez przeglądarkę. –