【发布时间】:2019-05-20 12:27:07
【问题描述】:
我一直在尝试在 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 连接到其余端点。
我从微软的一位前 IIS 工程师那里找到了这篇博文,其中说 IIs 不支持带有 Windows 身份验证的 Http/2。 https://blogs.iis.net/davidso/http2
因为我的 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 pop3s rtsp smtp smtps telnet tftp 功能:AsynchDNS IDN IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL libz TLS-SRP HTTP2 HTTPS-proxy MultiSSL Metalink
【问题讨论】:
标签: windows authentication curl kerberos http2