首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Http/2和windows身份验证的windows上的Curl ( SPNEGO、Kerberos、Negotiate)

使用Http/2和windows身份验证的windows上的Curl ( SPNEGO、Kerberos、Negotiate)
EN

Stack Overflow用户
提问于 2018-12-20 08:23:13
回答 1查看 1.5K关注 0票数 0

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

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

这一切都适用于http/1.1,但如果我尝试强制curl使用http/2,它将恢复到http/1.1

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

我发现这篇博文来自微软的一位前IIS工程师,他说IIs不支持使用Windows身份验证的Http/2。https://blogs.iis.net/davidso/http2

由于我的REST端点在标头中使用以下内容进行响应: Server: 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 libinn2/2.0.5nghttp2/1.35.1发布日期: 2018-12-12协议: dict文件ftp ftps gopher http https imap imap ldaps pop3 pop3s rtsp smtp smtps telnet tftp功能: AsynchDNS IDN IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL libz TLS-SRP HTTP2代理MultiSSL Metalink

EN

回答 1

Stack Overflow用户

发布于 2019-02-20 02:59:03

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中,选择站点,在操作窗格的配置下选择'Limits‘)。这适用于HTTP/1.1,但不适用于HTTP/2 (将不会出现错误或带宽限制)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53860945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档