【问题标题】:Apache Http Client 4.5.2 Kerberos authentication takes too longApache Http Client 4.5.2 Kerberos 身份验证耗时过长
【发布时间】:2016-08-06 19:20:41
【问题描述】:

我使用 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

【问题讨论】:

标签: java kerberos apache-httpclient-4.x


【解决方案1】:

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

通过在配置文件中设置解决:

max_retries = 1 kdc_timeout = 1500 (milliseconds)

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

【讨论】:

    猜你喜欢
    • 2017-06-28
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    • 2019-06-25
    • 2014-06-12
    相关资源
    最近更新 更多