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 格式,这不起作用,所以我使用绝对路径。
我使用 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 格式,这不起作用,所以我使用绝对路径。