Vérifier la signature d’un webhook
Chaque appel est signé : recalculez l’empreinte avec votre secret pour vérifier qu’il vient bien de Formix.
À quoi ça sert
Refuser les faux appels dans votre système.
Prérequis et forfait
Le secret du webhook (whsec_…), lisible avec GET r=hooks de l’API.
Étapes
- Lisez l’en-tête X-Formix-Signature : il a la forme t=<horodatage>,v1=<empreinte>.
- Prenez le corps brut de la requête (sans le reformater).
- Calculez HMAC-SHA256 de la chaîne « t.corps » avec le secret du webhook.
- Comparez avec v1 par une comparaison à temps constant (hash_equals en PHP).
- Refusez l’appel si la signature diffère ou si l’horodatage est trop ancien (par exemple plus de 5 minutes).
- Répondez par un code 2xx dans les 8 secondes ; sinon Formix réessaiera.
$ok = hash_equals(hash_hmac('sha256', $t . '.' . file_get_contents('php://input'), $secret), $v1);Résultat attendu
Seuls les appels authentiques sont traités. X-Formix-Delivery identifie la livraison (utile contre les doublons) et X-Formix-Event le type d’événement.
Astuces
- Chaque nouvel essai est signé de nouveau avec un nouvel horodatage ; l’identifiant de livraison reste le même.
Problèmes fréquents
- Ma vérification échoue toujours.
- Vérifiez que vous signez le corps brut exact, avec le bon secret (celui du webhook concerné) et le format t + "." + corps.
Pages concernées
Ces pages demandent d’être connecté.
Articles liés
Ajouter un webhookFormix appelle votre adresse https:// dès qu’un client remplit un formulaire.API, clés et webhooksWebhooks : statut et nouveaux essaisComment lire « dernier envoi » et quand Formix réessaie.API, clés et webhooksClés d’APICréer, nommer et révoquer les clés fm_… qui donnent accès à vos données Formix depuis d’autres outils.API, clés et webhooks