Аутентификация в запросе мыла Node JS
Я использую сильное мыло ( https://www.npmjs.com/package/strong-soap) для использования wsdl из Node JS
У меня есть WSDL с заголовком, как показано ниже:-
<soapenv:Header>
<wsse:Security xmlns:wsse="http://xyz.xsd">
<wsse:UsernameToken wsu:Id="UsernameToken-24" xmlns:wsu="http://secure.xsd">
<wsse:Username>userid</wsse:Username>
<wsse:Password Type="http://pwdtext">password</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
Мне нужно добавить эту информацию заголовка при создании клиента. Я пробовал как
var url = "test?wsdl";
soap.createClient(url, {wsdl_headers: {"Username": "username","Password":"password"} }, function(err, client) {
//some logic
});
Но каждый раз я получал мыло по вине "Аутентификация не удалась".
Есть идеи, что я делаю не так?
Заранее спасибо.
2 ответа
У меня была та же проблема, пытаясь получить данные.
моя ошибка заключалась в том, что в параметрах метода createClient использовались заголовки вместо wsdl_headers
также установите такую же аутентификацию на клиенте перед вызовом любого метода
мой код выглядит как
var url = 'https://datahere?wsdl';
var httpOptions = {
wsdl_headers: {
'Authorization': 'Basic ' + new Buffer('username' + ':' + 'password').toString('base64')
}
};
soap.createClient(url, httpOptions, function(err, client) {
if (err) {
console.log(err.message);
response.status(401).end();
} else {
var requestArgs = {
Method1: 'dummyData',
Method2: ''
};
// client.setSecurity(new soap.BasicAuthSecurity('password', 'password'));
client.addHttpHeader('customHeader1', 'words');
client.addHttpHeader('Authorization', "Basic " + new Buffer('username-app-maker' + ':' + 'password').toString('base64'));
client.GETSOAPMETHOD(requestArgs, function(err, result) {
if (err) {
console.log(err.message);
}
console.log('i found ' + result);
response.send(result);
});
}
});
Как уже упоминалось в этом ответе, объект wsdl_header ожидает ключ "Аутентификация".
Поэтому попробуйте запустить следующий код:
var url = 'test?wsdl';
var auth = "Basic " + new Buffer("your username" + ":" + "your password").toString("base64");
soap.createClient(url, { wsdl_headers: {Authorization: auth} }, function(err, client) {
});