繁体   English   中英

在JavaScript中生成Amazon API签名,导入哈希函数(jQuery)

[英]Generating Amazon API signature in JavaScript, importing hash functions (jQuery)

作为序言,我对JavaScript和Web开发非常陌生。 对于任何愚蠢的错误或误解,我深表歉意!

我正在为门户网站制作小部件。 设置小部件时,每个小部件都是独立的JavaScript函数,因此我无法在小部件外部访问网页的HTML。

我当前的目标是向Amazon发出API请求,这要求在每次请求时都生成一个签名。 我正在使用Amazon提供的以下指南:

http://docs.aws.amazon.com/general/latest/gr/signature-v4-examples.html#signature-v4-examples-jscript

不幸的是,由于我无权访问网页的HTML,因此我正在使用jQuery函数$ .getScript导入上述Amazon指南提供的函数:

code.google.com/p/crypto-js/#HMAC

具体来说,这一个:

crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/hmac-sha256.js

我的功能目前看起来像这样:

/**
 *Get signature key by hashing, scheme provided by Amazon
 */
getSignatureKey: function(key, dateStamp, regionName, serviceName) {
  $.getScript("widgets/textshop/hmac-sha256.js", function(){
    return signatureKeyHelper();
  });
  //Helper function for getSignatureKey since getScript is returned immediately; function not loaded in time
  function signatureKeyHelper(){
    console.log("A");  //Outputs!
    var kDate= Crypto.HMAC(Crypto.SHA256, dateStamp, "AWS4" + key, { asBytes: true})
    console.log("B");  //Error in previous line!
    var kRegion= Crypto.HMAC(Crypto.SHA256, regionName, kDate, { asBytes: true });
    var kService=Crypto.HMAC(Crypto.SHA256, serviceName, kRegion, { asBytes: true });
    var kSigning= Crypto.HMAC(Crypto.SHA256, "aws4_request", kService, { asBytes: true });

    return kSigning;
  }
},

控制台输出“ A”,但显示错误“ TypeError:Crypto.HMAC不是函数”。 我不确定的部分是“加密”名称的使用-我完全不知道该名称的来源,是否应该将其更改为其他名称,等等。

谢谢你的时间!

加密是您通常会在页面上加载的库。

该错误表示该功能尚未定义。 我猜$ .getScript不能按您的预期工作。

注意:永远不要公开公开您的AWS密钥。 您不能在客户端进行加密。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM