【问题标题】:curl - SPNEGO cannot find mechanisms to negotiatecurl - SPNEGO 找不到协商机制
【发布时间】:2015-11-04 17:50:59
【问题描述】:

我正在尝试将 php-curl 与 Microsoft Web 服务一起使用:这是我的代码(在带有 wamp 的 Windows 10 上工作):

<?php

$location = "http://10.0.100.19:7058/FOLDER12013/OData/Company('TEST')/WS_Clienti";
$handle = curl_init($location);

$credentials = 'CPGNET\username:password';
$action =


$proxy =  '11.22.33.44:8123';
$headers = [
    'Method: GET',
    'User-Agent: PHP-SOAP-CURL',
    'Content-Type: text/xml; charset=utf-8',
];


// Authentication
curl_setopt($handle, CURLOPT_HTTPAUTH, CURLAUTH_NTLM | CURLAUTH_BASIC | CURLAUTH_GSSNEGOTIATE | CURLAUTH_ANY);
curl_setopt($handle, CURLOPT_USERPWD, $credentials);

curl_setopt($handle, CURLINFO_HEADER_OUT, true);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($handle, CURLOPT_HTTPHEADER, $headers);
curl_setopt($handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($handle, CURLOPT_PROXY,$proxy);

$response = "";
echo("<pre>");
$response = curl_exec($handle);

$url_info = curl_getinfo($handle);

print_r($url_info);

echo(htmlentities($response));
echo("</pre>");

当我尝试使用 centos 7(或 ubuntu 15)中的此代码时,我遇到了未经授权的错误 401。 php、curl、libcurl 在 windows 和 linux 上具有相同的版本(并且所有扩展都与 phpinfo 相等检查)。所以,我正在尝试使用来自 linux 的 curl:

curl --negotiate -u "CPGNET\username:password" --proxy 11.22.33.44:8123 "http://10.0.100.19:7058/FOLDER12013/OData/Company('TEST')/WS_Clienti" -v

但我有一个错误:

* gss_init_sec_context() failed: : SPNEGO cannot find mechanisms to negotiate

请有人可以帮助我。我不明白为什么从linux这不起作用。 谢谢

【问题讨论】:

  • 这里有什么新东西吗?我遇到了同样的问题...

标签: php linux web-services curl


【解决方案1】:

一个有点老的问题,但是...

可能是您在通过 curl 的 gssapi 进行 ntlm 身份验证时遇到问题。请查看以下链接:

【讨论】:

    猜你喜欢
    • 2016-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多