Jetty 12.0.x SPNEGO: defineix el nom del servei, no el principal complet
Separa l'URI del proxy, l'usuari JAAS i el component de servei GSS en configurar l'autenticació de Jetty 12.
En una configuració SPNEGO de Jetty hi ha tres noms: l'URI que s'utilitza per fer coincidir l'autenticació, l'usuari que inicia sessió mitjançant JAAS i el servei pel qual es demana un tiquet. Tenen finalitats diferents.
Per a la implementació de Jetty 12.0.x, un fragment d'objecte d'autenticació és:
var auth = new org.eclipse.jetty.client.SPNEGOAuthentication(
java.net.URI.create("http://proxy.example:8080"));
auth.setServiceName("HTTP");Aquest fragment il·lustra el component de servei, no una recepta completa d'autenticació de proxy. L'inici de sessió JAAS, l'encaminament del proxy i l'intercanvi d'autenticació de la sol·licitud continuen sent separats.
En aquesta implementació, Jetty construeix el nom GSS basat en l'amfitrió combinant getServiceName(), el caràcter @ i l'amfitrió de l'intercanvi d'autenticació. Si proporciones [email protected] com a component de servei, s'afegiria un altre amfitrió. Llegeix el contracte d'aquest setter en lloc de suposar que accepta un principal Kerberos complet.
El nom GSS resultant té la forma conceptual HTTP@hostname. El principal de servei corresponent del KDC se sol representar com HTTP/hostname. el nom de proxy seleccionat ha de coincidir amb el servei realment registrat per a aquest compte; una adreça IP o un àlies poden seleccionar una altra destinació del tiquet.
Inspecciona també el camí del 407
A Jetty 12.0.x, authenticate() obté el nom d'amfitrió GSS de request.getHost() i construeix un resultat amb la capçalera Authorization per defecte. Fer coincidir un objecte d'autenticació per URI de proxy no canvia per si sol aquestes tries cap al nom d'amfitrió del proxy i Proxy-Authorization.
Per tant, una integració de proxy necessita l'amfitrió de sol·licitud correcte i un resultat amb abast de proxy per a aquest intercanvi. Una sol·licitud HTTPS CONNECT i una sol·licitud ordinària a l'origen poden tenir valors d'amfitrió diferents. Confirma el comportament de la implementació instal·lada en lloc de suposar que el setter del nom del servei proporciona el flux 407 complet.
Per a un 407, inspecciona l'intercanvi d'autenticació del proxy i l'amfitrió utilitzat per aquesta sol·licitud. Un 401 pertany a l'autenticació d'origen. Un tiquet d'usuari vàlid per si sol no demostra que Jetty hagi demanat el tiquet de servei correcte ni que l'intermediari l'hagi acceptat.