在 Windows 从 Python 访问 SPNEGO 认证的网络服务

Accessing SPNEGO authenticated web service from Python on Windows

我正在尝试从 Windows 上的 Python 应用程序访问使用 Kerberos 身份验证(公司内部)的 REST 服务。但是,似乎该服务被配置为仅当我尝试使用 requests-kerberos 进行连接时才需要 SPNEGO,如下所示:

requests.get('servicename', auth=HTTPKerberosAuth()) 

它从服务器产生 500 错误:

javax.servlet.ServletException: GSSException: No credential found for: 1.2.840.113554.1.2.2 

我的猜测是服务器配置为仅期望 SPNEGO,并且 Python 客户端仅支持 Kerberos。

我已经尝试安装 PyKerberos 但失败了,因为它需要在系统上安装 krb5,而我是在 Windows 下安装的。是否有可用的库可以帮助我在 Windows 中从 Python 进行 SPNEGO 调用?

以防其他人遇到类似问题 - 通过使用带有 pycurl.HTTPAUTH_GSSNEGOTIATE 属性集的 pycurl 解决。