Аутентификация OData с использованием Curl для Dynamics Nav

Я пытаюсь использовать Curl, чтобы получить некоторые данные из Microsoft Dynamics Nav.

Я могу легко получить к нему доступ через свой браузер по этому адресу: http://kevans:(password)@192.168.0.30:8048/Sandbox/OData/ и это прекрасно работает.

В Curl я попробовал это: curl --ntlm -u kevans "http://192.168.0.30:8048/Sandbox/OData/" -v, введите мой пароль в приглашении, но он возвращает 401 несанкционированную ошибку.

Есть ли что-то, что нужно сделать, чтобы сделать это доступным для Curl?

Вот вывод Curl:

curl --ntlm -u kevans "http://192.168.0.30:8048/Sandbox/OData/" -v
Enter host password for user 'kevans':
* About to connect() to 192.168.0.30 port 8048 (#0)
*   Trying 192.168.0.30...
* Adding handle: conn: 0x525fe0
* Adding handle: send: 0
* Adding handle: recv: 0
* Curl_addHandleToPipeline: length: 1
* - Conn 0 (0x525fe0) send_pipe: 1, recv_pipe: 0
* Connected to 192.168.0.30 (192.168.0.30) port 8048 (#0)
* Server auth using NTLM with user 'kevans'
> GET /Sandbox/OData/ HTTP/1.1
> Authorization: NTLM TlRMTVNTUAABAAAAt4II4gAAAAAAAAAAAAAAAAAAAAAGA4AlAAAADw==
> User-Agent: curl/7.33.0
> Host: 192.168.0.30:8048
> Accept: */*
>
< HTTP/1.1 401 Unauthorized
< Content-Length: 0
* Server Microsoft-HTTPAPI/2.0 is not blacklisted
< Server: Microsoft-HTTPAPI/2.0
< WWW-Authenticate: Negotiate
< Date: Thu, 05 Feb 2015 20:25:26 GMT
<
* Connection #0 to host 192.168.0.30 left intact

Вещи, которые я пробовал:

  • с использованием --negotiate аргумент вместе с --ntlm
  • с помощью --anyauth
  • используя мой домен -u MYDOMAIN\kevans
  • с помощью -u MYDOMAIN\kevans:password а также -u kevans:password

2 ответа

Решение

Я обновил Curl с 7.33 до 7.40, и теперь он работает нормально. Я использую ТОЧНУЮ ЖЕ КОМАНДУ, и она работает без проблем. Домен не является обязательным и не влияет на него.

У меня была та же проблема, но в итоге я нашел другое решение. Я просто ставлю свою здесь на случай, если у кого-то все еще есть проблемы с этим.

  1. Откройте инструмент MMC для Microsoft Dynamics Nav Server.
  2. Выберите рассматриваемый экземпляр NAV
  3. Нажмите кнопку "Изменить" в правом нижнем углу, чтобы редактировать экземпляр
  4. Установите / включите флажок "Использовать проверку подлинности NTLM"
  5. Сохраните внесенные изменения
  6. Перезапустите экземпляр NAV

После внесения этих изменений заголовок ответа CURL HTTP "WWW-Authenticate: Negotiate" теперь должен быть "WWW-Authenticate: NTLM", а ваш запрос скручивания должен соответствовать следующему:

curl -v --ntlm -u 'username:password' "http://YOUR_NAV_URL:8048/NAV_INSTANCE_NAME/OData/" 
Другие вопросы по тегам