2012-02-08 39 views
7

के साथ नोड.जेएस एकीकरण मैं एसओएपी एक्सचेंज ईडब्ल्यूएस सेवाओं को कॉल करने के लिए नोड.जेएस का उपयोग करने का प्रयास कर रहा हूं। मैं बहुत की तरह एक साधारण 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 के लिए लागू करने की आवश्यकता होगी? किसी भी मदद का बहुत स्वागत है।

+0

क्या आपने कभी इस मुद्दे को हल किया है? –

+1

दुर्भाग्य से मैंने नहीं किया। हमने यहां मौजूद मुद्दों के कारण भाग में इसके बजाय केर्बेरोस प्रमाणीकरण के साथ जाने का फैसला किया। – AngryMonkey

उत्तर

1

मैंने node-ews सफलतापूर्वक ईडब्ल्यूएस के साथ संवाद करने के लिए उपयोग किया है।

node-ews एनटीएलएम प्रमाणीकरण के लिए आंतरिक रूप से httpntlm का उपयोग करता है।

व्यक्तिगत रूप से, मुझे लगता है कि नोड-ईयूएस आपकी सबसे अच्छी शर्त है, क्योंकि इसकी बहुत कुछ पहले से ही ईडब्ल्यूएस के साथ बातचीत करने के लिए आवश्यक है।

+0

हाय हारून, क्या आप किसी भी मौके से GetRoom फ़ंक्शन का उपयोग करने में कामयाब रहे हैं? मैं अपने काम के कमरे के लिए कैलेंडर्स प्राप्त करने की कोशिश कर रहा हूं यह देखने के लिए कि –

+0

@RasmusBidstrup मैंने हालांकि कुछ कदम उठाए हैं, आपको सही नहीं होना चाहिए। 1) अनुरोध के लिए एक अच्छी तरह से तैयार JSON ऑब्जेक्ट है [मुद्दा # 27] (https://github.com/nmarus/node-ews/issues/27) 'node-ews' प्रोजेक्ट पेज पर। 2) सुनिश्चित करें कि आप जिन पैरामीटर का उपयोग कर रहे हैं वे मान्य हैं (सही ईमेल पते की तरह)। [एक समस्या बनाएं] (https://github.com/nmarus/node-ews/issues/new) के लिए स्वतंत्र महसूस करें और मैं जितना संभव हो उतना मदद करने की कोशिश करूंगा। –

+0

धन्यवाद :-) मैं ईडब्ल्यूएस नाम के बारे में थोड़ा उलझन में हूं, क्या यह सही है कि एक कमरे (ईमेल या नाम से) के लिए इसकी नियुक्ति/बैठक मुझे कैलेंडर खोजने की ज़रूरत है? मैं यह समझाने की कोशिश कर रहा हूं कि मैंने क्या किया है और जहां मैं फंस गया हूं। –

0

मुझे यह एक नोड.जेएस मॉड्यूल मिला है जो एक्सचेंज 2010 के साथ संचार करने का समर्थन करता है, हालांकि मैं अभी भी यह समझने की कोशिश कर रहा हूं कि इसे व्यक्तिगत रूप से कैसे उपयोग किया जाए, दस्तावेज़ीकरण हल्का है। https://npmjs.org/package/exchanger

+0

धन्यवाद, मॉड्यूल के बिना एक सीधी दृष्टिकोण की तलाश में। हालांकि मैं इसे देखता हूं और देखता हूं कि मॉड्यूल भी काम करता है या नहीं। – AngryMonkey

+0

मैंने 'एक्सचेंजर' का उपयोग करने का प्रयास किया लेकिन फिलहाल 'नोड-एक्सपैट' के साथ एक त्रुटि हुई जिसने मुझे आगे परीक्षण से रोका। 'त्रुटि: मॉड्यूल नहीं मिल सका' ../ build/release/node_expat.node'' –

1

क्या आपने httpntlm मॉड्यूल की कोशिश की है? https://github.com/SamDecrock/node-http-ntlm

+0

यह आशाजनक और सरल दिखता है। मैं अब ऐसा करने की कोशिश नहीं कर रहा हूं, लेकिन अगर कोई यह सत्यापित कर सकता है कि यह काम करता है तो मैं इसे स्वीकार्य मानता हूं क्योंकि यह एनटीएलएम कनेक्टर का एक और सामान्य उद्देश्य प्रतीत होता है। – AngryMonkey

1

क्या आपने ews-javascript-api एनपीएम मॉड्यूल की कोशिश की है, इसमें ews-javascript-api-auth मॉड्यूल का उपयोग करके आप बहुत सी सुविधाएं एनटीएलएम प्रमाणीकरण देख रहे हैं। एनटीएलएमवी 2 भी समर्थित है।

मैंने इसे उत्तर के रूप में जोड़ा क्योंकि यह प्रश्न शीर्षक (एकीकरण) का पूरा उत्तर प्रदान करेगा। ये जिथब लिंक हैं, सवाल थोड़ा सामान्य है इसलिए जीथूब रीडेमे में उपलब्ध नमूनों को काम करना चाहिए।

[अस्वीकरण - मैं लेखक हूं]