2

Java Web アプリケーション (SPNEGO/Kerberos を使用) 用の Active Directory シングル サインオン認証システムを構築していましたが、すべてが Firefox または (報告によると) Safari で正常に動作しますが、Internet Explorer では例外が発生します。

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

実際、Windows のパッチがインストールされる前は、IE は機能していると思っていました。

4

1 に答える 1

5

Microsoft IE パッチ KB974455 により、統合 Windows 認証の「拡張保護」が有効になったようです。通常、SPNEGO/Kerberos 認証では、クライアント マシンはサーバーの Kerberos/Active Directory チケットを取得し、HTTP 認証ネゴシエーション中にこのチケットを提示します。少なくとも Java 1.6 では、Java JGSS-API ライブラリは SPNEGO/Kerberos ネゴシエーションを解釈し、チケットを認証できます。

Extended Protection ( Extended Protection for Authenticationも参照) を使用すると、IE は SPNEGO ネゴシエーションにチャネル バインディングを追加します。SSLセッション識別子がその一部であるように見えることを除いて、チャネルバインディングがどのデータに基づいているかは現在不明です。Java JGSS-API ライブラリは、チャネル バインディングの検証を試みますが、バインディングの基になっているデータがないと検証できません。次に、チャネル バインディングの不一致例外をスローします。

この問題により、Sun Bug ID 6851973を含む一部の インターネット トラフィックが発生しました。

6851973 に関連するコメントによると、RFC 4121は次のように述べています。

GSS_Accept_sec_context [RFC2743] の呼び出し元が GSS_C_NO_CHANNEL_BINDINGS [RFC2744] をチャネル バインディングとして渡す場合、アクセプタは、イニシエータがチャネル バインディングを渡した場合でも、イニシエータによって提供されたチャネル バインディングを無視してもよい[MAY]。

および「すべての主要な krb5 実装者がこの 'MAY' を実装します」。JGSS は、イニシエーターがチャネル バインディングを提示している場合、アクセプターがチャネル バインディングを提供することを要求しているようです。さらに、この修正は Java 7、ビルド 64 で利用可能であり、Java 5 および 6 に移植される予定ですが、6851973 で報告されているように、Java 6u18 には修正が含まれていないようです。

認証の拡張保護に見られる回避策は、

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA\SuppressExtendedProtection

レジストリ設定を 0x02 にします。これにより、拡張保護が無効になります。

于 2009-11-23T19:21:34.320 に答える