Завиток на окнах с использованием Http / 2 и аутентификации Windows (SPNEGO, Kerberos, Negotiate) - PullRequest
0 голосов
/ 20 декабря 2018

Я пытался получить curl версии 7.63 для Windows, чтобы подключиться к API REST HTTP / 2 и использовать проверку подлинности Windows.

Конечная точка REST настроена на «согласование» и работает на «Домен "Присоединен" Windows Server.поэтому он получит делегирование Kerberos от Windows DC KDC.

Это все работает в http / 1.1, но если я попытаюсь принудительно заставить curl использовать http / 2, он вернется к http / 1.1

Когда я использую «базовую» аутентификацию, curl может подключиться к остальной конечной точке, используя http / 2.

. Я нашел это сообщение в блоге от бывшего инженера IIS в Microsoft, в котором говорится, что IIs не поддерживает Http / 2.с аутентификацией Windows.https://blogs.iis.net/davidso/http2

, поскольку моя конечная точка REST отвечает следующим образом в заголовке: Сервер: Microsoft-HTTPAPI / 2.0

Я считаю, что он использует ту же библиотеку, что и IIS, и это может быть причинойпочему он не может обрабатывать проверку подлинности Windows (проверка подлинности Windows необходима для обработки единого входа, чтобы пользователю не нужно было вводить свои учетные данные).

это ограничение в спецификации http / 2 или просто ограничение вбиблиотеки Microsoft и IIS?

curl 7.63.0 (x86_64-w64-mingw32) libcurl / 7.63.0 OpenSSL / 1.1.1a (WinSSL) zlib / 1.2.11 libidn2 / 2.0.5 nghttp2 / 1.35.1 Дата выпуска: 2018-12-12 Протоколы: файл dict ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smtp smtps telnet tftp Особенности: AsynchDNS IDN IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL libz TLS-SRP HTTPSLS-TLS-SRP HTTP2 HTLS-HTLTMetalink

1 Ответ

0 голосов
/ 19 февраля 2019

HTTP / 2

В некоторых случаях HTTP / 2 нельзя использовать в сочетании с другими функциями.В этих ситуациях Windows вернется к HTTP / 1.1 и продолжит транзакцию.Это может включать согласование HTTP / 1.1 во время рукопожатия или отправку клиенту кода ошибки с указанием повторить попытку через соединение HTTP / 1.1.

Проверка подлинности Windows (NTLM / Kerberos / Negotiate) не поддерживается с HTTP/ 2.В этом случае IIS вернется к HTTP / 1.1.Открытый текст - как уже упоминалось выше, IIS в настоящее время поддерживает только HTTP / 2 через TLS.И снова IIS вернется к HTTP / 1.1.Регулирование пропускной способности - IIS имеет функцию ограничения пропускной способности (в Inetmgr выберите сайт, «Ограничения» в разделе «Настройка панели действий»).Это относится к HTTP / 1.1, но не применяется для HTTP / 2 (будет выполняться без ошибок или ограничения пропускной способности).

...