Jetty 12.0.x SPNEGO: postavite ime usluge, a ne ceo principal
Odvojite 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. Imaju različite svrhe.
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 usmeravanje i razmena autentifikacije zahteva ostaju odvojeni.
U ovoj implementaciji Jetty gradi GSS ime zasnovano na hostu kombinujući getServiceName(), znak @ i host za razmenu autentifikacije. Ako kao komponentu usluge navedete [email protected], dodao bi se još jedan host. Pročitajte ugovor ovog setter-a umesto 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. izabrano proxy ime mora odgovarati usluzi koja je stvarno registrovana za taj nalog; IP adresa ili alias mogu izabrati drugu metu tiketa.
Proverite i putanju 407
U Jetty 12.0.x authenticate() dobija GSS ime hosta iz request.getHost() i gradi rezultat sa podrazumevanim zaglavljem Authorization. Uparivanje objekta autentifikacije po proxy URI-ju samo po sebi ne menja te izbore u ime hosta proxy-ja i Proxy-Authorization.
Proxy integracija stoga treba ispravan host zahteva i rezultat ograničen na proxy za tu razmenu. Zahtev HTTPS CONNECT i običan zahtev prema izvoru mogu imati različite vrednosti hosta. Potvrdite ponašanje instalirane implementacije umesto da pretpostavljate da setter imena usluge pruža potpuni tok 407.
Za 407 proverite proxy razmenu autentifikacije i host koji je koristio taj zahtev. 401 pripada autentifikaciji izvora. Samo važeći korisnički tiket ne dokazuje da je Jetty zatražio ispravan tiket usluge ili da ga je posrednik prihvatio.