2016-03-01 2 views
0

Я использую this siteNodejs - SuperAgent-клиента-подпись - подпись не послал

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); 
    }); 
версия

Node: v4.2.1

Если я проверить заголовок подписи на сервере (под управлением PHP, кстати, с его собственным верификатором подписи, используя те же спецификации) заголовок подписи отсутствует.

Все, что у меня отсутствует? Или есть альтернативные пакеты узлов с одинаковой функцией?

Моя цель состоит в том, чтобы иметь возможность вызывать API с использованием другого языка, кроме PHP, в качестве доказательства концепции, чтобы впоследствии использовать его в запланированной задаче AWS Lambda.

ответ

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 
+0

Я вижу. Я проверю конфигурацию сервера. Как вы просматриваете заголовки? Извините, узел свободно с nodejs. – Lysender

+0

Я просто положил netcat в качестве сервера, чтобы получить запрос от клиента. 'nc -l ', а затем подключиться к нему с помощью http: // : /api/v3/project/tasks/get? task_id = 1026', но есть много способов сделать это. – bolav

+0

Просто протестирован и действительно имеется заголовок авторизации. Заголовок, вероятно, удаляется в nginx (прокси) или в Apache внутри моего контейнера Docker. Однако, 'keyId =" SECRET_KEY "' часть кажется неправильной, это должен быть ключ доступа. В любом случае, похоже, что этот пакет несовместим с моим сервером API. Я, вероятно, просто напишу свою собственную реализацию или найду другой пакет. Благодаря! Маркировка как ответ. – Lysender

Смежные вопросы