Jetty 12.0.x SPNEGO: Velg tjenestenavnet, ikke hele principalen
Hold proxy-URI, JAAS-bruker og GSS-tjenestekomponent atskilt når du setter opp Jetty 12-autentisering.
En Jetty SPNEGO-konfigurasjon inneholder tre navn: URI-en for å matche autentisering, brukeren som logger inn gjennom JAAS, og tjenesten som det bes om billett for. Hvert navn har sin oppgave.
Slik ser et fragment av autentiseringsobjektet ut for Jetty 12.0.x:
var auth = new org.eclipse.jetty.client.SPNEGOAuthentication(
java.net.URI.create("http://proxy.example:8080"));
auth.setServiceName("HTTP");Fragmentet viser tjenestekomponenten, ikke en komplett oppskrift for proxyautentisering. JAAS-innlogging, proxy-ruting og forespørselens autentiseringsutveksling er fortsatt separate.
I denne implementasjonen danner Jetty GSS-vertsnavnet ved å sette sammen getServiceName(), et @-tegn og verten for autentiseringsutvekslingen. Oppgis [email protected] som tjenestekomponent, legges nok en vert til. Les setterens kontrakt i stedet for å tro at den tar imot en full Kerberos-principal.
GSS-navnet som dannes, har den konseptuelle formen HTTP@hostname. Den tilsvarende tjenesteprincipalen i KDC vises vanligvis som HTTP/hostname. valgt proxy-navn må stemme med tjenesten som faktisk er registrert for denne kontoen; en IP-adresse eller et alias kan velge et annet billettmål.
Sjekk også 407-løpet
I Jetty 12.0.x henter authenticate() GSS-vertsnavnet fra request.getHost() og bygger et resultat med standardhodet Authorization. Å matche et autentiseringsobjekt på proxy-URI endrer ikke av seg selv disse valgene til proxyens vertsnavn og Proxy-Authorization.
Proxyintegrasjonen trenger derfor riktig forespørselsvert og et proxy-avgrenset resultat for utvekslingen. En HTTPS CONNECT-forespørsel og en vanlig opprinnelsesforespørsel kan ha forskjellige vertsverdier. Kontroller oppførselen til den installerte implementasjonen i stedet for å anta at setteren for tjenestenavn dekker hele 407-flyten.
Ved 407, undersøk proxyautentiseringsutvekslingen og verten som forespørselen brukte. En 401 gjelder opprinnelsesautentisering. En gyldig brukerbillett alene beviser ikke at Jetty ba om riktig tjenestebillett, eller at mellomleddet godtok den.