У меня есть PHP-скрипт, который использует NuSOAP с curl для использования веб-сервисов Exchange. У меня это работало довольно хорошо, разговаривая с немного более старой версией exchange, а также Exchange 2010.
Совсем недавно мы обновили ОС на сервере, который обновил множество пакетов. С тех пор код Exchange не работает. Он все еще работает со старым сервером, но вообще не взаимодействует с сервером Exchange 2010.
Возвращается сообщение об ошибке «Ошибка аутентификации HTTP.»
Я, конечно, трижды проверил, чтобы убедиться, что имена пользователей и пароли верны, и код не изменился, и серверы не изменились, поэтому, похоже, что-то связано с обновлением программного обеспечения сервера.
Кажется странным, что он все еще работает со старым сервером Exchange.
Сказано не проверять ssl-сертификаты, так как они самозаверяющие из-за того, что сейчас являются тестовыми машинами, поэтому я не думаю, что это ошибка проверки сертификата. Я могу аутентифицировать и просматривать веб-сервис на сервере Exchange через браузер, поэтому я знаю, что он все еще активен.
Сервер - это сервер Ubuntu, который был только что обновлен до 10.04.4.
Это фрагмент кода, который работал и работает со старым сервером Exchange.
$client = new nusoap_client($webservice_wsdl, true);
$client->setCredentials($exch_user, $exch_pass, 'ntlm');
$client->setUseCURL(true);
$client->useHTTPPersistentConnection();
$client->setCurlOption(CURLOPT_HTTPAUTH, CURLAUTH_NTLM);
$client->setCurlOption(CURLOPT_USERPWD, $exch_user.':'.$exch_pass);
$client->setCurlOption(CURLOPT_SSL_VERIFYPEER, false);
$client->setCurlOption(CURLOPT_SSL_VERIFYHOST, false);
$client->soap_defencoding = 'UTF-8';
$xml = '<FindItem xmlns="http://schemas.microsoft.com/exchange/services/2006/messages"';
$xml .= ' xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" Traversal="Shallow">';
$xml .= ' <ItemShape>';
$xml .= ' <t:BaseShape>IdOnly</t:BaseShape>';
$xml .= ' <t:AdditionalProperties>';
$xml .= ' <t:FieldURI FieldURI="message:From"/>';
$xml .= ' <t:FieldURI FieldURI="item:Subject"/>';
$xml .= ' <t:FieldURI FieldURI="message:IsRead"/>';
$xml .= ' <t:FieldURI FieldURI="item:DateTimeReceived"/>';
$xml .= ' <t:FieldURI FieldURI="calendar:Start"/>';
$xml .= ' <t:FieldURI FieldURI="calendar:End"/>';
$xml .= ' <t:FieldURI FieldURI="calendar:Location"/>';
$xml .= ' <t:FieldURI FieldURI="task:Status"/>';
$xml .= ' <t:FieldURI FieldURI="task:DueDate"/>';
$xml .= ' </t:AdditionalProperties>';
$xml .= ' </ItemShape>';
$xml .= ' <IndexedPageItemView Offset="'.$position.'" MaxEntriesReturned="5" BasePoint="Beginning"/>';
$xml .= ' <ParentFolderIds>';
$xml .= ' '.$fxml;
$xml .= ' </ParentFolderIds>';
$xml .= '</FindItem>';
$result = $client->call('FindItem', utf8_encode($xml));