Как правильно сделать HTTP-запрос на подпись? - PullRequest
0 голосов
/ 17 июня 2019

Я хочу сделать HTTP-запрос к API авторизации. Поэтому я должен использовать подпись в своем HTTP-запросе. Теперь документация по API дает мне информацию, как вызвать его с помощью примера кода. Кроме того, он дает мне заголовки.

Вот пример кода API:

Пример запроса cURL от провайдера API

curl -X POST --cert yourTLSCertPath/tls.cert --key yourTLSKeyPath/tls.key
-H Date: $reqDate
-H Digest: SHA-256=2ajR8Q+lBNm0eQW9DWWX8dZDZLB8+h0Rgmu0UCDdFrw=
-H Authorization: Signature keyId=$clientId,algorithm="rsa-sha256",headers="(request-target) date digest x-ing-reqid",signature=$signature
-H Content-Type: application/x-www-form-urlencoded
-d grant_type=client_credentials&scope=greetings%3Aview
https://api.ing.com/oauth2/token

Мой код:

  var key = fs.readFileSync(path.resolve('./backend/ssl/ING/example_client_tls.key'));
  var cert = fs.readFileSync(path.resolve('./backend/ssl/ING/example_client_tls.cer'));

  var key2 = fs.readFileSync(path.resolve('./backend/ssl/ING/example_client_signing.key'));
  var cert2 = fs.readFileSync(path.resolve('./backend/ssl/ING/example_client_signing.cer'));

    var options = {
      url: 'https://api.ing.com/oauth2/token',
      method: 'POST',
      agentOptions: {
        host: 'api.ing.com',
        cert: cert,
        key: key
      },
      headers: {
      'request-target': 'post /oauth2/token',
      'content-type': 'application/x-www-form-urlencoded',
       digest: 'SHA-256=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='
      }
    };

    var req = request(options, function(req, res, next) {
      console.log(res.statusCode);
    });

    httpSignature.sign(req, {
      key: key,
      keyId: 'SN=8296291D8E4661EF,CN=example_client_signing,OU=IT Department,O=Sample Org',
      algorithm: 'rsa-sha256',
      headers: (['(request-target)', 'date', 'digest']),
      signature: key2
    });

    req.end();

Ответ, который я получаю, - 401 (Несанкционированный). Так что я ошибаюсь здесь. Может ли кто-нибудь помочь мне исправить мой код?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...