0

我正在使用 AWS4 生成签名并传入请求标头。生成的签名没有得到验证。

const opts = {
        service: 's3',
        region: 'region-name',
        method: 'GET',
        host: 's3-{region-name}.amazonaws.com',
        path: '/',
    };

我正在使用以下代码来生成签名

   var signature =  aws4.sign(opts, {
      accessKeyId: 'XXXXXX',
      secretAccessKey: 'XXXXXXXXXXXXXXXXXXXX',
    });

并更新 AutoUpdater(某些模块)的请求标头,最终达到 aws。

autoUpdater.requestHeaders = signature.headers;

以错误消息结束

<Error><Code>SignatureDoesNotMatch</Code><Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message>

有什么建议可以让它工作吗?

4

2 回答 2

0

计算签名

1.使用 UTF-8 编码创建策略。

2.将UTF-8编码的策略转换为Base64。结果是要签名的字符串。

3.将签名创建为要签名的字符串的 HMAC-SHA256 哈希。您将提供签名密钥作为散列函数的密钥。

4.使用十六进制编码对签名进行编码。

希望这会有所帮助。

谢谢穆克什

于 2019-07-26T07:36:13.927 回答
0

尝试这个:

request(aws4.sign({
hostname: 'test.amazonAPI.com',
service: 'execute-api',
region: 'us-east-1',
method: 'POST',
url: 'https://test.amazonAPI.com/test/doThing', // this field is not 
recommended in the document.
  body: load
 },
{
accessKeyId: tempCreds.Credentials.AccessKeyId,
secretAccessKey: tempCreds.Credentials.SecretAccessKey,
sessionToken: tempCreds.Credentials.SessionToken
}))
于 2019-07-26T07:39:54.160 回答