2017-06-30 3 views
4

Voici un petit configuration du serveur proxy pour gérer GitHub webhooks:essayant de se moquer github demande de webhook, obtenez: "X-Hub-signature ne correspond signature blob pas"

require('dotenv').config(); 
var http = require('http'); 
var createHandler = require('github-webhook-handler'); 
var handler = createHandler({ 
    path: '/webhook', 
    secret: process.env.GIT_WEBHOOK_SECRET 
}); 

http 
    .createServer(function(req, res) { 
    handler(req, res, function(err) { 
     res.statusCode = 404; 
     res.end('no such location'); 
    }); 
    }) 
    .listen(8080); 

handler.on('error', function(err) { 
    console.error('Error:', err.message); 
}); 

handler.on('push', function(event) { 
    console.log(
    'Received a push event for %s to %s', 
    event.payload.repository.name, 
    event.payload.ref 
); 
}); 

handler.on('issues', function(event) { 
    console.log(
    'Received an issue event for %s action=%s: #%d %s', 
    event.payload.repository.name, 
    event.payload.action, 
    event.payload.issue.number, 
    event.payload.issue.title 
); 
}); 

Dans postier, je les en-têtes set:

Headers

Le corps brut est ici: https://developer.github.com/v3/activity/events/types/#pullrequestreviewevent

Voici mon script de pré-demande:

var payload = request.data; 
console.log("Using payload as " + payload) 
var hash = CryptoJS.HmacSHA1(payload, environment.secret).toString(CryptoJS.enc.Hex) 
postman.setGlobalVariable("signature", hash); 

Je peux confirmer que le GIT_WEBHOOK_SECRET dans .env est le même que ce qui est prévu dans secret dans mes paramètres d'environnement Postman.

Répondre

1

Vous devez définir le contenu de X-Hub-Signature en tant que paramètres avec sha1 champ:

var payload = request.data; 
console.log("Using payload as " + payload) 
var hash = CryptoJS.HmacSHA1(payload, environment.secret).toString(CryptoJS.enc.Hex) 
postman.setGlobalVariable("signature", "sha1=" + hash); 

De validating payloads from Github:

Quelle que soit la mise en œuvre que vous utilisez, la signature de hachage commence par SHA1 =, en utilisant la clé de votre jeton secret et votre corps de charge utile.