我正在尝试编写一个使用 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/