Не удается аутентифицироваться с разными учетными данными NTLM в одном сеансе с java.net.URLConnection - PullRequest
4 голосов
/ 05 февраля 2010

Когда я получаю доступ к HTTP-серверу с использованием стандартного API Java (java.net.URLConnection), учетные данные «кэшируются» после первой успешной аутентификации, и последующие вызовы Authenticator.setDefault () не действуют. Итак, мне нужно перезапустить приложение, чтобы использовать разные учетные данные.

Я не наблюдаю этот эффект при использовании базовой аутентификации. Но мне нужно использовать NTLM для сервера, к которому я обращаюсь, и HttpClient от Jakarta Commons также не является альтернативой, потому что он не поддерживает NTLMv2 (см. http://oaklandsoftware.com/papers/ntlm.html)

Глядя на пакеты, использующие Wireshark, я также замечаю, что перед первой успешной аутентификацией сначала выполняется попытка аутентификации с текущими учетными данными Windows. Но после успешной аутентификации используются только сохраненные учетные данные.

Есть ли способ сбросить или изменить учетные данные, которые использует java.net.Authenticator после успешной аутентификации NTLM?

Ответы [ 2 ]

3 голосов
/ 10 июня 2010

Неа

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

указывает, что это выдающаяся ошибка. Автор там предлагает некоторую противную магию отражения, чтобы преодолеть это. Это нормально, пока это внутри компании и задокументировано как хрупкое и потенциально разрушительное. Конечно, не велик

1 голос
/ 27 мая 2010

Может ли HttpClient 4.x + jCIFS 1.3.x быть альтернативой?

...