Perché ricevo un GSSException quando si utilizza Active Directory SSO da Microsoft IE per Java server?

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

Domanda

Stavo costruendo un Active Directory Single Sign-On sistema di autenticazione per le applicazioni web Java (utilizzando SPNEGO/Kerberos), e tutto funziona bene sia con Firefox o (pare) di Safari, ma Internet Explorer genera un'eccezione:

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

Infatti, ho pensato IE lavorato prima di una patch di Windows è stato installato.

È stato utile?

Soluzione

A quanto pare, Microsoft IE patch KB974455 attivata la Protezione Estesa" per l'Autenticazione Integrata di Windows.Normalmente, con SPNEGO/Kerberos per l'autenticazione, il client macchina acquisisce una Kerberos/Active Directory biglietto per il server e presenta il biglietto durante l'autenticazione HTTP di negoziazione.Di almeno Java 1.6, Java JGSS-libreria di API è in grado di interpretare il SPNEGO/Kerberos negoziazione e l'autenticazione del biglietto.

Con il Protezione Estesa (vedere anche La Protezione estesa per l'Autenticazione), CIOÈ aggiunge un canale vincolante per il SPNEGO negoziazione;quali dati l'associazione di canale è attualmente sconosciuto per me, oltre che la sessione SSL identificatore sembra essere parte di esso.Java JGSS-libreria di API tenta di convalidare l'associazione di canale e canno senza i dati che l'associazione si basa su.Si genera quindi l'associazione di canale non corrispondente eccezione.

La questione ha provocato alcuni internet traffico, tra cui Sole Bug ID 6851973.

Secondo i commenti associati con 6851973, RFC 4121, dice,

Se il chiamante GSS_Accept_sec_context [RFC2743] passa in GSS_C_NO_CHANNEL_BINDINGS [RFC2744] come le associazioni di canale, quindi il accettore PUÒ ignorare eventuali associazioni di canale forniti dal promotore, tornando successo, anche se il promotore ha fatto passare in associazioni di canale.

e "tutti i principali krb5 implementors implementare questo 'PUÒ'".JGSS sembra che richiedono l'accettore di fornire il canale vincolante se il promotore presenta.Inoltre, la correzione è disponibile in Java 7, build a 64 e sarà di nuovo porting di Java 5 e 6, anche se il Java 6u18 non appaiono come riportato in 6851973.

Un work-around come si è visto in La Protezione estesa per l'Autenticazione è per impostare il

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA\SuppressExtendedProtection

impostazione del registro di sistema per 0x02.Questo disabilita la Protezione Estesa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top