使用Http / 2和Windows身份验证在窗口上卷曲(SPNEGO,Kerberos,Negotiate)

问题描述 投票:0回答:1

我一直试图在Windows上获得curl版本7.63以连接到HTTP / 2 REST api并使用Windows身份验证。

REST端点设置为“协商”并在“已加入域”的Windows服务器上运行。所以它将从Windows DC KDC获得kerberos授权。

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

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

我在微软公司的一位前IIS工程师那里发现了这篇博文,其中说IIs不支持使用Windows身份验证的Http / 2。 https://blogs.iis.net/davidso/http2

因为我的REST端点在标题中响应:服务器:Microsoft-HTTPAPI / 2.0

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

这是http / 2规范的限制还是微软库和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大文件SSPI Kerberos SPNEGO NTLM SSL libz TLS-SRP HTTP2 HTTPS代理MultiSSL Metalink

windows authentication curl kerberos http2
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强制执行(将不会出现错误或带宽限制)。

© www.soinside.com 2019 - 2024. All rights reserved.