Un Webhook c’est quoi ? Comment l’utiliser dans mon entreprise ?
Dans le monde hautement connecté d’aujourd’hui, rien ne peut fonctionner de manière optimale en vase clos. La réalisation d’une tâche implique (presque) toujours la participation de plusieurs entités. Les applications de e-commerce doivent communiquer avec les systèmes de paiement, les systèmes de paiement doivent communiquer avec les systèmes bancaires, les systèmes bancaires doivent communiquer avec les comptes clients, etc. Vous voyez le schéma ?
La capacité des systèmes en ligne indépendants à communiquer entre eux et à partager des données est au cœur de ce qui fait la valeur des services en ligne aujourd’hui. Dans cet article, nous allons nous intéresser aux webhooks. Un webhook est l’un des nombreux moyens de faciliter la communication entre les services en ligne. À la fin de cet article, vous comprendrez parfaitement ce que sont les webhooks, comment ils fonctionnent et quand les utiliser.
Qu’est-ce qu’un webhook ?
Un webhook est une requête HTTP, déclenchée par un événement dans un système source et envoyée à un système de destination, souvent avec une charge utile de données. Les webhooks sont automatisés, c’est-à-dire qu’ils sont envoyés automatiquement lorsque leur événement est déclenché dans le système source.
Cela permet à un système (la source) de « parler » (demande HTTP) à un autre système (la destination) lorsqu’un événement se produit, et de partager des informations (données utiles de la demande) sur l’événement qui s’est produit.
A quoi servent les webhooks ?
Sur la base de la définition ci-dessus, je suis sûr que vous avez déjà une idée de ce à quoi servent les webhooks. Pour faire simple, les webhooks sont utilisés pour communiquer l’occurrence d’un événement dans un système à un autre système, et ils partagent souvent des données sur cet événement. Cependant, un exemple est toujours plus facile pour illustrer des propos, alors regardons un cas concret de l’utilisation d’un webhook.
Imaginons que vous vous abonnez à un service de streaming. Le service de streaming veut vous envoyer un e-mail au début de chaque mois lorsqu’il débite votre carte de crédit.
Le service de streaming peut s’abonner au service bancaire (la source) pour envoyer un webhook lorsqu’une carte de crédit est débitée (déclencheur d’événement) à son service d’e-mailing (la destination). Une fois l’événement traité, il vous enverra une notification chaque fois que votre carte sera débitée.
Les webhooks du système bancaire contiendront des informations sur le débit (données de l’événement), que le service d’e-mailing utilisera pour construire un message approprié pour vous, le client.
Utilisations et autres exemples de webhooks
Les webhooks sont un moyen simple de rendre une API accessible pour effectuer ou recevoir des appels, ou envoyer des réponses textuelles aux utilisateurs lorsque des événements spécifiques se produisent au sein de l’application. Par exemple, des plateformes comme Facebook, Github, Trello, Confluence ou encore Google Calendar prennent en charge les webhooks.
Les utilisations pratiques des webhooks peuvent inclure :
- Les rappels automatiques quotidiens par e-mail pour les réunions,
- Les confirmations des paiements traités et effectués,
- La synchronisation de toutes modifications de données clients entre différentes applications.
Les webhooks sont très courants dans l’Internet des objets (IoT). Par exemple, un capteur peut remarquer un changement de température et ainsi déclencher le système de climatisation. Un capteur de mouvement pourrait également envoyer un message à un système de sécurité ou générer un bruit pour simuler un chien qui aboie, lorsqu’une intrusion est détectée.
Webhooks vs APIs
Les Webhooks et les API ont tous deux pour objectif d’établir une communication entre différentes applications. Cependant, il existe des avantages et des inconvénients distincts à l’utilisation des Webhooks par rapport aux API.
Les Webhooks ont tendance à être de meilleures solutions si les points suivants sont plus pertinents pour le système mis en œuvre :
- Si les données sont mises à jour fréquemment sur le serveur, les Webhooks ont tendance à être de meilleures solutions car les appels API inutiles du client au serveur sont éliminés.
- Les Webhooks constituent de meilleures solutions pour les systèmes qui nécessitent des mises à jour de données en temps quasi réel. Les interrogations des API sont généralement exécutées à des intervalles prédéfinis, ce qui peut empêcher la mise à jour des données en temps réel. Avec les webhooks, les mises à jour sont poussées par le serveur vers le client dès que le webhook est déclenché.
L’utilisation des API doit être préférée aux Webhooks dans certaines autres situations. Les aspects importants à prendre en compte pour l’utilisation d’une API par rapport à un Webhook sont les suivants :
- L’utilisation de l’API permet de personnaliser davantage le moment où il faut interroger les données d’un serveur, ainsi que la quantité de données à interroger depuis le serveur. La quantité de données à interroger est ajustée par le biais de l’API Polling Size. Avec les webhooks, le serveur décide généralement des données ainsi que du moment où elles sont poussées.
- Pour les systèmes dont les données sont très variables (tels que les systèmes en temps réel, les systèmes IoT, etc.), l’interrogation basée sur les API peut être une meilleure option, car pour chaque appel d’API, il y a une forte probabilité de réponses exploitables.
Comment sécuriser un webhook ?
Comme les webhooks fournissent des données à des URL accessibles au grand public dans votre application, il est possible que quelqu’un d’autre trouve cette URL et vous fournisse de fausses données. Pour éviter que cela ne se produise, vous pouvez utiliser un certain nombre de techniques. La plus simple (et celle que vous devriez mettre en œuvre avant d’aller plus loin) est de forcer les connexions TLS (https). Une fois cette étape franchie, vous pouvez aller plus loin et sécuriser davantage votre connexion :
- Le premier moyen, et le plus utilisé, de sécuriser un webhook est d’ajouter des jetons à l’URL qui servent d’identification unique, par exemple ?auth=TK
- L’option suivante consiste à mettre en œuvre l’authentification de base (Basic Auth), qui est également largement prise en charge et très facile à réaliser.
- Les deux premières solutions sont très efficaces pour prévenir la plupart des attaques, mais elles présentent l’inconvénient d’envoyer le jeton d’authentification avec la requête. La troisième option consiste à demander au fournisseur de signer chaque demande qu’il vous adresse, puis de vérifier la signature. Cette solution présente l’inconvénient d’exiger du fournisseur qu’il ait implémenté la signature des requêtes.
Conclusion
La communication est cruciale entre les humains et les applications Web. Les Webhooks rendent la communication des applications rapide, transparente et beaucoup moins complexe. Ils sont la meilleure alternative aux API et automatisent la connexion et la communication entre différente entités. L’article ci-dessus vous a expliqué l’essence des webhooks. S’ils sont utilisés à grande échelle, les webhooks peuvent apporter un changement révolutionnaire dans la communication des applications web et la rendre plus efficace à chaque étape. Pourquoi pas vous ?