Node.js:AWS签名的计算

时间:2015-07-26 13:02:50

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

我在使用AWS Signature计算时遇到问题。目标是读取作为URL(key,dateStamp,regionName,serviceName)的一部分传递的4,并使用它们来计算签名。我不是Node.js的专家,您的帮助和时间表示赞赏。

  1. 网址示例: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. 签名示例:签名= 265f004b995af67102af3c5ff84b0f34e091165a190ac62730c76e919d91b77a
  4. 我的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不是函数   c:\ Users \ xxx \ WebstormProjects \ Unscriptd \ app.js:34:24 at   Layer.handle [as handle_request]   (C:\用户\ XXX \ WebstormProjects \ Unscriptd \ node_modules \表达\ lib中\路由器\ layer.js:95:5)   在下一个   (C:\用户\ XXX \ WebstormProjects \ Unscriptd \ node_modules \表达\ lib中\路由器\ route.js:131:13)

    导入了Crypto-js库。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

多德。我将你的代码复制到我的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行,但你的代码没有这一行。 您可能正在查看不同的文件并执行不同的文件。

让我知道它是怎么回事。

感谢。