¿Alguien sabe si un cliente Java 6 que se ejecuta en Windows puede autenticarse a través de NTLM al acceder a un servidor Microsoft que implementa el protocolo de autenticación SPNEGO?Autenticación HTTP "Negociar" a través de NTLM desde un cliente Java SE6 en Windows
Tengo entendido que Java 6 que se ejecuta en Windows tiene soporte integrado para SPNEGO, pero parece que la implementación de Java no intenta la autenticación NTLM en el caso de que la autenticación kerberos no sea posible. El Authenticator ejemplo proporcionado en los documentos de Sun falla con un error 401 no autorizado en respuesta al servidor que envía WWW-Authenticate: Negocie.
Aquí se presenta una descripción del entorno de prueba:
servidor de destino:
- de Windows servidor independiente R2 2008 (no forma parte del dominio de AD)
- servicio SOAP Microsoft implementa utilizando WCF
- WCF está configurado para la autenticación SPNEGO (kerberos y NTLM)
- El servidor WCF no puede ser reconfigurado gurada para apoyar a otros modos de autenticación :(
equipo cliente:
- Windows 7 de 64 bits estación de trabajo independiente (no forma parte de un dominio)
- cliente Java SE6 ejecutar el ejemplo Sun SPNEGO
El objetivo final es utilizar Apache CXF 2.4.0 para invocar servicios SOAP en el servidor WCF. Antes de agregar las complejidades de CXF y SOAP, he tratado de recuperar el WSDL del servidor utilizando una sencilla aplicación de prueba de Java para resolver los problemas de autenticación.
FWIW - Puedo acceder al servidor WCF desde IE utilizando el inicio de sesión del administrador local para el servidor Windows. También pude crear un cliente SOAP Delphi XE sin ninguna configuración de autorización especial. El cliente Delphi SOAP usa WinInet bajo el capó.
¿Alguna vez resolvió su problema? –
@David Brossard - Sí, conseguimos que las cosas funcionen. La advertencia de nuestra solución era que la funcionalidad auth Java nativa tenía problemas cuando se ejecutaba como un servicio de Windows a menos que se utilizara una cuenta de servicio. Más recientemente, comenzamos a utilizar el cliente HTTP de Apache, que tiene soporte de autenticación de NTLMv2. Le tomó un poco de delicadeza para que funcione, pero ha demostrado ser confiable en el uso de la producción pesada. –
Gracias! Buscaré en el cliente Apache entonces. Mi gato se está ejecutando como el servicio de Windows, así que es bueno –