2014-11-08 14 views
7

Desidero accedere a un servizio WSDL tramite il client SOAP in Node.js. Ho usato il modulo di nodo soap. Ma non riesco a trovare alcuna documentazione per impostare nome utente e password. Non creerò il server SOAP, voglio solo SOAPClient che è simile a SoapClient di PHP, utilizzando il quale dovrei poter accedere al servizio WSDL.Impostazione autorizzazione nel client SOAP Node.js

Aggiornamento:

avevo biforcuta e personalizzato la fonte per supportare questa funzionalità https://github.com/sincerekamal/node-soap

risposta

17

è possibile fornire nome utente e password in questo modo:

var soap = require('soap'); 
var url = 'your WSDL url'; 
var auth = "Basic " + new Buffer("your username" + ":" + "your password").toString("base64"); 

soap.createClient(url, { wsdl_headers: {Authorization: auth} }, function(err, client) { 
}); 

(derivato da https://github.com/vpulim/node-soap/issues/56, grazie Gabriel Lucenahttps://github.com/glucena)

4

solo condividere quello che ho letto da https://github.com/vpulim/node-soap:

var soap = require('soap'); 
var url = 'your WSDL url'; 

soap.createClient(url, function(err, client) { 
    client.setSecurity(new soap.BasicAuthSecurity('your username','your password')); 
}); 
+1

Non sarebbe questo errore se il WSDL era anche dietro l'autenticazione? –

+0

Da quello che ho vissuto, no. Sembra che l'autenticazione sia stata eseguita prima di ottenere il WSDL. –

+2

No, wsdl viene utilizzato per creare il client passato alla richiamata in cui si imposta la sicurezza su di esso. Per quanto posso dire questo metodo è lì per quando wsdl non richiede l'autenticazione, richiede un'autenticazione diversa o viene caricato dal file system. Penso che sia necessario passare l'auth al metodo create client: var auth = "Basic" + nuovo Buffer ('username' + ':' + 'password'). ToString ("base64"); cliente var = Soap.createClient ('WSDLURL', {wsdl_headers: {Autorizzazione: auth}}, (err, client) => { se (err) { tiro err; } else { client.yourMethod ( } }); –

5

Un'altra opzione per aggiungere l'autenticazione di base sta usando client.addHttpHeader. Ho provato sia setSecurity sia impostando wsdl_headers ma non ha funzionato per me durante l'autenticazione con Cisco CUCM AXL.

Ecco cosa ha funzionato per me:

var soap = require('soap'); 
var url = 'AXLAPI.wsdl'; // Download this file and xsd files from cucm admin page 
var auth = "Basic " + new Buffer("your username" + ":" + "your password").toString("base64"); 
soap.createClient(url,function(err,client){ 
    client.addHttpHeader('Authorization',auth); 
}); 
3

è necessario impostare il nome utente e la password passando l'autorizzazione alle wsdl_headers oggetto ad esempio

var auth = "Basic " + new Buffer('username' + ':' + 'password').toString("base64"); 

var client = Soap.createClient('wsdlUrl', { wsdl_headers: { Authorization: auth } }, (err, client) => { 
    if (err) { 
     throw err; 
    } else { 
     client.yourMethod(); 
    } 
});