AWS REST API v4,SignatureDoesNotMatch,使用示例值/算法步骤的错误签名

时间:2015-07-07 13:29:14

标签: rest amazon-web-services amazon-s3 hmac sha256

为什么我从这里的示例中获取“签名”的不同值(我从中复制了值和算法步骤)?

输入:

var YourSecretAccessKey = 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY';
var date = '20130524';

var signing_key = getSignatureKey(YourSecretAccessKey, date, 'us-east-1', 's3');

StringToSign: AWS4-HMAC-SHA256
20130524T000000Z
20130524/us-east-1/s3/aws4_request
3bfa292879f6447bbcda7001decf97f4a54dc650c8942174ae0a9121cf58ad04

var Signature = Crypto.HmacSHA256( signing_key, StringToSign );

输出

Signature: c4b97c8d906d49d5fb7a14479fc69b033cbf2d1b9bb67df6058ec8ab4714ee97

如您所见,签名结果与亚马逊的示例有所不同:http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html

Signature: aeeed9bbccd4d02ee5c0109b86d86835f995330da4c265957d157751f604d404

也许我的getSignatureKey函数没有正确执行Hmac.Sha256函数?

function getSignatureKey(key, dateStamp, regionName, serviceName) {

   var hs = Crypto.HmacSHA256;
   var kSigning = hs(hs(hs(hs("AWS4" + YourSecretAccessKey,dateStamp),regionName),serviceName),"aws4_request");

   return kSigning;
}

我得到了这个签名密钥,fwiw:

//signing_key: 582cf07cc7ea5cd0a5c0a1f6422cf32eef38fdae7a4073d17ba0195cbf5c85ce

该示例未显示signing_key结果,因此我无法知道signing_key是否正确。我所知道的是,结果签名与示例结果不同。

示例网址结果将提供“请求已过期”,这是预期的,但在使用当前日期时,我会获得SignatureDoesNotMatch。

签名一代出了问题。

感谢您的帮助!

0 个答案:

没有答案