Узел мыла ClientSSLSecurityPFX - 403 Запрещено - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь подключиться к службе SOAP с node-soap , но получаю 403 - Forbidden.

У меня есть файл pfx и пароль, и я пытаюсь:

var pfx = fs.readFileSync(path.join(__dirname, 'folder', 'my.pfx')); // pfx file is in the relative path './folder/my.pfx'
var password = 'mypassword';
var options = {
  strictSSL: true,
  rejectUnauthorized: false,
  hostname: myUrl,
  forever: true
};
var security = new soap.ClientSSLSecurityPFX(pfx, password, options);
var url = 'https://theservice.com/ApplicationService.svc?singleWsdl';
soap.createClient(url, function (err, client) {
  console.log(err);
  console.log(client);
  client.setSecurity(security);
});

Но я получаю 403:

[Error: Invalid WSDL URL: https://theservice.com/ApplicationService.svc?singleWsdl

 Code: 403

 Response Body: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/> <title>403 - Forbidden: Access is denied.</title>...

    client.setSecurity(security);
          ^    
TypeError: Cannot read property 'setSecurity' of undefined

Я могу получить доступ кобслуживание через браузер, установив pfx на связку ключей MacOS.Так что URL, pfx, пароль и т. Д. Должны быть в порядке.

Есть идеи, что может быть проблемой и как ее отладить?Спасибо!

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

В моем случае мне пришлось сделать это в дополнение к ответу @mooses, и, возможно, это кому-нибудь поможет (на их примере):

  var options = {
    wsdl_options: {
      forever: true,
      rejectUnauthorized: false,
      strictSSL: false,
      pfx: fs.readFileSync(__dirname + '/folder/my.pfx'),
      passphrase: 'myPass'
    }
  };
  soap.createClient(myUrl, options, function (err, client) {
    client.setSecurity(new soap.ClientSSLSecurityPFX(pfx, pfxPass)); // <-----
    console.log(err);
    console.log(client);
  });
0 голосов
/ 26 мая 2018

Мне удалось подключиться, установив pfx и пароль в options.wsdl_options:

  var options = {
    wsdl_options: {
      forever: true,
      rejectUnauthorized: false,
      strictSSL: false,
      pfx: fs.readFileSync(__dirname + '/folder/my.pfx'),
      passphrase: 'myPass'
    }
  };
  soap.createClient(myUrl, options, function (err, client) {
    console.log(err);
    console.log(client);
  });

Таким образом, они получают доступ к параметрам HTTP и позволяют подключаться с помощью сертификата клиента.

...