Jetty 12.0.x SPNEGO: Angiv tjenestenavnet, ikke hele principalen
Adskil proxy-URI, JAAS-bruger og GSS-tjenestekomponent, når Jetty 12-godkendelse konfigureres.
Der er tre navne i en Jetty SPNEGO-konfiguration: den URI, der bruges til at matche godkendelse, brugeren der logger ind via JAAS, og tjenesten, som der anmodes om en billet til. De tjener forskellige formål.
For Jetty 12.0.x-implementeringen ser et godkendelsesobjektfragment sådan ud:
var auth = new org.eclipse.jetty.client.SPNEGOAuthentication(
java.net.URI.create("http://proxy.example:8080"));
auth.setServiceName("HTTP");Dette fragment illustrerer tjenestekomponenten, ikke en komplet opskrift på proxygodkendelse. JAAS-login, proxy-routing og anmodningens godkendelsesudveksling forbliver adskilte.
I denne implementering opbygger Jetty GSS-værtsnavnet ved at kombinere getServiceName(), et @-tegn og værten for godkendelsesudvekslingen. Angives [email protected] som tjenestekomponent, tilføjes endnu en vært. Læs denne setters kontrakt i stedet for at antage, at den accepterer en fuld Kerberos-principal.
Det resulterende GSS-navn har den konceptuelle form HTTP@hostname. KDC'ens tilsvarende tjenesteprincipal repræsenteres normalt som HTTP/hostname. valgte proxy-navn skal matche den tjeneste, der faktisk er registreret for den konto; en IP-adresse eller alias kan vælge et andet billetmål.
Undersøg også 407-forløbet
I Jetty 12.0.x henter authenticate() GSS-værtsnavnet fra request.getHost() og opbygger et resultat med standardheaderen Authorization. At matche et godkendelsesobjekt på proxy-URI ændrer ikke i sig selv disse valg til proxyens værtsnavn og Proxy-Authorization.
En proxyintegration kræver derfor den korrekte anmodningsvært og et proxyafgrænset resultat for den udveksling. En HTTPS CONNECT-anmodning og en almindelig oprindelsesanmodning kan have forskellige værtværdier. Bekræft den installerede implementerings adfærd i stedet for at antage, at tjenestenavn-setteren leverer hele 407-forløbet.
For en 407 undersøges proxygodkendelsesudvekslingen og den vært, som anmodningen brugte. En 401 hører til oprindelsesgodkendelse. En gyldig brugerbillet alene beviser ikke, at Jetty anmodede om den korrekte tjenestebillet, eller at mellemleddet accepterede den.