【问题标题】:Node.js integration with MS Exchange EWS [closed]Node.js 与 MS Exchange EWS 的集成 [关闭]
【发布时间】:2012-02-08 21:40:54
【问题描述】:

我正在尝试使用 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)。有谁知道用于直接与 Exchange EWS 通信或使用 NTLM 进行身份验证的 Node.js 模块,还是我需要自己为 Node.js 实现该协议?非常感谢任何帮助。

【问题讨论】:

  • 你解决过这个问题吗?
  • 不幸的是我没有。我们决定改用 Kerberos 身份验证,部分原因是我们在这里遇到的问题。

标签: node.js exchange-server exchangewebservices ntlm


【解决方案1】:

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

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

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

【讨论】:

  • 嗨亚伦,你有没有机会设法使用 GetRoom 功能?我正在尝试获取我的工作室的日历以查看哪些可用
  • @RasmusBidstrup 我没有,但是,您必须正确执行几个步骤。 1) 为请求提供格式正确的 JSON 对象,请参阅 issue#27 node-ews 项目页面。 2)确保您使用的参数有效(如正确的电子邮件地址)。请随时create an issue,我会尽我所能提供帮助。
  • 谢谢 :-) 我对 EWS 使用的名称有点困惑,我需要查找的房间(通过电子邮件或名称)的约会/会议是否正确,而不是日历?我会提出一个案例,试图解释我做了什么以及我遇到了什么困难。
【解决方案2】:

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

【讨论】:

  • 这看起来很有希望而且很简单。我不再尝试这样做,但如果有人可以验证它是否有效,我会将其标记为已接受,因为这似乎是一个更通用的 NTLM 连接器。
【解决方案3】:

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

我将此添加为答案,因为它将提供问题标题(集成)的完整答案。这些是 github 链接,问题不太笼统,因此 github 自述文件中提供的示例应该可以工作。

[免责声明-我是作者]

【讨论】:

    【解决方案4】:

    我找到了一个支持与 Exchange 2010 通信的 Node.js 模块,但是我仍在尝试弄清楚如何亲自使用它,文档很简单。 https://npmjs.org/package/exchanger

    【讨论】:

    • 谢谢,寻找更多没有模块的直接方法。不过我会检查一下,看看模块是否也能正常工作。
    • 我尝试使用exchanger,但目前node-expat 出现错误,导致我无法进行进一步测试。 Error: Cannot find module '../build/Release/node_expat.node'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-27
    相关资源
    最近更新 更多