¿Por qué recibo un GSSException cuando se utiliza Active Directory SSO de Microsoft Internet Explorer a un servidor Java?
-
21-09-2019 - |
Pregunta
yo estaba construyendo un Active Directory de sesión único sistema de autenticación para aplicaciones web Java (usando SPNEGO / Kerberos), y todo bien funciona con Firefox o (se dice) Safari, pero Internet Explorer provoca una excepción:
GSSException: Channel binding mismatch (Mechanism level: ChannelBinding not provided!)
De hecho, pensé IE trabajó antes de instalar un parche de Windows.
Solución
Al parecer, Microsoft IE parche KB974455 activar "la protección ampliada" para la autenticación integrada de Windows. Normalmente, la autenticación SPNEGO / Kerberos, la máquina cliente adquiere un billete Directorio de Kerberos / activo para el servidor y presenta este vale durante la negociación de autenticación HTTP. A partir de al menos Java 1.6, la biblioteca JGSS-API Java es capaz de interpretar la negociación SPNEGO / Kerberos y la autenticación del billete.
Con la protección ampliada (véase también protección ampliada para la autenticación ), es decir, añade un enlace a la negociación SPNEGO canal; qué datos se basa en la unión de canal es actualmente desconocido para mí, aparte de que el identificador de sesión SSL parece ser parte de ella. Los intentos de la biblioteca JGSS-API Java para validar la unión de canales y Canno sin los datos de la unión se basa en. A continuación, inicia la excepción desajuste de unión de canal.
La cuestión ha resultado en href="http://forums.sdn.sap.com/thread.jspa?messageID=8423539" rel="noreferrer"> internet tráfico , incluyendo Sun Bug ID 6851973 .
De acuerdo con los comentarios asociados a 6851973, RFC 4121 , dice:
Si la persona que llama a GSS_Accept_sec_context [RFC2743] pasa en GSS_C_NO_CHANNEL_BINDINGS [RFC2744] como los enlaces de canal, entonces la aceptor pueden ignorar cualquier canal encuadernaciones suministrados por el iniciador, regresar éxito, incluso si el iniciador fue aprobada en el canal encuadernaciones.
y "todos los principales ejecutores krb5 implementan esta 'MAYO'". JGSS parece estar requiriendo el aceptor para proporcionar la unión si el iniciador se presentándolo canal. Además, la revisión está disponible en Java 7, 64 y de construcción será posterior portado a Java 5 y 6, aunque el Java 6u18 no parecen tener como informó en 6.851.973.
Una solución alternativa como se ve en la protección ampliada para la autenticación es establecer el
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA\SuppressExtendedProtection
configuración del registro de 0x02. Esto desactiva la protección ampliada.