2015-02-05 3 views
4

Я пытаюсь использовать Curl, чтобы вытащить некоторые данные из Microsoft Dynamics Nav.Аутентификация OData с помощью Curl for 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 Unauthorized.

Есть ли что-то, что нужно сделать, чтобы сделать его доступным для 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, и теперь он отлично работает. Я использую ТОЧНУЮ ТАЙНУЮ КОМАНДУ, и она работает без проблем. Домен полностью необязателен и, похоже, не влияет на него.

2

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

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

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

curl -v --ntlm -u 'username:password' "http://YOUR_NAV_URL:8048/NAV_INSTANCE_NAME/OData/" 
Смежные вопросы