使用Curl for Dynamics Nav验证OData

时间:2015-02-05 20:28:05

标签: curl odata 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 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 个答案:

答案 0 :(得分:2)

我将Curl从7.33更新到7.40,现在工作正常。我正在使用完全相同的命令,它没有问题。域名是完全可选的,似乎不会影响它。

答案 1 :(得分:2)

我遇到了同样的问题,但最终得到了一个不同的解决方案。我只是把我放在这里,以防任何人仍然遇到这个问题。

  1. 打开Microsoft Dynamics Nav服务器MMC工具
  2. 选择有问题的资产净值实例
  3. 点击右下方的修改按钮修改实例
  4. 选中/启用&#34;使用NTLM身份验证&#34;
  5. 的复选框
  6. 保存您所做的更改
  7. 重新启动NAV实例
  8. 进行这些更改后,CURL HTTP响应标头&#34; WWW-Authenticate:Negotiate&#34;现在应该是&#34; WWW-Authenticate:NTLM&#34;并且您的curl请求应与以下内容匹配:

    curl -v --ntlm -u 'username:password' "http://YOUR_NAV_URL:8048/NAV_INSTANCE_NAME/OData/"