Аутентификация в запросе мыла 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) {
});
Другие вопросы по тегам