Pourquoi dois-je obtenir un GSSException lors de l'utilisation d'Active Directory SSO de Microsoft IE à un serveur Java?

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

Question

Je construisais un Active Directory authentification unique système d'authentification pour les applications Web Java (en utilisant SPNEGO / Kerberos), et tout fonctionne bien avec soit Firefox ou (aurait) Safari, mais Internet Explorer provoque une exception:

GSSException: Channel binding mismatch (Mechanism level: ChannelBinding not provided!)

En fait, je pensais que IE a travaillé avant qu'un correctif Windows a été installé.

Était-ce utile?

La solution

Apparemment, correctif Microsoft IE KB974455 activé "Protection étendue" pour l'authentification intégrée de Windows. Normalement, avec l'authentification SPNEGO / Kerberos, la machine client reçoit un ticket Kerberos / Active Directory pour le serveur et présente ce ticket lors de la négociation d'authentification HTTP. En d'au moins Java 1.6, la bibliothèque Java JGSS-API est capable d'interpréter la négociation SPNEGO / Kerberos et l'authentification du ticket.

Protection étendue (voir aussi Protection étendue de l'authentification ), IE ajoute un canal de liaison à la négociation SPNEGO; les données du canal de liaison est basée sur est actuellement inconnu pour moi, autre que l'identifiant de session SSL semble faire partie. Les tentatives Java de la bibliothèque JGSS-API pour valider le canal de liaison et Caho sans les données de la liaison est basée. Il jette alors l'exception de non-concordance de liaison canal.

La question a donné lieu à une Internet trafic , y compris Sun BugID 6851973 .

D'après les commentaires associés à 6851973, RFC 4121 , dit,

Si l'appelant à GSS_Accept_sec_context [RFC2743] passe    GSS_C_NO_CHANNEL_BINDINGS [RFC2744] comme les liaisons de canal, puis le    accepteur PEUT ignorer les liaisons de canal fournis par l'initiateur,    le succès de retour, même si l'initiateur ne passe dans les liaisons de canal.

et « tous les principaux implementors krb5 mettre en œuvre cette« MAI ». JGSS semble exiger l'accepteur de fournir la liaison de canal si l'initiateur est le présente. En outre, le correctif est disponible en Java 7, construire 64 et sera backportées à Java 5 et 6, bien que Java 6u18 ne pas semblent avoir comme rapporté dans 6851973.

Un travail autour comme on le voit dans Protection étendue de l'authentification consiste à définir la

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA\SuppressExtendedProtection

paramètre de registre à 0x02. Cela désactive la protection étendue.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top