gpt4 book ai didi

java - 使用从 Microsoft IE 到 Java 服务器的 Active Directory SSO 时,为什么会出现 GSSException?

转载 作者:行者123 更新时间:2023-11-30 06:38:52 25 4
gpt4 key购买 nike

我正在为 Java Web 应用程序(使用 SPNEGO/Kerberos)构建一个 Active Directory 单点登录身份验证系统,并且在 Firefox 或(据报道)Safari 上一切正常,但 Internet Explorer 导致异常:

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

事实上,我认为 IE 在安装 Windows 补丁之前就可以正常工作了。

最佳答案

显然,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 将 channel 绑定(bind)添加到 SPNEGO 协商; channel 绑定(bind)所基于的数据目前对我来说是未知的,除了 SSL session 标识符似乎是其中的一部分。 Java JGSS-API 库尝试验证 channel 绑定(bind),并且不能在没有绑定(bind)所基于的数据的情况下进行验证。然后它抛出 channel 绑定(bind)不匹配异常。

该问题已导致 some internet traffic , 包括 Sun Bug ID 6851973 .

根据与 6851973 相关的评论,RFC 4121 , 说,

If the caller to GSS_Accept_sec_context [RFC2743] passes in GSS_C_NO_CHANNEL_BINDINGS [RFC2744] as the channel bindings, then the acceptor MAY ignore any channel bindings supplied by the initiator, returning success even if the initiator did pass in channel bindings.

和“所有主要的 krb5 实现者都实现了这个‘可能’”。 JGSS 似乎要求接受者在发起者提供 channel 绑定(bind)时提供它。此外,该修复程序在 Java 7 build 64 中可用,并将返回移植到 Java 5 和 6,尽管 Java 6u18 没有如 6851973 中所报告的那样具有它。

Extended Protection for Authentication 中所示的解决方法是设置

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA\SuppressExtendedProtection

注册表设置为 0x02。这会禁用扩展保护。

关于java - 使用从 Microsoft IE 到 Java 服务器的 Active Directory SSO 时,为什么会出现 GSSException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1785199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com