Java-клиент для веб-службы SOAP с аутентификацией NTLM - PullRequest
5 голосов
/ 02 августа 2011

Я потратил много дней и ночей, пытаясь найти подходящую среду Java, которая могла бы подключаться к Microsoft Dynamics CRM, которая использует проверку подлинности Negotiate / NTLM.Я перепробовал все существующие предложения по Stackoverflow и другим ресурсам с JAX-WS, Axis2, CXF с различными обработчиками протокола HTTP.Никто из них не работал так, как ожидалось.В настоящее время лучшим подходом является Axis2 / commons-httpclient-3.1, где я могу отследить по крайней мере все три фазы с помощью дайджеста NTLM, однако целевой IIS все еще отказывается от аутентификации с 401 Unauthorized.Apache CXF - как со встроенной поддержкой Java6 NTLM, так и с помощью jCIFS, который некоторые люди предложили в качестве исправления, также не сработал, поскольку первый отказывает во втором ответе 401 (хотя он должен был отправить третий запрос, согласнопротокол), а последний пытается прочитать код ответа из пустого входного потока и терпит неудачу.

Итак, вопрос в том, удалось ли кому-нибудь овладеть веб-службой SOAP, защищенной NTLM, с платформы Java 6

Ответы [ 2 ]

1 голос
/ 08 августа 2011

Я надеялся, что кто-то другой присоединится, так как мои знания в этой области уже несколько лет и, возможно, не самый лучший совет - в частности, я работал только с commons-httpclient 3 и ни с одним из более новых пакетов, которыепообещайте правильно выполнять NTLM / NTLMv2.

Как вы, наверное, заметили, код аутентификации NTLM для commons-httpclient 3 поддерживает только NTLM, а не более новый протокол NTLMv2.Мое решение этой проблемы состояло в том, чтобы использовать commons-httpclient 3 и заменить код аутентификации NTLM решением, поддерживающим NTLMv2.К счастью, спецификацией NTLMv2 является , опубликованная Microsoft .Это, честно говоря, не страшно сложно реализовать, но, конечно, теперь вам нужно поддерживать себя, что может быть нежелательно по ряду причин.

0 голосов
/ 01 сентября 2011

Я забыл, так сказать, что я сам нашел решение. Подсказка состоит в том, чтобы заменить стандартный стек протоколов Java на Jespa + jCIFS и сделать небольшой патч для работы с JAX-WS.

...