2014-11-08 12 views
7

Chcę uzyskać dostęp do usługi WSDL za pośrednictwem klienta SOAP w pliku Node.js. Użyłem modułu węzła soap. Ale nie mogę znaleźć żadnej dokumentacji do ustawienia nazwy użytkownika i hasła. Nie zamierzam tworzyć serwera SOAP, chcę tylko SOAPClient, który jest podobny do SoapClient PHP, za pomocą którego powinienem mieć dostęp do usługi WSDL.Ustawianie autoryzacji w Node.js Klient SOAP

Aktualizacja:

miałem rozwidlony i dostosowane źródła do obsługi tej funkcji https://github.com/sincerekamal/node-soap

Odpowiedz

17

można podać nazwę użytkownika i hasło tak:

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) { 
}); 

(pochodzący z https://github.com/vpulim/node-soap/issues/56, dziękuję ty Gabriel Lucenahttps://github.com/glucena)

4

Wystarczy udostępnić tego co czytałem z 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

nie ten błąd, gdy był WSDL także za uwierzytelnianiem? –

+0

Z tego, czego doświadczyłem, nie. Wygląda na to, że uwierzytelnianie jest wykonywane przed uzyskaniem WSDL. –

+2

Nie, kod WSDL jest używany do budowania klienta, który jest przekazywany do wywołania zwrotnego, w którym następnie ustawia się zabezpieczenia. O ile mogę powiedzieć, że ta metoda jest dostępna, gdy serwer wsdl nie wymaga uwierzytelnienia, wymaga innego uwierzytelnienia lub jest ładowany z systemu plików. Myślę, że musisz przekazać uwierzytelnienie do metody create client: var auth = "Basic" + nowy bufor ("nazwa użytkownika" + ":" + "hasło"). ToString ("base64"); var klienta = Soap.createClient ('wsdlUrl', {wsdl_headers {autoryzacji:}} Auth (eee klient) => { if (eee) { rzut yyy; } else { client.yourMethod (); } }); –

5

Inną opcją, aby dodać uwierzytelnianie podstawowe korzysta client.addHttpHeader. Próbowałem zarówno setSecurity i ustawienie wsdl_headers, ale nie pracował dla mnie podczas uwierzytelniania Cisco CUCM AXL.

Oto co pracował dla mnie:

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

trzeba ustawić nazwę użytkownika i hasło, przekazując upoważnienie do wsdl_headers sprzeciw np

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(); 
    } 
});