В нашем PHP-приложении нам нужно встроенное PHP-расширение, которое поддерживает следующие функции:
- WinSSL (доступ к хранилищу сертификатов Windows)
- NTLM, базовая и дайджест-аутентификация
- HTTP / 2 поддержка
- Поддержка SSH2
- Поддержка IPv6
Я пытался построить curl таким образом, чтобы добиться этого:
- Свяжите это с WinSSL
- Свяжите это с nghttp2
- Свяжите это с libssh2
- Включить IPv6
Я сделал это с помощью командной строки
nmake /f Makefile.vc mode=dll VC=15 ENABLE_WINSSL=yes DEBUG=no MACHINE=x64 ENABLE_SSPI=no WITH_NGHTTP2=dll WITH_ZLIB=static WITH_SSH2=static WITH_DEVEL=C:\curl\deps-x64
в кудрях winbuild/
подпапка. Затем я скомпилировал расширение php curl для результата.
В результате я получаю следующее некорректное поведение при выполнении HTTP-запроса к веб-сервису, который предлагает базовую аутентификацию, дайджест, NTLM и согласование (веб-сервис Exchange):
- Если используется
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);
, все работает нормально
- Если используется
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
, все тоже отлично работает
- Если используется
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM | CURLAUTH_BASIC);
, аутентификация не пройдена .
Сбой запроса содержит слишком короткий токен NTLM (кажется, в какой-то момент обрезается). Некоторые специалисты по поиску указали, что это может быть связано с тем, что curl компилируется для использования SSPI. Однако я не могу отключить SSPI, потому что WinSSL требует этого.
Кто-нибудь знает решение этой проблемы? Чтобы получить расширение php-curl, отвечающее всем вышеперечисленным требованиям?