WebhookToolkit
GitHub

Een GitHub-webhook lokaal testen

Om een GitHub-webhook-handler te valideren hoef je geen commits te pushen of echte PR's te openen. Genereer een met HMAC-SHA256 gesigneerd GitHub-event, bewerk de payload (repo, branch, auteur) en stuur het naar je lokale server. Je X-Hub-Signature-256-verificatie wordt meteen getest.

Genereer de signatuur om de headers, de body en het kant-en-klare cURL-commando te zien.

De signatuur server-side verifiëren

handler.js (Node)
import crypto from 'crypto';
const sig = req.headers['x-hub-signature-256'];
const expected = 'sha256=' + crypto
  .createHmac('sha256', process.env.WEBHOOK_SECRET)
  .update(rawBody)
  .digest('hex');
const ok = crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(expected));

Om een echte GitHub-webhook op je machine te ontvangen zonder te deployen, stel je de URL van je Relay-tunnel in bij de repo-instellingen.

Veelgestelde vragen

Hoe simuleer ik een GitHub-push op mijn lokale server?

Kies het push-event hierboven, plak het webhook-secret dat in je repo is geconfigureerd, geef de URL van je handler op (via Relay) en verstuur. De X-Hub-Signature-256-header wordt in HMAC-SHA256 berekend zoals GitHub dat doet.

Wat is het verschil tussen X-Hub-Signature en X-Hub-Signature-256?

X-Hub-Signature gebruikt SHA-1 (legacy), X-Hub-Signature-256 gebruikt SHA-256 (aanbevolen). De generator produceert beide headers om alle gevallen te dekken.

Hoe verifieer ik de signatuur server-side?

Bereken HMAC-SHA256(rawBody, secret) en vergelijk in constante tijd met de waarde van de header (na 'sha256='). Zie het codevoorbeeld hieronder.

Kan ik pull_request en issues ook testen?

Ja, de events push, pull_request en issues zijn beschikbaar, met een correcte X-GitHub-Event-header voor elk.

Een GitHub-webhook lokaal testen — Gesigneerde payload X-Hub-Signature-256 · Webhook Toolkit