当前位置: 首页 > 知识库问答 >
问题:

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

颜经艺
2023-03-14

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

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

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

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

我从微软的一位前IIS工程师那里找到了这篇博文,其中说IIs不支持带有Windows身份验证的Http/2。https://blogs.iis.net/davidso/http2

由于我的RESTendpoint在标题中响应:服务器: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 imap imaps ldap ldaps pop3 pop3s rtsp smtps telnet tftp功能:AsynchDNS IDN IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL libz TLS-SRP HTTP2 https proxy MultiSSL Metalink

共有1个答案

姜智渊
2023-03-14

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(将在没有错误或带宽限制的情况下继续)。

 类似资料:
  • 我正在尝试使用spnego和tomcat设置Kerberos集成Windows身份验证。 这是我第一次这样做,还没有看到真正的环境,所以依赖在线留档主要是spnego网站。我得到以下错误: GSSException:在GSS-API级别未指定故障(机制级别:无效参数(400)无法找到适当类型的密钥以使用HMAC解密AP REP-RC4) 附加我的krb5和login.conf。 krb5.conf

  • 赛贝斯ASE版本15或以上,并使用ADO. net连接到赛贝斯。是否可以使用Windows身份验证登录到赛贝斯ASE?

  • 我有一个.NETWCF客户端与Java服务器组件进行对话。服务器端身份验证通过配置为反向代理的中间Apache服务器完成。 NET客户端的配置如下: Apache配置为需要Kerveros身份验证: 如果我在Windows 7上启动我的应用程序,一切都按预期工作:. NET客户端使用Kerberos,Apache验证客户端,我可以使用Spring Security性访问客户端凭据。 如果我在Win

  • 15/02/06 15:17:12警告IPC.Client:连接到服务器时遇到异常:javax.security.sasl.saslexception:GSS initiate失败[由GSSException:未提供有效凭据(机制级别:找不到任何Kerberos tgt导致)]LS:本地异常失败:java.io.ioException:javax.security.sasl.saslexcepti

  • 我正在尝试使用AutoIT处理Selenium webdriver脚本的基本身份验证弹出。我为Firefox和Internet Explorer写了一个脚本,但它对Chrome不起作用。 当我尝试在Chrome上使用AutoIt窗口信息工具识别身份验证弹出时,结果是空的。我正在使用以下AutoIt脚本: 任何能让它发挥作用的指示都是有帮助的。我没有使用,因为重定向时会出现一些身份验证弹出窗口。

  • 所有的, 有人能就如何使用JAAS LoginContext对多个KDC/Realm组合进行身份验证提供建议吗?换句话说,如果尝试1对领域A失败,请尝试领域B。 类似于下面的伪代码。 一如既往,任何帮助都非常感谢。 查看剪贴板打印文本?