Nodejs - superagent-http-signature - 签名未发送

时间:2016-03-01 07:06:31

标签: node.js http-signature

我正在使用this site

var superagent = require('superagent');
var superagentHttpSignature = require('superagent-http-signature');

superagent
    .get('http://project.dev/api/v3/project/tasks/get?task_id=1026')
    .set('Accept', 'application/json')
    .set('x-app-key', 'MY_ACCESS_KEY')
    .set('x-app-trusted', 'key=None')
    .use(superagentHttpSignature({
        headers: ['(request-target)', 'Accept', 'x-app-key', 'x-app-trusted'],
        algorithm: 'hmac-sha256',
        key: 'MY_ACCESS_KEY',
        keyId: 'MY_SECRET_KEY'
    }))
    .end(function(err, res) {
        // console.log(err);
        console.log(res.body);
    });

节点版本:v4.2.1

如果我检查服务器上的签名标题(顺便运行PHP,使用自己的签名验证程序,使用相同的规范),则缺少签名标题。

我缺少什么?或者是否有任何具有相同功能的替代节点包?

我的目的是能够使用除PHP之外的其他语言来调用API作为概念证明,以便稍后我可以将其用于AWS Lambda计划任务。

1 个答案:

答案 0 :(得分:0)

您的代码正常运行,并且您的服务器端存在错误。也许PHP和代码之间的东西(Apache?nginx?)正在过滤标题。

GET /api/v3/project/tasks/get?task_id=1026 HTTP/1.1
Host: project.dev
Accept-Encoding: gzip, deflate
User-Agent: node-superagent/1.8.0-beta.2
Accept: application/json
x-app-key: MY_ACCESS_KEY
x-app-trusted: key=None
Authorization: Signature keyId="MY_SECRET_KEY",algorithm="hmac-sha256",headers="(request-target) Accept x-app-key x-app-trusted",signature="9ietyIsW8nPH6BqwiePqsDefQpGUFERoV7wEaQ9UUGQ="
Connection: close