node.js - 对 OData 的 Dynamics NAV 进行身份验证

标签 node.js web-services dynamics-nav

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

我的 Dynamics NAV 设置中有一个 UserAccount/PW 和一个 Web 服务访问 key 。

我终其一生都找不到如何通过在 header 中添加内容或在 URL 查询中添加内容来正确进行身份验证。我试过使用“用户名:密码@服务器”格式。我已经尝试将其编码为 base64 并将其添加到“身份验证”值的 header 中。

documentation itself非常不具体。我知道如何生成 key ,但我不知道如何将该 key 正确发送到 NAV 以进行身份​​验证。

我正在使用“request-promise”npm 包,它带有一个“options”参数,我可以在其中添加任意 header 键:值对。请有人给我一些关于如何对 NAV 进行身份验证的指导。我已经研究这个几个小时了。

最佳答案

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

使用 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};

但我必须在 url 中明确要求 json,例如 ?format=json .

关于node.js - 对 OData 的 Dynamics NAV 进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40181704/

相关文章:

node.js - 使用 nodejs 从 Twilio 发送多个媒体文件

c# - ExecuteRegisteredAsyncTasks 是否释放请求处理线程来服务其他请求?

dynamics-nav - 有没有办法改变RTC标签的颜色?

php - 销售行已存在。标识字段和值 : Document Type ='' , 文档编号 ='',行号 =''

integration - shopify navision

node.js - 幻影 JS + Docker : html font-family is not respected when converting from HTML

javascript - 使用nodemailer定期发送邮件

c - PostgreSQL - 调用 webservice 的 C 函数

javascript - 可以从一系列 promise 中删除 promise 吗?

Java WSDL 修改或隐藏 Web View 上的某些属性