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

时间:2017-10-16 14:32:09

标签: node.js sails.js webhooks hmac uber-api

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

df3<-       A       B      C 
          7.634   10.0     1
          5.223   33.0     2
          5.479   22.0     3
          5.390   49.0     4 
          5.439   53.0     5 

JSON.stringify(req.body)内容:

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");

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

1 个答案:

答案 0 :(得分:1)

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

  

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

另外,请检查此link