Мне нужно получить доступ к веб-службе Navision, которая использует Navision User + SSL. Коннектор, который я использую, основан на PHP.
Я могу подключиться к простому http-доступу и использовать пользователя Windows. Это руководство помогло мне достичь этого Веб-служба Navision PHP, написанная Фредди.
Я все еще использую его, но поигрался с добавлением сертификата в curl/request. Исследовал и прочитал много статей, но я все еще не могу этого достичь.
Теперь я могу получить к нему доступ, используя базовый коннектор php, указанный выше (ссылка), но при извлечении данных я получаю следующую информацию:
... успешно установил расположение проверки сертификата:
* CAfile: /Path/Navision.pem
* SSL-соединение с использованием TLSv1.0 / AES256-SHA
* Сертификат сервера:
...
* Результат проверки SSL-сертификата: невозможно получить сертификат локального эмитента (20), все равно продолжается.
* Аутентификация на сервере с использованием NTLM с пользователем 'user'
POST URL-адрес страницы Navision Имя HTTP/1.1
Авторизация: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA=
...
Метод: POST
Соединение: Сохранить -Alive
User-Agent: PHP-SOAP-CURL
Content-Type: text/xml; charset=utf-8
SOAPAction: "urn:microsoft-dynamics-schemas/page/pda_item_list:ReadMultiple"
...
‹ HTTP/1.1 401 Unauthorized ...
Я использовал сертификат с помощью makecert.exe. У меня есть эти файлы 2 .cer, pvk и .crl. Мы использовали один из файлов .cer, взяли отпечаток, чтобы применить его к экземпляру службы navision. Какой из файлов является правильным для использования коннектором php curl.
Вот мой php-код запроса:
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);
curl_setopt($ch, CURLOPT_USERPWD, USERPWD);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_CAINFO, __DIR__ . '/Navision.pem');
Любая связанная ссылка будет высоко оценена, особенно если я смогу использовать веб-службу Navision с помощью коннектора PHP, получив к ней доступ с помощью пользователя Navision и SSL.
ОБНОВЛЕНИЕ
Теперь я могу использовать действующий сертификат и пройти его правильно. Тем не менее, теперь это не работает и возвращает ту же ошибку, что и выше. Неавторизованный 401.
Скорее всего, это связано с моей настройкой Navision или я просто неправильно передаю учетные данные? Я все еще исследую и играю, поэтому в настоящее время я все еще не могу получить данные.