🪝WebhookToolkit
GitHub

Tester un webhook GitHub en local

Pour valider un handler de webhook GitHub, inutile de pusher des commits ou d'ouvrir de vraies PR. Génère un event GitHub signé en HMAC-SHA256, édite le payload (repo, branche, auteur) et envoie-le à ton serveur local. Ta vérification de X-Hub-Signature-256 est testée tout de suite.

Génère la signature pour voir les headers, le body et la commande cURL prête à coller.

Vérifier la signature côté serveur

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

Pour recevoir un vrai webhook GitHub sur ta machine sans déployer, configure l'URL de ton tunnel Relay dans les réglages du repo.

Questions fréquentes

Comment simuler un push GitHub sur mon serveur local ?

Choisis l'event push ci-dessus, colle le secret du webhook configuré dans ton repo, indique l'URL de ton handler (via Relay) puis envoie. Le header X-Hub-Signature-256 est calculé en HMAC-SHA256 comme GitHub le fait.

Quelle est la différence entre X-Hub-Signature et X-Hub-Signature-256 ?

X-Hub-Signature utilise SHA-1 (legacy), X-Hub-Signature-256 utilise SHA-256 (recommandé). Le générateur produit les deux headers pour couvrir tous les cas.

Comment vérifier la signature côté serveur ?

Calcule HMAC-SHA256(rawBody, secret) et compare en temps constant avec la valeur du header (après 'sha256='). Voir l'exemple de code ci-dessous.

Puis-je tester pull_request et issues aussi ?

Oui, les events push, pull_request et issues sont disponibles, avec un header X-GitHub-Event correct pour chacun.

Tester un webhook GitHub en local — Payload signé X-Hub-Signature-256 · Webhook Toolkit