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.

Artigos relacionados