Мне нужно получить доступ к веб-службе Navision, которая использует Navision User + SSL. Разъем, который я использую, основан на PHP.
Я могу подключиться к простому http-доступу и использовать пользователя Windows. Это учебник, который помог мне достичь этого Navision Web Service PHP написанный Фредди.
Я все еще использую это, но поиграл при добавлении сертификата в curl / request. Исследовал и прочитал много статей, но я до сих пор не могу этого достичь.
Теперь я могу получить к нему доступ через общий php-коннектор, который был указан выше (ссылка), но при получении данных я получаю подробности ниже:
… Успешно настроен сертификат, проверьте места:
* CAfile: /Path/Navision.pem
* SSL-соединение с использованием TLSv1.0 / AES256-SHA
* Сертификат сервера:
…
* Результат проверки сертификата SSL: невозможно получить сертификат локального эмитента (20), все равно продолжая.
* Аутентификация сервера с использованием NTLM с пользователем ‘user’
POST Navision Страница URL Имя HTTP / 1.1
Авторизация: NTLM TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA =
…
Метод: ПОСТ
Подключение: Keep-Alive
Пользователь-агент: PHP-SOAP-CURL
Content-Type: text / xml; кодировка = UTF-8
SOAPAction: «urn: microsoft-dynamic-schemas / page / pda_item_list: ReadMultiple»
…
< HTTP / 1.1 401 Несанкционированный …
Я использовал сертификат, используя 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 User и SSL.
ОБНОВИТЬ
Теперь я могу использовать действующий сертификат и правильно пройти.
Тем не менее, он теперь не работает и возвращает ту же ошибку, что и выше. Несанкционированный 401.
Скорее всего, это из-за моих настроек Navision или я просто неверно передаю учетные данные? Я все еще исследую и играю, поэтому в настоящее время я все еще не могу получить данные.
у вас есть два варианта:
иметь второй уровень обслуживания, который использует аутентификацию по имени пользователя. Это позволит PHP использовать Basic Auth. Вам понадобится сертификат в этом случае
Второй вариант — использовать тот же уровень сервиса, но сгенерировать ключ веб-сервиса для использования, которое использует PHP. Вы можете использовать обычную аутентификацию, используя то же имя пользователя, но используя ключ веб-службы в качестве пароля
PHP не фанат аутентификации NTLM …
ура
Других решений пока нет …