对OData的Dynamics NAV进行身份验证

问题描述 投票:5回答:2

我正在尝试编写一个使用Dynamics NAV Odata Feed的node.js脚本。

我有一个UserAccount / PW和一个来自我的Dynamics NAV设置的Web服务访问密钥。

我无法通过在标题中添加内容或在URL查询中添加内容来查找如何正确进行身份验证。我尝试过使用'username:password @ server'格式。我已经尝试将其编码为base64并在Header中添加“Authentication”值。

documentation itself非常不具体。我知道如何生成密钥,但我不知道如何正确地将该密钥发送给NAV进行身份验证。

我正在使用'request-promise'npm包,它接受一个'options'参数,我可以添加任意头键:值对。请有人给我一些关于如何验证资产净值的方向。我已经在这几个小时了。

node.js web-services dynamics-nav
2个回答
3
投票

我找到了一个满意的答案。

使用node-libcurl我能够使用该格式cURL到url

http://username:password@<server>/ODATA_table

特别是我的cURL模块看起来像这样:

var Curl = require('node-libcurl').Curl;

var curl = new Curl(),
    close = curl.close.bind(curl);

function getOData(url) {
    return new Promise((resolve, reject) => {
        curl.setOpt(Curl.option.URL, url);
        curl.setOpt(Curl.option.HTTPAUTH, Curl.auth.NTLM);
        curl.setOpt(Curl.option.SSL_VERIFYPEER, false);
        curl.setOpt(Curl.option.SSL_VERIFYHOST, false);
        curl.setOpt(Curl.option.POST, 0);


        curl.on('end', function (statusCode, body, headers) {

            var retObj = JSON.parse(body);
            resolve(retObj);
            close();
        });

        curl.on( 'error', function(e){
            reject(e);
            close();
        });

        curl.perform();
    })
}

module.exports = {getOData: getOData};

但我必须在网址中明确要求json,就像?format=json一样。


-1
投票

Tkol,你是对的,你也可以使用guzzle,这很简单,这是一个查询客户表的示例函数:

public function ReadCustomer($identifier=0)
{
  try {

       $client = new GuzzleHttpClient();

       $apiRequest = $client->request('GET', 'http://server:port/ServiceName/WS/CompanyName/Page/Customer?$filter=No eq \''.$identifier.'\'',[
            'auth' =>'username','password', 'NTLM' ],       //NTLM authentication required
            'debug' => true                                  //If needed to debug   
      ]);


      $content = json_decode($apiRequest->getBody()->getContents());
      return $content;

  } catch (RequestException $re) {
      //For handling exception
  }
}

你可以查看我的样本:update/delete/get from Dynamics NAV OData webservice

© www.soinside.com 2019 - 2024. All rights reserved.