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 :
- Dans le nœud Webhook, activez l’option Raw Body : le corps brut arrive comme donnée binaire, dans la propriété
data. - 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. - 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.