Jetty 12.0.x SPNEGO: define o nome do servizo, non o principal completo
Separa o URI do proxy, o usuario JAAS e o compoñente de servizo GSS ao configurar a autenticación de Jetty 12.
Nunha configuración SPNEGO de Jetty hai tres nomes: o URI que se usa para emparellar a autenticación, o usuario que inicia sesión mediante JAAS e o servizo para o que se solicita un ticket. Teñen propósitos distintos.
Para a implementación de Jetty 12.0.x, un fragmento do obxecto de autenticación é:
var auth = new org.eclipse.jetty.client.SPNEGOAuthentication(
java.net.URI.create("http://proxy.example:8080"));
auth.setServiceName("HTTP");Este fragmento ilustra o compoñente de servizo, non unha receita completa de autenticación de proxy. O inicio de sesión JAAS, o encamiñamento do proxy e o intercambio de autenticación da solicitude seguen sendo independentes.
Nesta implementación Jetty constrúe o nome GSS baseado no host combinando getServiceName(), o carácter @ e o host do intercambio de autenticación. Se se fornece [email protected] como compoñente de servizo, engadiríase outro host. Le o contrato deste setter en lugar de supor que acepta un principal Kerberos completo.
O nome GSS resultante ten a forma conceptual HTTP@hostname. O principal de servizo correspondente do KDC adoita representarse como HTTP/hostname. O nome de proxy seleccionado debe coincidir co servizo realmente rexistrado para esa conta; un enderezo IP ou un alias poden seleccionar outro destino de ticket.
Inspecciona tamén a ruta do 407
En Jetty 12.0.x authenticate() obtén o nome de host GSS de request.getHost() e constrúe un resultado coa cabeceira Authorization predeterminada. Emparellar un obxecto de autenticación por URI de proxy non cambia por si só esas eleccións ao nome de host do proxy e a Proxy-Authorization.
Por tanto, unha integración de proxy necesita o host de solicitude correcto e un resultado con alcance de proxy para ese intercambio. Unha solicitude HTTPS CONNECT e unha solicitude de orixe común poden ter valores de host distintos. Confirma o comportamento da implementación instalada en lugar de supor que o setter do nome do servizo fornece o fluxo 407 completo.
Para un 407, inspecciona o intercambio de autenticación do proxy e o host que utilizou esa solicitude. Un 401 pertence á autenticación de orixe. Un ticket de usuario válido por si só non demostra que Jetty solicitase o ticket de servizo correcto nin que o intermediario o aceptase.