Warum erhalte ich eine GSSException, wenn Sie Active Directory SSO von Microsoft IE an einen Java-server?

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

Frage

Ich war der Bau einer Active Directory Single-Sign-On-Authentifizierung für web-Anwendungen in Java (mit SPNEGO/Kerberos), und alles funktioniert gut mit entweder Firefox oder der (angeblich), Safari, Internet Explorer aber eine Ausnahme verursacht:

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

In der Tat, ich dachte, DH arbeitete, bevor Sie einen Windows-patch installiert wurde.

War es hilfreich?

Lösung

Offenbar, Microsoft IE patch KB974455 aktiviert "Erweiterter Schutz" für die Integrierte Windows-Authentifizierung.Normalerweise, mit SPNEGO/Kerberos Authentifizierung der client-Computer erhält eine Kerberos/Active Directory-ticket für den server und stellt dieses ticket während der HTTP-Authentifizierung Verhandlung.Als mindestens Java 1.6, Java JGSS-API-Bibliothek ist in der Lage, die Interpretation der SPNEGO/Kerberos Aushandlung und Authentifizierung das ticket.

Mit der Erweiterter Schutz (siehe auch Erweiterter Schutz für die Authentifizierung), IE fügt einen Kanal Bindung an die SPNEGO-Verhandlung;welche Daten die Kanal-Bindung basiert auf derzeit ist mir unbekannt, außer, dass die SSL-Sitzungs-id scheint ein Teil davon zu sein.Die Java-JGSS-API-Bibliothek zu überprüfen versucht, die Kanal-Bindung und canno ohne das die Daten, die Bindung basiert.Es wirft dann die Kanal-Bindung mismatch Ausnahme.

Das Problem hat dazu geführt, in einige internet Verkehr, einschließlich Sun Bug ID 6851973.

Nach Aussagen im Zusammenhang mit 6851973, RFC 4121, sagt,

Wenn der Anrufer GSS_Accept_sec_context [RFC2743] geht in GSS_C_NO_CHANNEL_BINDINGS [RFC2744] da der Kanal Bindungen, dann die acceptor ignorieren KANN, alle channel Bindungen geliefert, die vom initiator, success selbst wenn der initiator bestanden hast in channel-Bindungen.

und "alle wichtigen krb5 implementors Umsetzung dieses 'KANN'".JGSS scheint zu sein, dass der Akzeptor zu bieten, die Kanal-Bindung, wenn der initiator ist, es darzustellen.Weiter, die Lösung ist in Java 7, build 64 und wird zurück geportet zu Java 5 und 6, obwohl die Java-6u18 nicht offenbar haben es-wie berichtet-in 6851973.

Ein work-around, wie in Erweiterter Schutz für die Authentifizierung zum einstellen der

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA\SuppressExtendedProtection

registry-Einstellung, um 0x02.Dies deaktiviert den Erweiterten Schutz.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top