2012-02-08 28 views
7

Tôi đang cố gắng sử dụng Node.js để gọi các dịch vụ SOAP Exchange EWS. Tôi đã tạo ra một khách hàng http đơn giản như vậy:Tích hợp Node.js với 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(); 

tôi nhận được một mã trạng thái 401, tôi nghi ngờ bởi vì tôi không làm tốt ba bước liên quan để xác thực NTLM (http://www.innovation.ch/personal/ronald/ntlm.html). Có ai biết về một mô-đun Node.js cho giao tiếp với Exchange EWS trực tiếp hoặc để xác thực bằng cách sử dụng NTLM, hoặc tôi sẽ cần phải thực hiện giao thức đó cho Node.js bản thân mình? Bất kỳ trợ giúp được đánh giá rất cao.

+0

Bạn đã từng giải quyết vấn đề chưa? –

+1

Thật không may là tôi đã không làm vậy. Chúng tôi quyết định đi với một xác thực Kerberos thay vì một phần vì những vấn đề chúng tôi đã có ở đây. – AngryMonkey

Trả lời

1

Tôi đã sử dụng node-ews thành công để giao tiếp với EWS.

node-ews sử dụng httpntlm nội bộ để xác thực NTLM.

Cá nhân, tôi nghĩ rằng nút-ews là đặt cược tốt nhất của bạn, vì nó đã triển khai khá nhiều mọi thứ bạn cần để tương tác với EWS.

+0

Xin chào Aaron, bạn có cơ hội nào sử dụng chức năng GetRoom không? Tôi đang cố gắng để có được lịch cho phòng làm việc của tôi để xem có sẵn –

+0

@ RasmusBidstrup Tôi đã không, tuy nhiên, có một vài bước bạn phải có được quyền. 1) có một đối tượng JSON được định dạng tốt cho yêu cầu, xem [issue # 27] (https://github.com/nmarus/node-ews/issues/27) tại trang dự án 'node-ews'. 2) đảm bảo thông số bạn đang sử dụng hợp lệ (như địa chỉ email chính xác). Vui lòng [tạo ra một vấn đề] (https://github.com/nmarus/node-ews/issues/new) và tôi sẽ cố gắng giúp đỡ nhiều nhất có thể. –

+0

Cảm ơn bạn :-) Im một chút nhầm lẫn về tên EWS đang sử dụng, Có đúng là cuộc hẹn/cuộc họp của nó cho một phòng (qua email hoặc tên) tôi cần phải tìm, và không phải là một lịch? Tôi sẽ cố gắng giải thích những gì tôi đã làm và nơi tôi bị kẹt. –

0

Tôi đã tìm thấy mô-đun Node.js này hỗ trợ giao tiếp với Exchange 2010, tuy nhiên tôi vẫn đang cố gắng tìm hiểu cách sử dụng nó một cách cá nhân, tài liệu đó nhẹ nhàng. https://npmjs.org/package/exchanger

+0

Cảm ơn bạn, tìm kiếm thêm một cách tiếp cận trực tiếp mà không cần mô-đun. Tôi sẽ kiểm tra xem nó có hoạt động không. – AngryMonkey

+0

Tôi đã thử sử dụng 'bộ trao đổi 'nhưng hiện tại có lỗi với' nút-expat' đã ngăn tôi thử nghiệm thêm. 'Lỗi: Không thể tìm thấy mô đun '../ build/Release/node_expat.node'' –

1

Bạn đã thử mô-đun httpntlm chưa? https://github.com/SamDecrock/node-http-ntlm

+0

Điều này có vẻ đầy hứa hẹn và đơn giản. Tôi không cố gắng để làm điều này nữa, nhưng nếu ai đó có thể xác minh rằng nó hoạt động tôi sẽ đánh dấu nó như được chấp nhận vì điều này dường như là một mục đích chung NTLM kết nối. – AngryMonkey

1

Bạn đã thử mô-đun ews-javascript-api npm, nó có tất cả các tính năng bạn đang xem xét + xác thực ntlm rất đơn giản sử dụng mô-đun ews-javascript-api-auth. NTLMv2 cũng được hỗ trợ.

Tôi đã thêm câu trả lời này làm câu trả lời vì nó sẽ cung cấp câu trả lời hoàn chỉnh cho tiêu đề câu hỏi (tích hợp). Đây là những liên kết github, câu hỏi là rất ít chung chung vì vậy mẫu được cung cấp tại github readme nên làm việc.

[từ chối trách nhiệm - Tôi là tác giả]

Các vấn đề liên quan