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

问题描述 投票:0回答:1

我正在构建一个使用银行提供商使用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"'
    }

所以有人知道如何正确发出此请求吗?

node.js rest api http-headers authorization
1个回答
0
投票

有一些样品的包装,请参见https://www.npmjs.com/package/http-request-signature

© www.soinside.com 2019 - 2024. All rights reserved.