优步webhook与nodeJs(hmac)的签名问题

问题描述 投票:1回答:1

我在Uber Sandbox中遇到了NodeJS和WebHook测试的一些问题。我能够收到正确的POST响应,但安全检查(X-Uber-Signature)总是错误的..

module.exports = {
  myWebService: function(req, res) {
    const hmac = crypto.createHmac('sha256','<MYSECRET>');
    var hash = hmac.update(JSON.stringify(req.body)).digest('hex');

    //Those values are always different..
    console.log("Constructed hash : " + hash +"\n");
    console.log("Received hash : " + req.header('X-Uber-Signature') + "\n");

JSON.stringify(req.body)内容:

{"event_id":"08db06df-559a-457a-ba92-3c8380bb7ec7","resource_href":"https://sandbox-api.uber.com/v1/requests/8f5cc257-cfdf-4654-9acd-085aae740107","meta":{"status":"arriving","rider_id":"8IMl8ulC-yJTqkbsq5g4HuyuYeRQ5b5aSsmLt2vpjl6H8Fk_JPz_5AZYj4ERi6M7MagmrJtPM7L_rAnHLgO0qLgGtpD8Lg32rnGTEUkWHAbPjDZIl0-X91PrrujPY_IYGA==","user_id":"ecb2e871-b768-4f76-bfa9-8bc253bced0e","resource_id":"8f5cc257-cfdf-4654-9acd-085aae740107"},"event_type":"all_trips.status_changed","event_time":1508163555}

我在这个字符串上尝试了很多(MANY)转换,但没有任何工作,如果有人有想法,它将非常感谢..谢谢

node.js sails.js webhooks hmac uber-api
1个回答
1
投票

请检查Uber documentation以解决您的问题:

由于JavaScript对JSON规范的严格解释,如果POST主体中发送了反斜杠,则在解析时将删除它们。这可以防止NodeJS中实现的webhook接收器准确地验证webhook签名。我们正在努力从有效负载中删除所有反斜杠以避免这种情况,并在完成该工作时删除此注释。

另外,检查这个link

© www.soinside.com 2019 - 2024. All rights reserved.