¿Por qué recibo un GSSException cuando se utiliza Active Directory SSO de Microsoft Internet Explorer a un servidor Java?

StackOverflow https://stackoverflow.com/questions/1785199

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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top