- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我们正在使用 Apache HttpClient 库连接到受 Kerberos 保护的 REST 端点,该端点位于为多个应用程序提供服务的负载平衡器之后,因此正向和反向 DNS 查找结果不匹配。
虽然我们可以通过在 krb5.conf 文件中设置 rdns=false 来使用 cURL 成功建立经过身份验证的 session ,但在 Java 中似乎不可能这样做 - 它只是忽略此设置并始终执行反向 DNS 查找,其中由于不匹配,当然握手失败。
我没有找到关于此问题的太多信息,但我确实找到了这个打开的 Jira 项目,它解释了我们所看到的行为......但没有提供任何解决方法: https://bugs.openjdk.java.net/browse/JDK-8189361
到目前为止,我发现的唯一可行的解决方法是使用自定义名称服务提供程序来“劫持”反向 DNS 查找并返回所需的主机名。
这方面的信息也非常稀少,但我发现这篇大约 12 年前的博文似乎仍然有效(尽管感觉像是一个非常肮脏的 hack):
http://rkuzmik.blogspot.co.il/2006/08/local-managed-dns-java_11.html
但是感觉我可能在这里遗漏了一些东西,因为关于这个问题的信息似乎很少..
有没有其他人在使用 Java 执行 Kerberos 时遇到过禁用反向 DNS 查找的问题?如果是这样,您是如何解决这个问题的。
最佳答案
上周我在使用 VIP 时遇到了同样的错误,但反向 dns 返回给我物理服务器的 FQDN。不幸的是,我没有直接使用 HttpClient-4.5.1 库,而是在幕后使用它的软件;出于这个原因,我一直在寻找一种不涉及该软件源代码的解决方案。不幸的是,我确实进行了大量尝试(jvm spi.dns、jvm gss native、dnsjava.jar 等),但都没有成功。最后,“肮脏的解决方案”对我来说是重建 HttpClient jar,在其方法“String resolveCanonicalHostname(final String host)”上更改类“org.apache.http.impl.auth.GGSSchemeBase”。
对于一个可能的“好的解决方案”,我看到此类在其构造函数中直接接收参数“boolean useCanonicalHostname”,因此,如果您可以直接使用 HttpClient 库,则可能有一种方法可以将此参数设置为 false某处并将其向下传播到生成 kerberos 服务票证的此类(如果参数为 false,则不进行 rdns 检查,而是使用主机字符串)。
希望这个提示能帮到你。
BR
萨缪尔
关于Java + Kerberos - 禁用反向 DNS 查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48193268/
我已经开始配置 kerberos。 谁能解释我们在 krb5.conf 文件中设置的票证生命周期和更新生命周期。 ticket_lifetime = 2d renew_lifetime = 7d 是
kerberos 只加密身份验证过程还是所有客户端通信? 我的印象是它就像 LAN 的 VPN。 以便所有 LAN 通信都被加密。就像所有互联网通信都通过 VPN 加密一样。 问候奥布里 最佳答案 K
我试图弄清楚kerberos身份验证是如何工作的,但我发现的信息总是缺少一些东西,就好像其中的一部分被认为是理所当然的。我大致了解该过程,但缺少一些细节。 获取 TGT: 首先,用户应从 KDC 获取
是否可以进行可选的 kerberos 身份验证? 我想要的是:如果客户端(浏览器)不在域中,它被重定向到用户名/密码网络登录。否则它会做 SPNEGO 做 Kerberos 认证。 有什么解决办法吗?
目前正在寻找使用 AD 的联合服务器。首先想到的是使用 ADFS 来管理跨域和领域的服务请求。也就是说,应用程序必须有权访问特定用例的 Kerberos 票证。 AD FS 是否在任何时候使用 Ker
我们想通过 Polybase 将我们的 SQL Server 2016 Enterprise 与我们的 Kerberized OnPrem Hadoop-Cluster 和 Cloudera 5.14
哪个性能测试工具支持带有 Kerberos 身份验证的网页? 仅仅回退到 NTLM 的工具是不够的。 最佳答案 我做了一些研究,可用工具列表是: Visual Studio 2010 Load tes
据我了解, SPN 是 Windows 服务的身份验证工具。 Kerberos 是一个用户认证服务 SPNEGO-GSSAPI 是第三方 API能够使用这些服务。 SSPI:是发送的中立层从 SPNE
我知道中央身份验证服务(CAS)和Kerberos都可以用于对建立 session 进行身份验证。这两种协议(protocol)至少涉及三方,并且将创建票证授予票证持续时间身份验证,那么CAS之间有哪
是否可以进行可选的 kerberos 身份验证? 我想要的是:如果客户端(浏览器)不在域上,它将被重定向到用户名/密码 Web 登录。否则它将执行 SPNEGO 执行 Kerberos 身份验证。 如
在我的 Kerberos 系统中: 运行 kinit test并输入 passwd ,成功。 通过 kadmin.local -q "xst -k test.keytab test" 生成 key 表
如何从 NIFI 连接到启用 Kerberos 的 Kudu? 我只看到一个处理器可以访问 Kudu - PutKUDU 并且它不支持 Kerberos。我没有在网上看到任何有关使用 Kerberos
我正在处理与数据库的 kerberized 连接。我想我了解kerberization的基础知识。用户请求KDC的“Authentication Server”部分获取TGT(Ticket Grant
情况如下: 我在 Windows 7 上使用 MIT Kerberos 客户端 kfw 4.0.1 执行此操作。我正在通过 OpenVPN 连接到使用 Kerberos 5 保护的 YARN 集群。这
我在我的机器上使用 MIT kerberos 5 对用户进行身份验证。这会将票证授予用户。我想将票的 maxlife 重置超过 24 小时。默认情况下,kerberos 票证的最长生命周期为 24 小
我最近提出了一个问题,涉及我在让 MIT Kerberos 与 Microsoft 的 LSA 凭据缓存良好配合时遇到的一些问题。 有人告诉我,设置注册表项 AllowTGTSessionKey 应该
我确实有一个具有 KERBEROS 安全性的 Hadoop 集群和另一个没有 KERBEROS 的 Hadoop 集群。 我可以将文件从 KERBEROS hadoop 集群复制到非 KERBEROS
这来自 Kerberos 示例应用程序,位于 https://github.com/spring-projects/spring-security-kerberos/tree/master/sprin
我正在尝试在启用 Kerberos 身份验证的安全模式下设置单节点 Hadoop 集群,使用 hadoop-2.4.0和 jdk1.7.0_25 . 为此,我按照文档中的描述创建了 key 表文件。在
最近使用 Kerberos 安装 samba 共享停止工作。在另一台服务器上具有相同挂载选项的相同共享有效。所以我假设我们的 DNS 设置和/或 Active Directory 设置没有任何问题。似
我是一名优秀的程序员,十分优秀!