linux - cURL 始终使用 NTLM 返回 401

标签 linux curl ntlm

我正在开发一个库以使用 PHP 与 Microsoft Exchange 进行通信。在我的生产服务器上一切正常,但我在我的开发机器上不断收到 401 Unauthorized。我尝试从命令行使用 curl,得到了相同的结果。

在我的机器上使用以下返回“401”:

curl https://mail.example.com/EWS/Exchange.asmx -w %{http_code} --ntlm -u username:password

完全相同的调用在我的生产机器上返回“302”,这是我所期望的。

我的开发机器使用的是 curl 7.19.7,我的生产机器使用的是 curl 7.18.0。

最佳答案

这是一个老问题,但如果它最终可以帮助任何人,我想我会发布一个答案。

某些最新版本的 Ubuntu(我相信是 10.04 及更高版本)上的 NTLM 和 curl 存在错误。

如果您在 ubuntu 上使用 PHP 的 curl 模块并且您的 libcurl 版本受此错误影响,这可以解释为什么您的身份验证请求失败。

如果您将详细标志添加到您的命令 (-v),您应该在响应部分看到类似这样的内容:

  • gss_init_sec_context() 失败::找不到凭证缓存文件“/tmp/krb5cc_1000”

如果你确实看到了这个,你就受到了这个错误的影响,你将不得不降级你的图书馆或者换一台机器。

希望对你有帮助:P

关于linux - cURL 始终使用 NTLM 返回 401,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4341368/

相关文章:

c - 如果一段时间后没有输入,则退出 for 循环

javascript - 如何使用 AJAX 进行正确的 jQuery 用户身份验证

php - 设置 CURLOPT_USERPWD 时用户名问题或冒号传递

java - JAX-WS Sharepoint 401 未经授权的 NTLM

java - 通过 JAVA 使用 NTLM 身份验证访问 IIS WCF 服务

c - (unsigned *) 比 (unsigned int *) 更好地解析内存?

c++ - 在Linux ubuntu中用c++调用具有两个输出的函数时出错

bash - curl 获取请求参数列表太长

java - 使用 Apache Http Client 支持的原始 NTLM 身份验证的 Windows 系统设置是什么?

linux - 在Linux上同步2个文件