使用PHP的SharePoint web服务持久身份验证

使用PHP的SharePoint web服务持久身份验证,php,authentication,sharepoint,curl,cookies,Php,Authentication,Sharepoint,Curl,Cookies,我想构建一个php应用程序,它使用restful SharePoint web服务(带有简单http身份验证的https) 我用CURL做了一个请求,但花了很长时间(3秒)。经过一点调试后,我发现在每个请求中,身份验证占用了大部分时间,因为它会执行一些重定向等操作 这不会发生在浏览器中,在第一个请求之后,身份验证是持久的 我试图用两个不同的调用来模拟这一点:1个调用获取WSS_KeepSessionAuthenticated Cookie,另一个调用实际获取web服务。我记得会话变量中的cook

我想构建一个php应用程序,它使用restful SharePoint web服务(带有简单http身份验证的https)

我用CURL做了一个请求,但花了很长时间(3秒)。经过一点调试后,我发现在每个请求中,身份验证占用了大部分时间,因为它会执行一些重定向等操作

这不会发生在浏览器中,在第一个请求之后,身份验证是持久的

我试图用两个不同的调用来模拟这一点:1个调用获取WSS_KeepSessionAuthenticated Cookie,另一个调用实际获取web服务。我记得会话变量中的cookie,并将其用于对web服务的所有后续调用

问题是第二个请求(使用cookie)没有进行身份验证(http 401)

以下是成功获取cookie的第一个请求:

$ch = curl_init('https://server/default.aspx');
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);
curl_setopt($ch, CURLOPT_USERPWD, $username . ':' . $password);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
这是尝试使用cookie实现持久身份验证的第二个请求:

 $ch = curl_init('https://server/somewebservice/');
 curl_setopt($ch, CURLOPT_VERBOSE, 1);
 curl_setopt($ch, CURLOPT_HEADER, false);
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLINFO_HEADER_OUT, 1);
 curl_setopt($ch, CURLOPT_COOKIE, implode(';', $session_key));
这就是401

是不是我错过了什么


谢谢你

看一看没有变化。我仍然得到401。