0

このサイトを利用しています

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 のスケジュールされたタスクで使用できるようにすることです。

4

1 に答える 1

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
于 2016-03-01T07:15:09.150 に答える