標準の 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 が使用している資格情報をリセットまたは変更する方法はありますか?