使用Http/2和windows身份验证(SPNEGO、Kerberos、协商)在windows上执行Curl

使用Http/2和windows身份验证(SPNEGO、Kerberos、协商)在windows上执行Curl,windows,authentication,curl,kerberos,http2,Windows,Authentication,Curl,Kerberos,Http2,我一直在尝试让windows上的curl版本7.63连接到HTTP/2 REST api并使用windows身份验证 REST端点设置为进行“协商”,并在“加入域”的windows服务器上运行。因此,它将从Windows DC KDC获得kerberos委派 这一切都在http/1.1中工作,但如果我尝试使用http/2强制curl,它将恢复为http/1.1 当我使用“基本”身份验证时,curl可以使用http/2连接到rest端点 我从微软的一位前IIS工程师那里找到了这篇博文,他说IIS不

我一直在尝试让windows上的curl版本7.63连接到HTTP/2 REST api并使用windows身份验证

REST端点设置为进行“协商”,并在“加入域”的windows服务器上运行。因此,它将从Windows DC KDC获得kerberos委派

这一切都在http/1.1中工作,但如果我尝试使用http/2强制curl,它将恢复为http/1.1

当我使用“基本”身份验证时,curl可以使用http/2连接到rest端点

我从微软的一位前IIS工程师那里找到了这篇博文,他说IIS不支持带有Windows身份验证的Http/2。

由于我的REST端点在标头中使用以下内容进行响应: 服务器:Microsoft HTTPAPI/2.0

我相信它正在使用与IIS相同的库,这可能是它无法处理Windows身份验证的原因(需要Windows身份验证来处理SSO,以便用户不需要输入其凭据)

这是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 pop3 rtsp smtp smtps telnet tftp 功能:AsynchDNS IDN IPv6大文件SSPI Kerberos SPNEGO NTLM SSL libz TLS-SRP HTTP2 HTTPS代理多SSL Metalink

在少数情况下,HTTP/2不能与其他功能结合使用。在这些情况下,Windows将退回到HTTP/1.1并继续事务。这可能涉及在握手过程中协商HTTP/1.1,或向客户端发送错误代码,指示其通过HTTP/1.1连接重试

HTTP/2不支持Windows身份验证(NTLM/Kerberos/Negotiate)。在这种情况下,IIS将退回到HTTP/1.1。 明文-如上所述,IIS目前仅支持TLS上的HTTP/2。同样,IIS将退回到HTTP/1.1。 带宽限制-IIS具有限制带宽的功能(在Inetmgr中,在操作窗格的配置下选择站点“限制”)。这适用于HTTP/1.1,但不适用于HTTP/2(将继续进行,不会出现错误或带宽限制)。

在少数情况下,HTTP/2不能与其他功能结合使用。在这些情况下,Windows将退回到HTTP/1.1并继续事务。这可能涉及在握手过程中协商HTTP/1.1,或向客户端发送错误代码,指示其通过HTTP/1.1连接重试

HTTP/2不支持Windows身份验证(NTLM/Kerberos/Negotiate)。在这种情况下,IIS将退回到HTTP/1.1。 明文-如上所述,IIS目前仅支持TLS上的HTTP/2。同样,IIS将退回到HTTP/1.1。 带宽限制-IIS具有限制带宽的功能(在Inetmgr中,在操作窗格的配置下选择站点“限制”)。这适用于HTTP/1.1,但不适用于HTTP/2(将在没有错误或带宽限制的情况下继续)