2014-11-08 5 views
7

Ich möchte auf einen WSDL-Service über SOAP-Client in Node.js zugreifen. Ich benutzte Soap Knotenmodul. Ich kann jedoch keine Dokumentation finden, um den Benutzernamen und das Passwort festzulegen. Ich werde keinen SOAP-Server erstellen, sondern nur einen SOAPClient, der dem PHP-SoapClient ähnlich ist, mit dem ich auf den WSDL-Dienst zugreifen kann.Einstellung Autorisierung in Node.js SOAP-Client

aktualisieren:

Ich hatte gegabelt und maßgeschneiderte die Quelle zur Unterstützung dieser Funktion https://github.com/sincerekamal/node-soap

Antwort

17

Sie Benutzernamen und Passwort wie folgt zur Verfügung stellen kann:

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

(abgeleitet von https://github.com/vpulim/node-soap/issues/56, danken Sie Gabriel Lucenahttps://github.com/glucena)

4

einfach zu teilen, was ich von https://github.com/vpulim/node-soap gelesen habe:

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

Wäre nicht dieser Fehler, wenn die WSDL-Datei war auch hinter Authentifizierung? –

+0

Von dem, was ich erlebt habe, nein. Es scheint, dass die Authentifizierung vor dem Abrufen der WSDL erfolgt. –

+2

Nein, die WSDL wird verwendet, um den Client zu erstellen, der an den Rückruf übergeben wird, wo Sie dann die Sicherheit festlegen. Soweit ich das sagen kann, ist diese Methode dort, wenn die wsdl keine Auth benötigt, erfordert eine andere Auth oder wird aus dem Dateisystem geladen. Ich denke, Sie müssen die Auth an die Create-Client-Methode übergeben: Var Auth = "Basic" + neue Puffer ('Benutzername' + ':' + 'Passwort'). ToString ("base64"); var client = Soap.createClient ('WSDLURL', {wsdl_headers: {Berechtigung: Auth}}, (err, Client) => { if (err) { Wurf err; } else { client.yourMethod (); } }); –

5

Eine weitere Option hinzuzufügen Standardauthentifizierung client.addHttpHeader verwendet. Ich habe sowohl setSecurity als auch setting wsdl_headers ausprobiert, aber bei der Authentifizierung für Cisco CUCM AXL funktionierte keiner für mich. Hier

ist das, was für mich gearbeitet:

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

Sie müssen den Benutzernamen und das Passwort setzen, indem die Berechtigung vorbei an die wsdl_headers zB Objekt

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