Automatisation Niveau 3 : Architecte
30 / 45

Module 5 · Protéger les secrets et les donnéesEnviron 1 min

Authentifier les webhooks entrants

Une URL de webhook est publique : quiconque la découvre peut y poster une fausse commande. Le nœud Webhook d’n8n propose une authentification Basic, par en-tête (Header Auth) ou par JWT, et une liste d’adresses IP autorisées (IP(s) Allowlist). Quand l’émetteur signe ses messages, vérifiez la signature : c’est la preuve la plus solide.

Meta, par exemple, signe chaque notification de l’API WhatsApp Cloud : l’en-tête X-Hub-Signature-256 contient sha256= suivi d’un HMAC SHA-256 du corps de la requête, calculé avec le secret de l’application. Pour le vérifier sans code :

  1. Dans le nœud Webhook, activez l’option Raw Body : le corps brut arrive comme donnée binaire, dans la propriété data.
  2. Ajoutez un nœud Crypto, action Hmac : Binary File activé sur data, type SHA256, encodage HEX, résultat dans la propriété signature. Le secret de l’application se range dans un identifiant Crypto, champ Hmac Secret, pas dans le nœud.
  3. Un nœud If compare les deux valeurs ci-dessous. En cas d’écart, le workflow s’arrête et journalise la tentative.
Texte
{{ 'sha256=' + $json.signature }}
est égal à
{{ $('Webhook').item.json.headers['x-hub-signature-256'] }}
Signez aussi ce que vous envoyezQuand vos workflows appellent le webhook d’un partenaire, signez de la même façon : un HMAC du corps avec un secret partagé, placé dans un en-tête. Le partenaire pourra vérifier que l’appel vient bien de vous.