2016-07-14 151 views
2

我使用apache http客戶端進行Kerberos身份驗證。我有以下問題: 根據請求,服務器發出的401個廣告200響應需要90到300秒之間。Apache Http客戶端4.5.2 Kerberos身份驗證時間太長

我試圖設置連接超時,套接字超時和連接管理器超時沒有任何結果。

Wireshark的告訴我下面的:從服務器

後401響應:

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

-- break between 90 to 300 seconds -- 

client -> GET url 
server -> RST 

從這裏開始的200應答,一切就OK了。我不明白爲什麼apache http客戶端不關閉連接並重新打開一個新連接,爲什麼需要這麼長時間?

任何幫助將不勝感激。

更新: 有更多的KDC服務器,並不是每個人都可用,延遲的原因是max_retries 3,每個請求超時30秒。 我試圖配置krb5.conf文件,但似乎Kerberos不考慮這個問題:

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

必須閱讀:https://steveloughran.gitbooks.io/kerberos_and_hadoop/content/sections/errors.html >>瘋狂猜測:您的問題可能與UDP連接無法到達KDC有關,請嘗試使用TCP。 .. –

回答

1

我已經啓用了Kerberos的登錄(重定向的System.out和System.err到文件) - 和發現並非所有的KDC都會對我的客戶做出迴應,因此沒有迴應的人在30秒內延遲了迴應。 x 3次嘗試= 90秒。每個沒有響應的KDC。

解決了在配置文件中設置:

max_retries = 1 kdc_timeout = 1500 (milliseconds)

更新:路徑在Kerberos配置文件是URI格式,沒有工作,所以我使用絕對路徑。