我一直在尝试获得亚马逊 s3 rest api的授权。真是太他妈复杂了。
因为我试图从我网站上的管理页面发出一个简单的GET 请求,所以我只是试图通过 Javascript 来做到这一点。以下是为 Authorization 标头构造签名的说明:
Signature = Base64( HMAC-SHA1( YourSecretAccessKeyID, UTF-8-Encoding-Of( StringToSign ) ))
为了让我们保持清醒,他们给我们举了几个例子,并给出了以下信息:
var AWSSecretAccessKey = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY,
StringToSign = 'GET\n\n\nTue, 27 Mar 2007 19:36:42 +0000\n/johnsmith/photos/puppy.jpg;'
他们文档中的输出是bWq2s1WEIj+Ydj0vQ697zp+IXMU=
. 基于以下我得到ZGVjNzNmNTE0MGU4OWQxYTg3NTg0M2MxZDM5NjIyZDI0MGQxZGY0ZQ==
:
function encode_utf8(s) {
return unescape(encodeURIComponent(s));
}
我使用code.google.com 的CryptoJS.HmacSHA1 函数进行 SHA1 散列。我的最终签名函数如下所示:
var signature = btoa( CryptoJS.HmacSHA1( aws_secret, encode_utf8( StringToSign) ) );
这里出了什么问题???