Jetty 12.0.x SPNEGO: postavite ime usluge, a ne cijeli principal
Razdvojite proxy URI, JAAS korisnika i GSS komponentu usluge pri konfigurisanju Jetty 12 autentifikacije.
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.