【问题标题】:Node.js: Calculation of AWS SignatureNode.js:AWS 签名的计算
【发布时间】:2017-02-26 21:12:19
【问题描述】:

我在让 AWS 签名计算正常工作时遇到问题。目标是读取作为 URL 一部分传递的 4(key、dateStamp、regionName、serviceName)并将它们用于计算签名。我不是 Node.js 专家,非常感谢您的帮助和时间。

  1. URL 示例:http://localhost:3000/getSignature?key=ASIAJSLN6INQGFK7XX7Q&dateStamp=26072015&regionName=us-east-1&serviceName=IAM
  2. Java 脚本的 AWS 规范:http://docs.aws.amazon.com/general/latest/gr/signature-v4-examples.html#signature-v4-examples-jscript
  3. 签名示例:Signature=265f004b995af67102af3c5ff84b0f34e091165a190ac62730c76e919d91b77a

我的 Node.js 代码...

var express = require('express');
var app = express();
var port = process.env.PORT || 3000;

//Crypto
var Crypto = require('crypto-js');

// routes
app.get('/getSignature', function(req, res) {
    var key = req.param('key');
    var dateStamp = req.param('dateStamp');
    var regionName = req.param('regionName');
    var serviceName = req.param('serviceName');

    var kDate = Crypto.HMAC(Crypto.SHA256, dateStamp, "AWS4" + key, {asBytes: true});
    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});
    res.send(key + ' ' + dateStamp + ' ' + regionName + ' ' + serviceName + ' ' + kSigning);

});

// start the server
app.listen(port);
console.log('Server started! At http://localhost:' + port);

我收到以下运行时错误:

TypeError: undefined is not a function at c:\Users\xxx\WebstormProjects\Unscriptd\app.js:34:24 at Layer.handle [as handle_request] (c:\Users\xxx\WebstormProjects\Unscriptd\node_modules\express\lib\router\layer.js:95:5) 接下来 (c:\Users\xxx\WebstormProjects\Unscriptd\node_modules\express\lib\router\route.js:131:13)

Crypto-js 库已导入。

【问题讨论】:

  • 你能告诉我们 app.js 的第 34 行吗?它似乎不在这里。

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


【解决方案1】:

第 34 行没有任何内容。第 31 行是最后一行。

【讨论】:

  • 您可以将其添加为评论,而不是作为答案。 :)
【解决方案2】:

老兄。我将您的代码复制到我的 github(以重现)。 https://github.com/ttwd80/so-nikolai-nodejs.git

这是我执行的步骤 cd /tmp rm -rf so-nikolai-nodejs git clone https://github.com/ttwd80/so-nikolai-nodejs.git cd so-nikolai-nodejs wc -l app.js npm install crypto-js npm install express node app.js 它向我展示了:

Server started! At http://localhost:3000

不太清楚为什么会出现错误。

也许您可以尝试重复这些步骤?

问题是,您的错误抱怨第 34 行,但您的代码没有这一行。 您可能正在查看不同的文件并执行不同的文件。

告诉我进展如何。

谢谢。

【讨论】:

    猜你喜欢
    • 2015-05-08
    • 2012-08-02
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    • 2017-03-20
    • 2021-03-26
    • 2017-07-12
    • 1970-01-01
    相关资源
    最近更新 更多