當我使用標準Java API(java.net.URLConnection)訪問HTTP服務器時,憑據在第一次成功身份驗證後「緩存」 ,並且對Authenticator.setDefault()的後續調用不起作用。所以,我需要重新啓動應用程序才能使用不同的憑據。無法在使用java.net.URLConnection的一個會話中使用不同的NTLM憑證進行身份驗證
當使用基本身份驗證時,我不會觀察到這種效果。但我需要使用NTLM作爲我正在訪問的服務器,並且Jakarta Commons HttpClient不是替代方案,因爲它不支持NTLMv2(請參閱http://oaklandsoftware.com/papers/ntlm.html)
使用Wireshark查看數據包時,我還觀察到在第一次成功認證之前,首先嚐試使用當前Windows憑據進行認證。但是,在成功認證之後,僅使用保存的憑證。
是否有任何方法重置或更改憑證java.net.Authenticator在成功的NTLM身份驗證之後使用?
ndn,你能找到這個嗎? 在實現需要不同連接以使用不同憑證的代理時遇到類似問題。應該有一個設置指定「不要使用系統/用戶憑據默認」的地方。 如果我找到了某些東西,我會盡快發佈。 – 2010-02-23 04:42:04
http://java.sun.com/javase/6/docs/technotes/guides/net/http-auth.html說 「在Microsoft Windows平臺上,NTLM身份驗證嘗試從系統獲取用戶憑據而不提示用戶的身份驗證器對象,如果服務器不接受這些憑據,那麼將調用用戶的身份驗證器。「 – ndeuma 2010-02-26 16:28:16