Javascript中Amazon Api授权中的SHA-1
SHA-1 in Amazon Api Authorization in Javascript
我一直在尝试获得Amazon s3 rest api的授权。这太复杂了。
因为我想让一个简单的GET请求从我的网站管理页面,我只是想通过Javascript做到这一点。下面是为授权头构造签名的说明:
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哈希。我最后的Signature函数是这样的:
var signature = btoa( CryptoJS.HmacSHA1( aws_secret, encode_utf8( StringToSign) ) );
这里出了什么问题?
我实际上从一个SO问题中找到了答案,参考了谷歌的旧(2.0)CrytpoJs库。你需要:
- 2.0.0-crypto-sha1.js
- 2.0.0-hmac-min.js
然后你创建你的签名如下:
Signature = btoa( Crypto.HMAC(Crypto.SHA1, encode_utf8(StringToSign), aws_secret, { asString: true }) )
我找不到在新版本中获得字符串而不是比特的方法。
相关文章:
- Flash Uploadify在调用我的MVC控制器时没有保留会话/授权
- 为什么我的解析云代码请求'未经授权'
- 如何将权限/授权数据传递到客户端Javascript
- Twitter API在jQuery AJAX中设置授权头
- 如何在网络应用程序中使用Firebase进行用户授权
- 检查用户是否在Orchard CMS中获得授权
- 编写JavaScript库:如何授权方法
- Node.js和angular用户授权
- 应用程序引擎终结点:用于OAuth2授权的Javascript客户端库需要多个弹出窗口
- 使用声明式授权的“without_access_control”与 Cucumber 的@javascript
- 有没有办法使用浏览器从 RESTful 网络服务下载文件,该文件要求授权标头
- 如何从按钮调用LinkedIn授权javascript
- Phantomjs 看不到 Twitter/Facebook 授权页面
- 如何触发带有第一个请求(Windows 身份验证)的授权标头的 AJAX 帖子
- 使用 JsonWebToken 授权标头获取图像
- 为什么不't浏览器在经过身份验证的XMLHttpRequest之后重用授权标头
- (“NetworkError:401未经授权)从JavaScript调用代码隐藏方法
- 无法使用领英进行授权
- 授权Angular中的检查访问
- Javascript中Amazon Api授权中的SHA-1