2015-02-05 101 views
4

我正在嘗試使用Curl從Microsoft Dynamics Nav中抽取一些數據。使用Curl爲Dynamics Nav驗證OData

我可以很容易地通過我的瀏覽器訪問它在這個URL: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 --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. 選擇有問題的資產淨值實例
    3. 點擊右下角的編輯按鈕來編輯實例
    4. 檢查/啓用「使用NTLM複選框驗證」你讓
    5. 重新啓動NAV
    實例
  • 保存更改

    完成這些修改後,捲曲HTTP響應頭「WWW驗證:協商」,現在應該是「WWW驗證:NTLM」和你的捲曲請求應該符合以下幾點:

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