Det finns tre namn i en Jetty SPNEGO-konfiguration: URI:n som används för att matcha autentisering, användaren som loggar in via JAAS och tjänsten som en biljett begärs för. De har olika syften.

För Jetty 12.0.x-implementeringen ser ett autentiseringsobjektfragment ut så här:

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

Detta fragment illustrerar tjänstekomponenten, inte ett fullständigt recept för proxyautentisering. JAAS-inloggning, proxy-routing och begärans autentiseringsutbyte förblir åtskilda.

I denna implementering bygger Jetty GSS-värdnamnet genom att kombinera getServiceName(), ett @-tecken och värden för autentiseringsutbytet. Anges [email protected] som tjänstekomponent skulle ytterligare en värd läggas till. Läs denna setters kontrakt i stället för att anta att den accepterar en fullständig Kerberos-principal.

Det resulterande GSS-namnet har den konceptuella formen HTTP@hostname. KDC:s motsvarande tjänsteprincipal representeras vanligen som HTTP/hostname. valt proxy-namn måste stämma med den tjänst som faktiskt är registrerad för det kontot; en IP-adress eller ett alias kan välja ett annat biljettmål.

Undersök även 407-vägen

I Jetty 12.0.x hämtar authenticate() GSS-värdnamnet från request.getHost() och bygger ett resultat med standardheadern Authorization. Att matcha ett autentiseringsobjekt på proxy-URI ändrar inte i sig dessa val till proxyns värdnamn och Proxy-Authorization.

En proxyintegration behöver därför rätt begärandevärd och ett proxybegränsat resultat för det utbytet. En HTTPS CONNECT-begäran och en vanlig ursprungsbegäran kan ha olika värdvärden. Bekräfta beteendet hos den installerade implementeringen i stället för att anta att tjänstenamnssettern levererar hela 407-flödet.

För en 407, undersök proxyautentiseringsutbytet och värden som begäran använde. En 401 hör till ursprungsautentisering. En giltig användarbiljett ensam bevisar inte att Jetty begärde rätt tjänstebiljett eller att mellanledet accepterade den.

Relaterade artiklar