2012-02-08 93 views
7

我正在嘗試使用Node.js來調用SOAP Exchange EWS服務。我創建了一個簡單的HTTP客戶端,像這樣:Node.js與MS Exchange EWS集成

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自己實現該協議?任何援助非常感謝。

+0

你有沒有解決過這個問題? – 2014-04-16 05:23:55

+1

不幸的是我沒有。我們決定採用Kerberos身份驗證,部分原因是由於我們在這裏遇到的問題。 – AngryMonkey 2014-04-26 17:23:12

回答

1

我已經使用node-ews成功與EWS進行通信。

node-ews在內部使用httpntlm進行NTLM身份驗證。

我個人認爲node-ews是你最好的選擇,因爲它已經實現了與EWS交互所需的一切。

+0

嗨亞倫,你有沒有機會設法使用GetRoom功能?我試圖讓我的工作室的日曆看到哪些是可用的 – 2016-11-25 16:26:38

+0

@RasmusBidstrup我還沒有,但是,有幾個步驟,你必須得到正確的。 1)在'node-ews'項目頁面上,請求參見[issue#27](https://github.com/nmarus/node-ews/issues/27),可以很好地爲請求創建JSON對象。 2)確保您使用的參數是有效的(如正確的電子郵件地址)。隨意[創建問題](https://github.com/nmarus/node-ews/issues/new),我會盡力提供幫助。 – 2016-11-25 18:57:28

+0

謝謝:-)我對EWS正在使用的名稱有些困惑,我需要找到一個房間的預約/會議(通過電子郵件或名稱)是否正確,而不是日曆? 我會提出一個案例來解釋我所做的事情以及我卡在哪裏。 – 2016-11-25 19:58:51

0

我發現了一個支持與Exchange 2010進行通信的Node.js模塊,但是我仍然試圖找出如何親自使用它,文檔很簡單。 https://npmjs.org/package/exchanger

+0

謝謝,在沒有模塊的情況下尋找更多的直接方法。我會檢查一下,看看模塊是否工作。 – AngryMonkey 2013-07-01 21:49:15

+0

我嘗試使用'交換器',但此刻'node-expat'出現錯誤,導致我無法進行進一步測試。 '錯誤:找不到模塊'../ build/Release/node_expat.node'' – 2016-10-19 13:40:25

1

您是否嘗試過httpntlm模塊? https://github.com/SamDecrock/node-http-ntlm

+0

這看起來很有前途,很簡單。我不想再這樣做,但如果有人可以驗證它的工作原理,我會將它標記爲已接受,因爲這似乎是一個更通用的NTLM連接器。 – AngryMonkey 2015-09-30 15:48:18

1

您是否試過ews-javascript-api npm模塊,它具有您正在查看的所有功能+非常簡單的使用ews-javascript-api-auth模塊的ntlm身份驗證。 NTLMv2也受支持。

我添加了這個答案,因爲它會提供問題標題(集成)的完整答案。這些是github鏈接,問題很少,所以在github自述文件中提供的示例應該可以工作。

[免責聲明 - 我是作者]