Apache Http Client 4.5.2 Kerberos 身份验证耗时过长

Apache Http Client 4.5.2 Kerberos authentication takes too long

我使用 apache http 客户端进行 Kerberos 身份验证。我有以下问题: 在来自服务器的 401 广告和 200 响应之间需要 90 到 300 秒,具体取决于请求。

我尝试设置连接超时、套接字超时和连接管理器超时,但没有任何结果。

Wireshark 告诉我以下信息:

服务器 401 响应后:

client -> ACK
server -> FIN, ACK
client -> ACK

-- break between 90 to 300 seconds --

client -> GET url
server -> RST

从这里开始 200 响应,一切正常。我不明白为什么 apache http 客户端不关闭连接并重新打开一个新连接,为什么需要这么长时间?

如有任何帮助,我们将不胜感激。

更新: 有更多的 KDC 服务器,并不是每个人都可用,延迟的原因是 max_retries 3,每个请求超时 30 秒。 我尝试配置 krb5.conf 文件,但 Kerberos 似乎没有考虑到这一点:

[libdefaults]
...
kdc_timeout = 2000
max_retries = 1

我启用了 Kerberos 日志记录(将 System.out 和 System.err 重定向到一个文件中)- 发现并非所有 KDC 都响应我的客户端,因此未响应的 KDC 延迟了响应30秒。 x 3 次尝试 = 90 秒。根据未响应的 KDC。

在配置文件中设置解决:

max_retries = 1 kdc_timeout = 1500 (milliseconds)

更新:Kerberos 配置文件的路径是 URI 格式,这不起作用,所以我使用绝对路径。