Un webhook est une requête HTTP qu'un service envoie à une URL que vous enregistrez chaque fois qu'un événement spécifique se produit. Il permet à votre système de recevoir des données en temps réel, au lieu de sonder une API en l'appelant encore et encore pour voir si quelque chose de nouveau est disponible. Dans un pipeline de données, cela signifie qu'un travail peut réagir à un événement dès que la source le signale.
La plateforme de paiement Stripe, par exemple, envoie des événements webhook à votre point de terminaison via HTTPS sous forme de charge utile JSON. Votre point de terminaison doit accepter les requêtes POST et traiter les données d'événement qu'il reçoit.
Comment fonctionne la livraison des Webhooks
La documentation de Stripe montre les principales mécaniques :
- Enregistrement : Vous enregistrez une URL de point de terminaison. En mode live, Stripe nécessite une URL HTTPS accessible publiquement.
- Accusé de réception rapide : Le point de terminaison doit renvoyer un code d'état 2xx rapidement, avant toute logique complexe qui pourrait provoquer un délai d'attente.
- Réessais : Si la livraison échoue, Stripe réessaie pendant jusqu'à trois jours avec un retour exponentiel en mode live.
- Ordre : Stripe ne garantit pas que les événements arrivent dans l'ordre dans lequel ils ont été créés.
Sécuriser un point de terminaison Webhook
- Vérifier les signatures : Stripe signe chaque événement avec un HMAC utilisant SHA-256 et met la signature dans l'en-tête
Stripe-Signature. - Bloquer les replays : La charge utile signée inclut un horodatage, vous pouvez donc rejeter les événements qui sont trop anciens.
- Gérer les doublons : Un point de terminaison peut recevoir le même événement plus d'une fois. Enregistrez les ID des événements traités et ignorez les répétitions.
- Liste blanche des expéditeurs : Stripe envoie des webhooks à partir d'une liste publiée d'adresses IP que vous pouvez restreindre sur votre pare-feu.
Utilisations courantes des Webhooks
- Code et déploiement : GitHub envoie une charge utile HTTP POST à votre URL pour les événements de dépôt auxquels vous vous abonnez. Sa documentation liste des utilisations telles que le démarrage de builds CI, la mise à jour d'un suivi de problèmes externe, le rafraîchissement d'un miroir de sauvegarde et le déploiement sur un serveur de production.
- Paiements : Les webhooks Stripe vous permettent de répondre à des événements asynchrones, tels qu'une banque confirmant un paiement, un client contestant une charge ou un paiement récurrent réussissant.
- Abonnez-vous uniquement à ce dont vous avez besoin : Stripe déconseille d'écouter des événements supplémentaires ou tous les événements car cela met une pression indue sur votre serveur.