Проверка подлинности NTLM и ServerXMLHTTP на 64-разрядной Windows Server 2008? - PullRequest
2 голосов
/ 19 мая 2011

У меня есть программа VB6, работающая на Windows Server 2003 (32-разрядная версия), которая использует объект Microsoft ServerXMLHTTP для установления HTTP-подключения к веб-службе с использованием проверки подлинности NTLM. Чтобы заставить аутентификацию работать, я должен настроить прокси winhttp для помещения сервера назначения в список обхода прокси, выполнив

proxycfg -p proxy-server dest-web-server

в командной строке.

Выполнение этого при каждом вызове веб-службы приводит к 3 HTTP-вызовам веб-сервера, поскольку объект ServerXMLHTTP сначала пытается выполнить анонимный доступ, а затем 2 вызова, чтобы выполнить проверку подлинности NTLM. Это все нормально и ожидаемо.

После переноса программы в Windows Server 2008 (64-разрядная версия) и использования эквивалентного параметра прокси в командной строке

netsh winhttp set proxy proxy-server="proxy-server" bypass-list="dest-web-server"

аутентификация NTLM больше не работает. Журналы веб-сервера показывают, что объект ServerXMLHTTP только устанавливает одно анонимное HTTP-соединение и возвращает ответ 401, и никогда не пытается NTLM-аутентификацию.

1 Ответ

3 голосов
/ 19 мая 2011

Ключом к решению является то, что программа перешла с 32-разрядного сервера на 64-разрядный сервер. Существуют отдельные настройки winhttp для 32-битных и 64-битных программ.

Для повторной аутентификации мне нужно было открыть 32-битную командную строку "c: \ windows \ SysWOW64 \ cmd.exe" и запустить оттуда утилиту настройки прокси-сервера netsh.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...