Node.js与MS Exchange EWS集成

时间:2012-02-08 21:40:55

标签: node.js exchange-server exchangewebservices ntlm

我正在尝试使用Node.js来调用SOAP Exchange EWS服务。我创建了一个简单的http客户端,如下所示:

var https = require('https');

var username = 'user';
var password = 'password';
var auth = 'NTLM ' + new Buffer(username + ":" + password).toString('base64');

var options = {
    host : 'exchangehost',
    port : 443,
    method : 'post',
    path : '/Exchange.asmx',
    headers : { Authorization : auth }
};

var request = https.request(options, function(response) {
    console.log('Status: ' + response.statusCode);
};

request.write('<soapenv:Envelope  ...></soapenv:Envelope>');
request.end();

我收到状态码401,我怀疑是因为我没有执行NTLM身份验证所涉及的三个步骤(http://www.innovation.ch/personal/ronald/ntlm.html)。有没有人知道Node.js模块直接与Exchange EWS通信或使用NTLM进行身份验证,或者我是否需要自己为Node.js实现该协议?非常感谢任何帮助。

4 个答案:

答案 0 :(得分:1)

您是否尝试过httpntlm模块? https://github.com/SamDecrock/node-http-ntlm

答案 1 :(得分:1)

我已成功使用node-ews与EWS进行通信。

node-ews在内部使用httpntlm进行NTLM身份验证。

我个人认为 node-ews 是最好的选择,因为它已经实现了与EWS交互所需的一切。

答案 2 :(得分:1)

您是否尝试了ews-javascript-api npm模块,它具有您正在查看的所有功能+使用ews-javascript-api-auth模块进行非常简单的ntlm身份验证。 NTLMv2也受支持。

我添加了这个作为答案,因为它将提供问题标题(整合)的完整答案。这些是github链接,问题很小,所以在github自述文件中提供的样本应该可以工作。

[免责声明 - 我是作者]

答案 3 :(得分:0)

我发现这个Node.js模块支持与Exchange 2010进行通信,但是我仍然试图弄清楚如何亲自使用它,文档很轻松。 https://npmjs.org/package/exchanger