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.

Povezani članci