Kerberos auth与java在外部网络上超时

问题描述 投票:0回答:1

我按照这篇文章创建了一个用于测试kerberos身份验证的java程序:https://docs.oracle.com/javase/jndi/tutorial/ldap/security/gssapi.html

我唯一改变的是配置文件。

当我将Windows客户端的DNS设置指向我的内部Windows DNS / Curb服务器时,该程序工作正常,但是当我使用单独的公共DNS服务器时它会超时,即使:1。我的内部服务器有端口tcp / udp 88打开2.我的外部服务器需要SRV记录(端口88上的_kerberos._tcp和_kerberos._udp)3。我可以使用不使用我的Windows服务器的iPad,使用和不使用用户证书来实现kerberos身份验证DNS

iPad和我的其他客户都使用相同的网络(我的家庭wifi),我也尝试通过手机共享数据连接。

鉴于上面的#3以及java程序使用我的内部DNS的客户端的事实,我有点困惑为什么我的java程序在两种情况下都不起作用(即使用内部或外部DNS服务器) 。

你有什么建议吗?

java kerberos
1个回答
1
投票

从GitBook Hadoop和Kerberos:门外的疯狂部分Error Messages to Fear

切换Kerberos使用TCP而不是UDP会使[一些奇怪的问题]消失...... 注意UDP也是很慢的超时... Kerberos在超时前等待~90秒,这是很长一段时间才注意到有问题......

/etc/krb5.conf

[libdefaults]
  udp_preference_limit = 1

PS:“超时前约90秒”可特指Java-specific defaults

kdc_timeout = 30000
max_retries = 3


Generally speaking, UDP seems to be a root cause for many weird Kerberos issues, cf. How to save Kerberos Service Ticket using a Windows Java client? for instance.
Disabling it systematically might be a "good practise".
© www.soinside.com 2019 - 2024. All rights reserved.