如何在NodeJS中向包含签名的API发出http请求?

时间:2019-06-14 11:24:11

标签: node.js rest api http-headers authorization

我正在构建一个使用银行提供商的API的应用程序。在那里,我必须在请求中发送签名,但是我不知道如何在Node JS中进行签名。

我找到了一个名为http-auth的npm软件包,但它似乎不支持这种类型的授权。 银行提供了有关如何使用其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"'
    }

那么有人知道如何正确发出此请求吗?

0 个答案:

没有答案