Кто-нибудь знает, способен ли клиент Java 6, работающий в Windows, проходить аутентификацию через NTLM при доступе к серверу Microsoft, который реализует протокол аутентификации SPNEGO?
Насколько я понимаю, Java 6, работающая в Windows, имеет встроенную поддержку SPNEGO, но, похоже, реализация Java не пытается выполнить аутентификацию NTLM в случае, если аутентификация kerberos невозможна.Пример Authenticator , представленный в документации Sun, завершается с ошибкой 401 Unauthorized в ответ на отправку сервером WWW-Authenticate: Negotiate .
Вот описание тестовой среды:
Целевой сервер:
- Автономный сервер Windows 2008 R2 (не является частью домена AD))
- Служба Microsoft SOAP, реализованная с использованием WCF
- WCF настроен для аутентификации SPNEGO (kerberos и NTLM)
- Сервер WCF не может быть перенастроен для поддержки других режимов аутентификации: (
Клиентский компьютер:
- 64-разрядная автономная рабочая станция Windows 7 (не входит в домен)
- Клиент Java SE6, на котором выполняетсяПример Sun SPNEGO
Конечная цель - использовать Apache CXF 2.4.0 для вызова служб SOAP на сервере WCF. Перед добавлением сложностей CXF и SOAP я пытался получить WSDL изсервер с помощью простого Java тестовое приложение для решения проблем аутентификации.
FWIW - я могу получить доступ к серверу WCF из IE, используя локальный логин администратора для сервера Windows.Я также смог создать клиент Delphi XE SOAP без какой-либо специальной конфигурации авторизации.SOAP-клиент Delphi использует WinInet под капотом.