표준 Java API (java.net.URLConnection)를 사용하여 HTTP 서버에 액세스하면 첫 번째 성공적인 인증 후에 자격 증명이 "캐시 됨" , 이후의 Authenticator.setDefault()의 호출은 아무런 효과가 없습니다. 따라서 다른 자격 증명을 사용하려면 응용 프로그램을 다시 시작해야합니다.java.net.URLConnection을 사용하여 한 세션에서 다른 NTLM 자격 증명으로 인증 할 수 없음
기본 인증을 사용할 때이 현상이 나타나지 않습니다. 그러나 NTLMv2를 지원하지 않기 때문에 자카르타 커먼즈 HttpClient가 대안이되지 않습니다. (http://oaklandsoftware.com/papers/ntlm.html 참조)
Wireshark를 사용하여 패킷을 보면, 첫 번째 성공적인 인증 전에 현재 Windows 자격 증명을 사용한 인증이 먼저 시도됩니다. 그러나 성공적인 인증 후에는 저장된 자격 증명 만 사용됩니다.
성공적인 NTLM 인증 후 java.net.Authenticator가 사용하는 자격 증명을 재설정하거나 변경하는 방법이 있습니까?
ndn, 이것에 관해 무엇인가 발견 할 수 있었느냐? 서로 다른 자격 증명을 사용하기 위해 서로 다른 연결이 필요한 프록시를 구현할 때 유사한 문제가 발생합니다. "시스템/사용자 자격 증명을 기본적으로 사용하지 마십시오"라는 어딘가의 설정이 있어야합니다. 내가 뭔가를 찾으면 계속 게시 할 것입니다. –
http://java.sun.com/javase/6/docs/technotes/guides/net/http-auth.html에 따르면 "Microsoft Windows 플랫폼에서 NTLM 인증은 메시지를 표시하지 않고 시스템에서 사용자 자격 증명을 획득하려고 시도합니다 사용자의 인증 자 객체. 이러한 자격 증명이 서버에 의해 수락되지 않으면 사용자의 인증자가 호출됩니다. " – ndeuma