Jetty 12.0.x SPNEGO: postavite naziv usluge, a ne cijeli principal
Odvojite proxy URI, JAAS korisnika i GSS komponentu usluge pri konfiguraciji Jetty 12 autentifikacije.
U Jetty SPNEGO konfiguraciji postoje tri naziva: URI koji se koristi za podudaranje autentifikacije, korisnik koji se prijavljuje putem JAAS-a i usluga za koju se traži ulaznica. 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 prikazuje komponentu usluge, a ne potpuni recept za proxy autentifikaciju. Prijava putem JAAS-a, usmjeravanje proxyja i razmjena autentifikacije zahtjeva ostaju odvojeni.
U ovoj implementaciji Jetty gradi GSS naziv na temelju hosta kombiniranjem getServiceName(), znaka @ i hosta za razmjenu autentifikacije. Ako se [email protected] navede kao komponenta usluge, dodao bi se još jedan host. Pročitajte ugovor ovog settera umjesto pretpostavke da prihvaća potpuni Kerberos principal.
Dobiveni GSS naziv ima konceptualni oblik HTTP@hostname. Odgovarajući principal usluge u KDC-u obično se predstavlja kao HTTP/hostname. odabrani proxy naziv mora odgovarati usluzi koja je stvarno registrirana za taj račun; IP adresa ili alias mogu odabrati drugu metu ulaznice.
Provjerite i putanju 407
U Jetty 12.0.x authenticate() dobiva GSS naziv hosta iz request.getHost() i gradi rezultat sa zadanim zaglavljem Authorization. Podudaranje objekta autentifikacije po proxy URI-ju samo po sebi ne mijenja te odabire u naziv proxy hosta i Proxy-Authorization.
Proxy integracija stoga treba ispravan host zahtjeva i rezultat ograničen na proxy za tu razmjenu. Zahtjev HTTPS CONNECT i obični zahtjev prema izvoru mogu imati različite vrijednosti hosta. Potvrdite ponašanje instalirane implementacije umjesto pretpostavke da setter naziva usluge pruža potpuni tok 407.
Za 407 provjerite proxy razmjenu autentifikacije i host koji je koristio taj zahtjev. 401 pripada autentifikaciji izvora. Samo valjana korisnička ulaznica ne dokazuje da je Jetty zatražio ispravnu ulaznicu usluge ili da ju je posrednik prihvatio.