Comment vérifier la signature de vos webhooks ?

Chaque envoi signé porte DEUX en-têtes : un horodatage et une signature HMAC-SHA256. Le condensat porte sur l'horodatage et le corps joints par un point, pas sur le corps seul.

Mis à jour le

La chaîne signée est l'horodatage, un point, puis le corps exact de la requête. Calculez le HMAC sur le corps BRUT, avant toute désérialisation JSON : re-sérialiser change les espaces et invalide la comparaison. La signature porte sur ce qui part réellement, quelle qu'en soit la forme : JSON, formulaire, ou corps vide pour un GET.

x-yacla-timestamp: 1755000000
x-yacla-signature: <hex>

signature = HMAC_SHA256(secret, timestamp + "." + corps)

Le secret est propre au flux et ne vous est montré qu'une seule fois, à sa création. La signature peut aussi être désactivée sur un flux : les deux en-têtes sont alors simplement absents.

Comparez en temps constant et rejetez un horodatage vieux de plus de cinq minutes, sinon la signature ne protège pas du rejeu.

À lire ensuite

Il vous manque une réponse ?

Le support répond en français, avec accès à votre compte et à vos livraisons. Passer par lui est plus rapide que chercher plus longtemps.

Contacter le support