gpt4 book ai didi

Java + Kerberos - 禁用反向 DNS 查找

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:01:58 26 4
gpt4 key购买 nike

我们正在使用 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/

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