2017-10-16 5 views
1

J'ai quelques problèmes avec NodeJS et un test de WebHook dans Uber Sandbox. Je suis en mesure de recevoir une réponse correcty POST, mais le contrôle de la sécurité (X-Uber-Signature) est toujours tort ..Problème de signature de webhook Uber avec nodeJs (hmac)

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

contenu JSON.stringify (de 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} 

J'ai essayé beaucoup (beaucoup) sur cette chaîne transforme mais le travail rien, si quelqu'un a une idée, il sera très apprécié .. Merci

Répondre

1

S'il vous plaît vérifier Uber documentation pour la résolution de votre question:

En raison d'une interprétation stricte de la spécification JSON par JavaScript, si des barres obliques inverses sont envoyées dans le corps POST, elles seront supprimées lors de l'analyse. Cela empêche les récepteurs de webhook implémentés dans NodeJS de vérifier la signature webhook avec précision. Nous travaillons sur la suppression de toutes les barres obliques inverses de la charge utile afin d'éviter cette situation et supprimerons cette note lorsque ce travail sera terminé.

Vérifiez également ce link.

+0

Merci pour votre réponse, donc pour l'instant, nous ne pouvons pas vérifier la signature Uber avec Node.js? Si je comprends bien, ma valeur _req_ ne contient pas de backslash qui sont présents sur le serveur? –