Det er tre navn i en Jetty SPNEGO-konfigurasjon: URI-en som brukes til å matche autentisering, brukeren som logger på via JAAS, og tjenesten det bes om en billett for. De tjener ulike formål.

For Jetty 12.0.x-implementasjonen ser et autentiseringsobjektfragment slik ut:

var auth = new org.eclipse.jetty.client.SPNEGOAuthentication(
    java.net.URI.create("http://proxy.example:8080"));
auth.setServiceName("HTTP");

Dette fragmentet illustrerer tjenestekomponenten, ikke en fullstendig oppskrift på proxyautentisering. JAAS-pålogging, proxy-ruting og forespørselens autentiseringsutveksling forblir adskilt.

I denne implementasjonen bygger Jetty GSS-vertsnavnet ved å kombinere getServiceName(), et @-tegn og verten for autentiseringsutvekslingen. Angis [email protected] som tjenestekomponent, vil det legges til nok en vert. Les kontrakten til denne setteren i stedet for å anta at den godtar en fullstendig Kerberos-principal.

Det resulterende GSS-navnet har den konseptuelle formen HTTP@hostname. KDCs tilsvarende tjenesteprincipal representeres vanligvis som HTTP/hostname. valgte proxy-navnet må samsvare med tjenesten som faktisk er registrert for den kontoen; en IP-adresse eller alias kan velge et annet billettmål.

Undersøk også 407-løpet

I Jetty 12.0.x henter authenticate() GSS-vertsnavnet fra request.getHost() og bygger et resultat med standardheaderen Authorization. Å matche et autentiseringsobjekt etter proxy-URI endrer ikke i seg selv disse valgene til proxyens vertsnavn og Proxy-Authorization.

En proxyintegrasjon trenger derfor riktig forespørselsvert og et proxyavgrenset resultat for den utvekslingen. En HTTPS CONNECT-forespørsel og en vanlig opphavsforespørsel kan ha ulike vertsverdier. Bekreft oppførselen til den installerte implementasjonen i stedet for å anta at tjenestenavn-setteren leverer hele 407-løpet.

For en 407 undersøker du proxyautentiseringsutvekslingen og verten som den forespørselen brukte. En 401 hører til opphavsautentisering. En gyldig brukerbillett alene beviser ikke at Jetty ba om riktig tjenestebillett, eller at mellomleddet godtok den.

Relaterte artikler