Aurabase Logo
aurabasedocs
docsGuidesWebhooks & HMAC

Webhooks Sortants & Signatures HMAC

Recevez les événements temps réel de votre projet Aurabase sur vos propres serveurs de manière sécurisée grâce aux signatures cryptographiques HMAC-SHA256.

8 min de lecture·Niveau intermédiaire·Révisé le 19 août 2026
#
Fonctionnement

Architecture des Webhooks

Les webhooks sortants d'Aurabase diffusent les événements du système vers vos URLs de callback (ex: nouvelle inscription utilisateur, paiement réussi, mise à jour de ligne de table).

Garantie de livraison At-Least-Once
Chaque webhook envoyé contient un identifiant unique d'événement event_id vous permettant d'implémenter un traitement idempotent sur vos serveurs.
#
Sécurité

Structure de l'en-tête X-Aurabase-Signature

Chaque requête HTTP POST émise par Aurabase comprend l'en-tête de sécurité suivant :

http-headers
TEXT
POST /webhook HTTP/1.1
Host: api.votre-domaine.com
Content-Type: application/json
X-Aurabase-Event-Id: evt_01J8Y6Q9K3M7Z...
X-Aurabase-Signature: t=1724060000,v1=9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
#
Validation

Vérifier la signature HMAC-SHA256

verify-webhook.tsTYPESCRIPT
import crypto from 'node:crypto'
export function verifyAurabaseWebhook(
rawBody: string, signatureHeader: string, secret: string)
const parts = Object.fromEntries(
signatureHeader.split(',').map(p => p.split('=')),
)
const { t: timestamp, v1: signature } = parts
// 1. Protection contre les attaques par rejeu (5 min max)
if (Math.abs(Date.now() / 1000 - Number(timestamp)) > 300) {
return false
}
// 2. Calcul du HMAC-SHA256 sur timestamp.rawBody
const expected = crypto
.createHmac('sha256', secret)
.update(timestamp + '.' + rawBody)
.digest('hex')
// 3. Comparaison sécurisée en temps constant
return crypto.timingSafeEqual(
Buffer.from(signature), Buffer.from(expected)
)
}
#
Résilience

Gestion des pannes & Dead-Letter Queue

Si votre serveur répond avec un code d'erreur HTTP (4xx, 5xx) ou subit un timeout (délai limite de 10 secondes), Aurabase réessaie automatiquement l'envoi selon un backoff exponentiel :

  • Tentative 1 : Immédiate
  • Tentative 2 : Après 15 secondes
  • Tentative 3 : Après 1 minute
  • Tentative 4 : Après 5 minutes
  • Tentative 5 : Après 30 minutes

Après 5 échecs consécutifs, l'événement est versé dans la Dead-Letter Queue (DLQ) du Studio pour inspection et rejeu manuel.

Dernière mise à jour · 19 août 2026