U Jetty SPNEGO konfiguraciji postoje tri imena: URI koji se koristi za uparivanje autentifikacije, korisnik koji se prijavljuje preko JAAS-a i usluga za koju se traži tiket. Ona služe različitim svrhama.

Za implementaciju Jetty 12.0.x fragment objekta autentifikacije izgleda ovako:

var auth = new org.eclipse.jetty.client.SPNEGOAuthentication(
    java.net.URI.create("http://proxy.example:8080"));
auth.setServiceName("HTTP");

Ovaj fragment ilustruje komponentu usluge, a ne potpuni recept za proxy autentifikaciju. JAAS prijava, proxy usmjeravanje i razmjena autentifikacije zahtjeva ostaju odvojeni.

U ovoj implementaciji Jetty gradi GSS ime zasnovano na hostu kombinujući getServiceName(), znak @ i host za razmjenu autentifikacije. Ako kao komponentu usluge navedete [email protected], dodao bi se još jedan host. Pročitajte ugovor ovog setera umjesto da pretpostavljate da prihvata potpuni Kerberos principal.

Dobijeno GSS ime ima konceptualni oblik HTTP@hostname. Odgovarajući principal usluge u KDC-u obično se predstavlja kao HTTP/hostname. odabrano proxy ime mora odgovarati usluzi koja je stvarno registrovana za taj račun; IP adresa ili alias mogu odabrati drugu metu tiketa.

Provjerite i putanju 407

U Jetty 12.0.x authenticate() dobija GSS ime hosta iz request.getHost() i gradi rezultat koristeći zadanu Authorization zaglavlje. Uparivanje objekta autentifikacije po proxy URI-ju samo po sebi ne mijenja te izbore u ime proxy hosta i Proxy-Authorization.

Proxy integracija stoga treba ispravan host zahtjeva i rezultat ograničen na proxy za tu razmjenu. HTTPS CONNECT zahtjev i običan zahtjev prema izvoru mogu imati različite vrijednosti hosta. Provjerite ponašanje instalirane implementacije umjesto da pretpostavljate da seter imena usluge pruža potpuni tok 407.

Za 407 provjerite proxy razmjenu autentifikacije i host koji koristi taj zahtjev. 401 pripada autentifikaciji izvora. Samo valjan korisnički tiket ne dokazuje da je Jetty zatražio ispravan tiket usluge ili da ga je posrednik prihvatio.

Povezani članci