Pertanyaan mencoba untuk meniru permintaan webhook github, dapatkan: "X-Hub-Signature tidak cocok dengan tanda tangan blob"


Berikut ini adalah pengaturan server proxy kecil untuk menangani guncangan web github:

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

Di tukang pos, saya memiliki header berikut:

Headers

Tubuh mentah ada di sini: https://developer.github.com/v3/activity/events/types/#pullrequestreviewevent

Berikut ini skrip pre-request saya:

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

Saya dapat mengonfirmasi bahwa GIT_WEBHOOK_SECRET dalam .env sama dengan yang diatur secret dalam pengaturan lingkungan Postman saya.


4
2018-06-30 16:09


asal


Jawaban:


Anda perlu mengatur konten X-Hub-Signature sebagai parameter dengan sha1 bidang :

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

Dari memvalidasi muatan dari Github :

Tidak peduli implementasi apa yang Anda gunakan, tanda tangan hash dimulai dengan   sha1 =, menggunakan kunci token rahasia Anda dan tubuh muatan Anda.


2
2017-07-14 15:24