Apache Http Client 4.5.2 Kerberos身份验证需要很长时间

时间:2016-07-14 22:15:53

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

我使用apache http客户端进行Kerberos身份验证。我有以下问题: 在服务器的401 ad 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

1 个答案:

答案 0 :(得分:1)

我启用了Kerberos-Logging(将System.out和System.err重定向到文件中) - 并发现并非所有KDC都响应我的客户端,因此没有响应的KDC会以30秒的速度延迟响应。 x 3次尝试= 90秒。没有回应KDC。

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

RewriteEngine On RewriteRule ^([^.]+)\.html$ view_product.php?product=$1 [L,QSA,NC]

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