2012-02-08 15 views
7

Sto tentando di utilizzare Node.js per chiamare i servizi EWS di Exchange SOAP. Ho creato un semplice client http in questo modo:Integrazione Node.js con 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(); 

ricevo un codice di stato 401, ho il sospetto perché io non sto facendo i tre passaggi necessari per l'autenticazione NTLM (http://www.innovation.ch/personal/ronald/ntlm.html). Qualcuno sa di un modulo Node.js per comunicare direttamente con EWS di Exchange o per l'autenticazione tramite NTLM, o avrò bisogno di implementare tale protocollo per Node.js da solo? Qualsiasi assistenza è molto apprezzata.

+0

Hai mai risolto il problema? –

+1

Purtroppo non l'ho fatto. Abbiamo deciso di utilizzare un'autenticazione Kerberos, in parte a causa dei problemi riscontrati qui. – AngryMonkey

risposta

1

Ho utilizzato con successo node-ews per comunicare con EWS.

node-ews utilizza httpntlm internamente per l'autenticazione NTLM.

Personalmente, penso che nodo-ews è la soluzione migliore, poiché praticamente ha già implementato tutto ciò che è necessario per interagire con EWS.

+0

Ciao Aaron, sei mai riuscito a utilizzare la funzione GetRoom? Sto cercando di ottenere i calendari per la mia stanza di lavoro per vedere quali sono disponibili –

+0

@RasmusBidstrup Non ho, tuttavia, ci sono alcuni passaggi che devi andare bene. 1) avere un oggetto JSON ben formato per la richiesta vedere [numero # 27] (https://github.com/nmarus/node-ews/issues/27) alla pagina del progetto 'node-ews'. 2) assicurati che i parametri che stai usando siano validi (come l'indirizzo email corretto). Sentiti libero di [creare un problema] (https://github.com/nmarus/node-ews/issues/new) e cercherò di aiutarti il ​​più possibile. –

+0

Grazie :-) Im un po 'confuso sul nome che EWS sta usando, è corretto che i suoi appuntamenti/meeting per una camera (via e-mail o nome) ho bisogno di trovare, e non un calendario? Farò un caso cercando di spiegare cosa ho fatto e dove sono bloccato. –

0

Ho trovato questo modulo Node.js che supporta la comunicazione con Exchange 2010, tuttavia sto ancora cercando di capire come utilizzarlo personalmente, la documentazione è leggera. https://npmjs.org/package/exchanger

+0

Grazie, cercando più di un approccio diretto senza il modulo. Lo controllerò per vedere se il modulo funziona altrettanto bene. – AngryMonkey

+0

Ho provato ad usare 'exchanger' ma al momento c'è un errore con' node-expat' che mi ha impedito di effettuare ulteriori test. 'Errore: impossibile trovare il modulo '../ build/Release/node_expat.node'' –

1

Hai provato il modulo httpntlm? https://github.com/SamDecrock/node-http-ntlm

+0

Questo sembra promettente e semplice. Non sto provando a farlo più ma se qualcuno può verificare che funzioni, lo contrassegnerò come accettato poiché questo sembra essere un connettore NTLM più generale. – AngryMonkey

1

Hai provato il modulo ews-javascript-api npm, ha tutte le funzionalità che stai osservando + molto semplice autenticazione tramite ntlm utilizzando il modulo ews-javascript-api-auth. NTLMv2 è anche supportato.

Ho aggiunto questo come risposta in quanto fornirebbe una risposta completa al titolo della domanda (integrazione). Questi sono collegamenti github, la domanda è poco generica, quindi i campioni forniti al file github dovrebbero funzionare.

[disclaimer - Sono l'autore]

Problemi correlati