A Jetty SPNEGO konfigurációjában három név szerepel: a hitelesítés párosítására szolgáló URI, a JAAS-on keresztül bejelentkező felhasználó és a szolgáltatás, amelyhez jegyet kérnek. Ezek különböző célokat szolgálnak.

A Jetty 12.0.x implementációjában a hitelesítési objektum egy részlete így néz ki:

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

Ez a részlet a szolgáltatáskomponenst szemlélteti, nem a proxyhitelesítés teljes receptjét. A JAAS-bejelentkezés, a proxy útvonalválasztása és a kérés hitelesítési cseréje továbbra is különválik.

Ebben az implementációban a Jetty a getServiceName(), az @ karakter és a hitelesítési csere hosztjának összefűzésével építi fel a GSS hosztalapú nevet. Ha a [email protected] kerül szolgáltatáskomponensként megadásra, az újabb hosztot fűzne hozzá. Olvassa el a setter szerződését, ahelyett hogy feltételezné, hogy teljes Kerberos principalt fogad el.

Az eredményül kapott GSS-név fogalmi formája HTTP@hostname. A KDC megfelelő szolgáltatás-principalja általában HTTP/hostname formában jelenik meg. A kiválasztott proxy névnek meg kell egyeznie a ténylegesen regisztrált szolgáltatással ehhez a fiókhoz; egy IP-cím vagy alias másik jegycélt választhat.

Vizsgálja meg a 407-es útvonalat is

A Jetty 12.0.x-ben az authenticate() a request.getHost()-ból szerzi be a GSS hosztnevet, és az alapértelmezett Authorization fejléccel épít eredményt. A hitelesítési objektum proxy URI szerinti párosítása önmagában nem változtatja meg ezeket a választásokat a proxy hosztnevére és a Proxy-Authorization-re.

Ezért a proxyintegrációnak a helyes kérés-hosztra és a proxyra korlátozott eredményre van szüksége ehhez a cseréhez. Egy HTTPS CONNECT kérés és egy közönséges eredetkérés hosztértéke eltérhet. Erősítse meg a telepített implementáció viselkedését, ahelyett hogy feltételezné, hogy a szolgáltatásnév-setter a teljes 407-es folyamatot biztosítja.

407 esetén vizsgálja meg a proxyhitelesítési cserét és a kérés által használt hosztot. A 401 az eredet hitelesítéséhez tartozik. Egy érvényes felhasználói jegy önmagában nem bizonyítja, hogy a Jetty a megfelelő szolgáltatásjegyet kérte, vagy hogy a közvetítő elfogadta azt.

Kapcsolódó cikkek