Как я могу сделать HTTP-запрос в NodeJS к API с включенной подписью? - PullRequest
0 голосов
/ 14 июня 2019

Я создаю приложение, которое использует API от банковских провайдеров. Там я должен отправить подпись в запросе, но я не знаю, как это сделать в Node JS.

Я нашел пакет npm с именем http-auth, но он не поддерживает этот тип авторизации. В банке есть документация о том, как использовать их API, но заголовки показаны как используемые в Linux.

Показан пример кода банковского провайдера:

POST /oauth2/token
Host: api.ing.com
Date: Sun, 05 Jan 2014 21:31:40 GMT
Content-Type: application/x-www-form-urlencoded
Digest: SHA-256=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=
Authorization: Signature keyId="[CLIENT_ID or EIDAS_SERIAL_CA_IDENTIFIER]",algorithm="rsa-sha256", headers="(request-target) date digest", signature="[SIGNATURE_VALUE]"

grant_type=client_credentials&scope=greetings%3Aview

Моя (грустная) попытка:

request({
    url: apiURL,
    agentOptions: {
      key: fs.readFileSync(path.resolve('./backend/ssl/example_client_signing.key')),
      cert: fs.readFileSync(path.resolve('./backend/ssl/example_client_signing.cer'))
    },
    headers: 
    { 
      'content-type': 'application/x-www-form-urlencoded',
      'date': 'Wed, 14 Feb 2018 11:15:00 GMT',
      'digest': 'SHA-256=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=',
      'Authorization': 'Signature keyId="SN=499602D2,CA=C=NL,ST=Amsterdam,L=Amsterdam,O=ING,OU=ING,CN=AppCertificateMeansAPI",algorithm="rsa-sha256", headers="(request-target) date digest"'
    }

Так кто-нибудь знает, как правильно сделать этот запрос?

...