Skip to main content

Pourquoi vérifier les signatures ?

N’importe qui peut envoyer une requête POST à votre endpoint webhook. La signature HMAC-SHA256 garantit que le payload vient bien de DLoopIQ et qu’il n’a pas été modifié en transit.

Comment ça marche

  1. Vous configurez un secret lors de la création du webhook
  2. DLoopIQ calcule HMAC-SHA256(payload, secret) pour chaque requête
  3. Le résultat est envoyé dans le header x-dloopiq-signature: sha256=<hash>
  4. Vous recalculez le HMAC côté serveur et comparez

Implémentation

Node.js / Express

Utilisez express.raw() et non express.json() pour parser le body. Le HMAC est calculé sur les bytes bruts — si vous parsez en JSON puis re-sérialisez, la signature ne correspondra plus.

Python / FastAPI

PHP


Tester votre endpoint

Générez une signature de test en local :

Idempotence

En cas de retry (timeout ou 5xx), DLoopIQ peut envoyer le même événement plusieurs fois. Protégez-vous contre les doublons :

Checklist sécurité

  • ✅ Vérifier x-dloopiq-signature sur chaque requête
  • ✅ Utiliser timingSafeEqual / hash_equals (pas ===)
  • ✅ Parser le body en raw bytes, pas en JSON avant vérification
  • ✅ Répondre 200 avant de traiter (éviter les timeouts)
  • ✅ Gérer l’idempotence (même événement reçu 2 fois)
  • ✅ Stocker DLOOPIQ_WEBHOOK_SECRET dans les variables d’environnement