2010-02-05 2 views
4

표준 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가 사용하는 자격 증명을 재설정하거나 변경하는 방법이 있습니까?

+0

ndn, 이것에 관해 무엇인가 발견 할 수 있었느냐? 서로 다른 자격 증명을 사용하기 위해 서로 다른 연결이 필요한 프록시를 구현할 때 유사한 문제가 발생합니다. "시스템/사용자 자격 증명을 기본적으로 사용하지 마십시오"라는 어딘가의 설정이 있어야합니다. 내가 뭔가를 찾으면 계속 게시 할 것입니다. –

+1

http://java.sun.com/javase/6/docs/technotes/guides/net/http-auth.html에 따르면 "Microsoft Windows 플랫폼에서 NTLM 인증은 메시지를 표시하지 않고 시스템에서 사용자 자격 증명을 획득하려고 시도합니다 사용자의 인증 자 객체. 이러한 자격 증명이 서버에 의해 수락되지 않으면 사용자의 인증자가 호출됩니다. " – ndeuma

답변

3

아니

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6626700

는이 뛰어난 버그 나타낸다. 저기의 저자는 이것을 극복하기 위해 불쾌한 반사 마법을 제안합니다. 이것은 사내에 있으며 허약하고 잠재적으로 파괴 된 것으로 문서화되어있는 한 괜찮습니다. 틀림없이 위대한

관련 문제