Доступ к веб-службе через PHP с использованием аутентификации пользователя Navision (SSL включен)

Мне нужно получить доступ к веб-службе 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 или я просто неверно передаю учетные данные? Я все еще исследую и играю, поэтому в настоящее время я все еще не могу получить данные.

0

Решение

у вас есть два варианта:

  • иметь второй уровень обслуживания, который использует аутентификацию по имени пользователя. Это позволит PHP использовать Basic Auth. Вам понадобится сертификат в этом случае

  • Второй вариант — использовать тот же уровень сервиса, но сгенерировать ключ веб-сервиса для использования, которое использует PHP. Вы можете использовать обычную аутентификацию, используя то же имя пользователя, но используя ключ веб-службы в качестве пароля

PHP не фанат аутентификации NTLM …

ура

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]