【问题标题】:How can I create a signature for AWS in Javascript?如何在 Javascript 中为 AWS 创建签名?
【发布时间】:2018-04-10 05:06:03
【问题描述】:

我正在尝试使用 Node.js 为 AWS Mechanical Turk 创建签名,但在这样做时遇到了麻烦。目前我正在使用以下内容,但不断收到错误:

CryptoJS.HmacSHA1(service + operation + timestamp, process.env.SECRET_ACCESS_KEY); 

签名的解释在这个link。它指出要创建签名

一个请求签名,一个 HMAC,是通过连接 Service、Operation 和 Timestamp 参数的值,其中 顺序,然后计算符合 RFC 2104 的 HMAC,使用 Secret Access Key 作为“密钥”。计算的 HMAC 值应为 base64 编码,并作为签名请求的值传递 范围。欲了解更多信息,请访问 http://www.faqs.org/rfcs/rfc2104.html.

【问题讨论】:

  • 看起来不错。确保时间戳采用%Y-%m-%dT%H:%M:%SZ 格式,并且您正在对 HMAC 进行 base64 编码。您需要将 HMAC 转换为字符串变量吗? (对不起,我不是 JS 专家)。
  • @Thomas 问题是时间戳看起来是正确的。然后我进行 base 64 编码,但仍然出现错误。

标签: javascript node.js amazon-web-services hmac mechanicalturk


【解决方案1】:

我认为这对你有用(我使用GetAccountBalance)作为一个简单的例子:

<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/hmac-sha1.js"></script>  
<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/components/enc-base64-min.js"></script>  
<script>
var service = "AWSMechanicalTurkRequester";
var timestamp = new Date().toISOString();
var operation = "GetAccountBalance";
var secret = "YOURSECRETKEY";
var signature = CryptoJS.HmacSHA1(service + operation + timestamp, secret).toString(CryptoJS.enc.Base64);
</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-10
    • 1970-01-01
    • 2018-04-03
    • 1970-01-01
    • 2019-07-10
    • 2022-07-08
    • 1970-01-01
    相关资源
    最近更新 更多