У меня есть программа 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-аутентификацию.