为什么我得到一个GSSException时使用主动目录SSO从Microsoft即Java服务器?
-
21-09-2019 - |
题
我是建设一个活跃的目录单签名认证系统,用于Java网应用程序(使用可/Kerberos),一切工作的现有Firefox或(据报告)野生动物园,但Internet Explorer导致一个例外:
GSSException: Channel binding mismatch (Mechanism level: ChannelBinding not provided!)
事实上,我认为即工作之前的一个窗修补。
解决方案
显然,Microsoft即补KB974455启用的"延伸的保护"综合窗户身份验证。通常情况下,有可/Kerberos身份验证,客户机获取Kerberos/活动目录的票服务器,并提出了这张票在HTTP身份验证协商。截至少Java1.6,Java JGSS-API图书馆能够解释的可/Kerberos谈判和进行认证的机票。
与 扩展保护 (也请参看 扩展保护身份验证),即增加了一个通道结合到的可谈判;什么样的数据通道结合是基于目前未知我,比其他SSL届会议的标识看来是它的一部分。Java JGSS-API图书馆尝试验通道结合和特色无数据结合为基础。然后它引发的通道结合不匹配的例外。
这个问题已导致 一些 互联网 交通, 包括 太阳错误ID6851973.
根据相关联的评论与6851973, RFC4121, 说:
如果叫GSS_Accept_sec_context[RFC2743]通过在 GSS_C_NO_CHANNEL_BINDINGS[RFC2744]作为道绑定,然后 受可能忽视任何道绑定提供的发起者, 返回的成功,甚至如果发起者并通过通道绑定。
和"所有主要krb5实现实施这种'可能'".JGSS似乎是需要接受体提供的通道结合如果发起者提出的。另外,修复提供Java7,建造64和将向后移植到Java5和6,虽然Java6u18 不不 看来它为报告中6851973.
一个工作周围中可以看到 扩展保护身份验证 是要设置
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA\SuppressExtendedProtection
注册处设定为0x02。这将禁止扩大保护。
不隶属于 StackOverflow