[英]Can't authenticate with different NTLM credentials in one session with java.net.URLConnection
當我使用標准Java API(java.net.URLConnection)訪問HTTP服務器時,憑據在第一次成功驗證后被“緩存”,並且后續對Authenticator.setDefault()的調用無效。 因此,我需要重新啟動應用程序才能使用不同的憑據。
使用基本身份驗證時,我沒有觀察到此效果。 但我需要將NTLM用於我正在訪問的服務器,並且Jakarta Commons HttpClient也不是替代方案,因為它不支持NTLMv2(請參閱http://oaklandsoftware.com/papers/ntlm.html )
使用Wireshark查看數據包,我還發現在第一次成功驗證之前,首先嘗試使用當前Windows憑據進行身份驗證。 但在成功進行身份驗證后,僅使用已保存的憑據。
在成功進行NTLM身份驗證后,有沒有辦法重置或更改java.net.Authenticator正在使用的憑據?
不
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6626700
表明這是一個突出的bug。 那里的一位作者提出了一些令人討厭的反思魔法來克服這個問題。 只要這是內部的並且記錄為脆弱且可能破壞,那就沒問題。 當然不是很好
HttpClient 4.x + jCIFS 1.3.x可以替代嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.