gpt4 book ai didi

java - 来自 Linux 客户端的请求出现 SPNEGO/Kerberos No credential found 错误

转载 作者:IT王子 更新时间:2023-10-29 01:26:46 26 4
gpt4 key购买 nike

我目前正在为客户实现基于 Java、Tomcat 和 Kerberos 的单点登录解决方案。用户将从他们的客户端浏览器访问 Intranet Tomcat 应用程序的 URL,Tomcat 应用程序通过 Kerberos 获取用户的凭据并将他们重定向到实际的 Web 应用程序。我们客户的环境是充当 KDC 的 Windows AD 服务器和 Linux Tomcat 应用程序服务器的典型混合体。 SSO 功能应该可以从 Windows 和 Linux 客户端使用。这似乎与我在网上找到的大多数答案不同,在这些答案中,人们拥有 Linux Web 应用程序服务器但仅使用 Windows 客户端。

现在,在我的本地设置中,我遇到了一些奇怪的行为。我的开发环境是在 Windows 7 下从 MyEclipse 8.6 运行的 Tomcat 7.0.26。我的测试环境是在 Centos 6 机器上的 Apache Web 服务器后面的 Tomcat 7.0.26 或 7.0.53。我已经正确设置了 AD 服务器,生成了必要的 key 表文件等,一切都在开发环境中顺利运行。我可以使用 IE 和 Firefox 从 Linux 和 Windows 客户端访问 Tomcat 应用程序,Kerberos 身份验证继续进行,我得到正确的重定向。

在测试服务器上部署 Tomcat 应用程序时,这会在尝试从 Windows 客户端登录时继续工作。但是,当我尝试从 Linux 客户端访问测试服务器时(我已从 Linux Mint 13 和 Ubuntu 13.10 尝试过),出现以下错误:

javax.servlet.ServletException: GSSException: No credential found for: 1.3.6.1.5.2.51.3.6.1.5.2.5 usage: Accept net.sourceforge.spnego.SpnegoHttpFilter.doFilter(SpnegoHttpFilter.java:233)

我不得不承认我没有正确理解这条消息。它是否表明客户端提供的凭据存在问题或应用程序服务器与 KDC 协商存在问题?我对这个问题做了一些研究,发现指示的 oid 1.3.6.1.5.2.5 代表 GSS_IAKERB_MECHANISM 而不是我觉得很奇怪的 GSS_KRB5_MECHANISM 或 GS​​S_SPNEGO_MECHANISM。此外,似乎没有其他人遇到完全相同的问题。

我曾尝试从 MIT Kerberos 切换到 Heimdal Kerberos 并返回。我试过Firefox和Chromium,在我切换Tomcat 7.0.26和7.0.53的应用服务器上,问题依然存在。我使用的是最新的 spnego.jar。

现在:从 Linux 调用在 Windows 开发机器上运行的 Tomcat 成功,从 Linux 客户端调用 Linux 应用程序服务器失败,并在两种浏览器中显示相同的错误消息。

对此有什么想法吗?

最佳答案

GSS_IAKERB_MECHANISM 表示客户端无法确定 realm/kdc 来创建服务票证,并要求服务器充当目标 KDC 的中间人。检查 Wireshark 流量。您现在的任务是分析为什么客户端无法为该 SPN 创建服务票证。我在带有 Microsoft KDC 的 FreeBSD 上的 Heimdal 上观察到了这个问题。

所以问题不在于您的 Tomcat 实例。

关于java - 来自 Linux 客户端的请求出现 SPNEGO/Kerberos No credential found 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23759016/

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