M365Con 2027 – conférence en ligne gratuite · 11–22 Jan 2027 · 120 sessions→ m365con.net

Blog · Mirko Peters

Comment créer des webhooks Microsoft Graph fiables pour SharePoint et Microsoft 365

By ·

Créez des webhooks Microsoft Graph fiables pour SharePoint et Microsoft 365, avec une validation sécurisée, un renouvellement automatisé et une remise des notifications robuste.

Automatically translated with AI from the original post. Read the English original

▶ BLOGHow to Build ReliableMicrosoft Graph Webhoo……M365.FM
Titelbild: How to Build Reliable Microsoft Graph Webhooks for SharePoint and M365

Créer des webhooks Microsoft Graph fiables pour SharePoint et Microsoft 365 peut mettre à l’épreuve même des développeurs expérimentés. Vous pouvez rencontrer des échecs de validation si votre point de terminaison ne renvoie pas le jeton de validation ou ne répond pas avec un statut 200 OK. Les problèmes courants incluent des points de terminaison bloqués par des pare-feu, des erreurs de configuration réseau ou des interférences de middleware. Les tentatives manquées et les abonnements expirés surviennent souvent lorsque le service ne reçoit pas la requête de validation ou lorsque les points de terminaison ne sont pas accessibles publiquement. Vous découvrirez comment éviter ces écueils et mettre en place un pipeline de notifications robuste et sécurisé, accompagné d’une liste de contrôle pratique et de bonnes pratiques.

Points clés

Fondamentaux des webhooks Microsoft Graph

Qu’est-ce que les webhooks Microsoft Graph

Un webhook est une requête HTTP, déclenchée par un événement survenu dans un système source et envoyée à un système de destination, généralement accompagnée d’une charge utile de données. Les webhooks sont automatisés : autrement dit, ils sont envoyés automatiquement dès que leur événement se produit dans le système source.

Vous utilisez les webhooks Microsoft Graph pour recevoir des notifications en temps réel sur les modifications survenant dans votre environnement Microsoft 365. Vous n’avez donc pas besoin d’interroger en permanence Microsoft Graph pour obtenir des mises à jour. Votre application est informée dès que un événement important se produit. Vous restez ainsi à jour et synchronisé avec les données accessibles via Microsoft Graph. Cela supprime également le besoin d’une infrastructure d’interrogation (polling), qui consiste à envoyer fréquemment des requêtes à Microsoft Graph pour vérifier les dernières modifications.

Vous pouvez configurer des notifications pour de nombreux types d’événements, par exemple :

Par exemple, vous pouvez vouloir créer automatiquement un compte dans un système tiers de suivi du temps lorsqu’un nouvel utilisateur rejoint votre organisation. Vous pourriez aussi déclencher le traitement de contenu, comme une note de frais, lorsqu’un utilisateur ajoute un nouveau fichier à une bibliothèque de documents SharePoint ou à un dossier OneDrive.

Pourquoi la fiabilité est essentielle

Les webhooks Microsoft Graph jouent un rôle clé pour que vos intégrations SharePoint et Microsoft 365 restent réactives et à jour. Lorsque votre pipeline de webhooks fonctionne de manière fiable, vos applications réagissent aux modifications en temps réel. Les utilisateurs voient toujours les données les plus récentes, ce qui améliore leur expérience et réduit le risque d’informations obsolètes.

Toutefois, les problèmes de fiabilité peuvent entraîner de sérieux désagréments :

Pour construire une solution robuste, vous devez combiner les webhooks avec les requêtes delta afin de suivre les modifications efficacement. Vous devez également mettre en place des processus pour vérifier et renouveler régulièrement les abonnements. Pour les ressources mises à jour fréquemment, le regroupement des requêtes permet de maîtriser la charge.

Configuration et validation des webhooks

La configuration des webhooks Microsoft Graph pour SharePoint et Microsoft 365 comporte plusieurs étapes importantes. Vous devez enregistrer votre webhook, gérer les requêtes de validation et sécuriser votre point de terminaison. Chacune de ces étapes joue un rôle essentiel pour garantir la fiabilité et la sécurité de votre chaîne de notifications.

Enregistrement des webhooks Microsoft Graph

Commencez par créer un abonnement webhook. Ce processus permet à votre application de recevoir des notifications concernant les modifications apportées aux ressources Microsoft 365. Suivez ces étapes pour enregistrer votre webhook :

  1. Créez un point de terminaison accessible publiquement qui utilise HTTPS. Ce point de terminaison recevra les notifications de Microsoft Graph.

  2. Envoyez une requête POST au point de terminaison /subscriptions de Microsoft Graph.

  3. Dans votre requête d’abonnement, indiquez :

    • changeType : les types de modifications à suivre, comme « created », « updated » ou « deleted ».

    • notificationUrl : l’URL de votre point de terminaison webhook.

    • resource : la ressource à surveiller, comme « /users » ou « /drive/root ».

    • expirationDateTime : la date et l’heure d’expiration de l’abonnement.

    • Les propriétés facultatives, comme clientState, vous aident à vérifier l’origine des notifications.

Exemple de requête d’abonnement :

POST https://graph.microsoft.com/v1.0/subscriptions
Authorization: bearer eyJ0eXAiOiJ[..]
Content-Type: application/json

{
  "changeType": "updated",
  "clientState": "SecretClientState",
  "notificationUrl": "https://yourdomain.com/api/notifications",
  "resource": "/users",
  "expirationDateTime": "2024-05-01T00:00:00.0000000+00:00"
}

Vous devez vous assurer que votre point de terminaison est accessible publiquement et sécurisé par HTTPS. Microsoft Graph valide l’URL de notification avant de finaliser l’abonnement. Vous devez renouveler les abonnements régulièrement pour continuer à recevoir des notifications. Votre point de terminaison doit fournir des réponses HTTP rapides et cohérentes afin de ne pas manquer de notifications.

Voici un récapitulatif des champs requis pour l’enregistrement :

Champ

Description

changeType

Indique le type de modification qui déclenche la notification (par exemple, « updated »).

clientState

Une chaîne personnalisée qui permet de valider l’origine de la notification.

notificationUrl

Le point de terminaison vers lequel les notifications seront envoyées.

resource

La ressource surveillée (par exemple, « /users »).

expirationDateTime

La date et l’heure d’expiration de l’abonnement.

validationToken

Un jeton qui doit être renvoyé dans la réponse pour valider la requête d’abonnement.

Gestion des requêtes de validation

Une fois votre webhook enregistré, Microsoft Graph envoie une requête de validation à votre point de terminaison. Vous devez y répondre correctement pour finaliser le processus d’abonnement. Lorsque votre point de terminaison reçoit une requête GET avec le paramètre de requête validationToken, vous devez renvoyer cette valeur telle quelle, en texte brut, dans le corps de la réponse, avec le statut 200 OK.

Type de requête

URL

Paramètre de requête

Statut de réponse attendu

Content-Type

Corps de la réponse

GET

https://yourdomain.com

validationToken=1234

200 OK

text/plain

1234

💡 Astuce : répondre rapidement et correctement aux requêtes de validation garantit l’activation de votre abonnement webhook sans incident.

HTTPS et sécurité du point de terminaison

La sécurisation de votre point de terminaison webhook est indispensable. Les webhooks Microsoft Graph exigent un chiffrement HTTPS pour protéger les données sensibles pendant les échanges. Vous devez vérifier les requêtes entrantes en contrôlant la signature créée avec une clé secrète partagée. Utilisez des chemins complexes et générés aléatoirement pour vos URL de rappel afin de les rendre plus difficiles à deviner.

Chaque rappel de webhook utilise un JSON Web Token (JWT) signé, placé dans l’en-tête Authentication de la requête HTTPS entrante. Vous pouvez appliquer les techniques standard de validation des JWT OpenID Connect pour garantir l’intégrité du jeton.

Vous devez utiliser HTTPS pour tous les points de terminaison de webhook. Cette exigence protège vos données et garantit la conformité aux normes de sécurité de Microsoft. Sécuriser votre point de terminaison permet de prévenir les accès non autorisés et les attaques.

En suivant ces étapes, vous mettez en place un pipeline Microsoft Graph Webhooks fiable et sécurisé pour SharePoint et M365. Votre application reçoit ainsi les notifications rapidement et en toute sécurité.

Traitement et sécurisation des notifications

Une fois votre point de terminaison de webhook configuré, vous devez traiter les notifications entrantes de manière sûre et fiable. Cette étape garantit que votre application n’accepte que les requêtes valides et que vous ne manquez jamais de mises à jour importantes provenant de Microsoft Graph Webhooks.

Authentification et vérification des jetons JWT

Chaque notification de Microsoft Graph inclut un JSON Web Token (JWT) dans l’en-tête Authorization. Vous devez vérifier ce jeton avant de traiter toute charge utile. Une validation rigoureuse des JWT protège votre système contre les requêtes non autorisées ou altérées.

Suivez ces étapes pour authentifier et vérifier les jetons JWT :

  1. Vérifiez que le jeton n’a pas expiré. Les jetons comportent une heure d’expiration, et vous devez rejeter tout jeton dont la validité est dépassée.

  2. Confirmez que le jeton a été émis par la plateforme d’identité Microsoft. Validez la signature du jeton pour vous assurer qu’il n’a pas été modifié.

  3. Vérifiez que la revendication « audience » du jeton correspond à l’ID de votre application. Cette étape confirme que le jeton était destiné à votre application.

  4. Vérifiez que la propriété azp (authorized party) correspond à la valeur attendue pour votre application.

Conseil : utilisez toujours des bibliothèques fiables pour la validation des JWT. Elles vous aident à éviter les erreurs courantes et à maintenir la sécurité de votre application.

Soyez également attentif aux vulnérabilités de sécurité courantes lors de la manipulation des jetons JWT :

En suivant ces étapes et ces précautions, vous vous assurez que seules les notifications légitimes atteignent votre application.

Traitement des charges utiles de notification

Après avoir authentifié la notification, vous devez traiter la charge utile de manière sûre. Les charges utiles de notification contiennent des informations sur l’événement qui a déclenché le webhook. Pour préserver l’intégrité des données et prévenir les problèmes de sécurité, vous devez :

Remarque : la validation et l’assainissement des charges utiles protègent votre système contre les données mal formées et les menaces de sécurité.

Mise en œuvre de la logique de nouvelle tentative et de temporisation

Des problèmes réseau ou des interruptions temporaires peuvent faire échouer la remise des notifications. Pour éviter toute perte de données, vous avez besoin d’une stratégie robuste de nouvelles tentatives et de temporisation. Microsoft recommande d’utiliser une temporisation exponentielle et des files d’attente structurées pour gérer les nouvelles tentatives.

Voici un tableau récapitulant les mécanismes courants de nouvelle tentative et de temporisation :

Type de mécanisme

Description

Temporisation exponentielle

Augmente exponentiellement le délai d’attente entre les nouvelles tentatives après chaque échec.

File d’attente principale

La file d’attente initiale dans laquelle les événements webhook sont publiés, par exemple main.webhook.queue.

Files d’attente de nouvelle tentative

Files d’attente destinées à la gestion des nouvelles tentatives, nommées retry.webhook.queue-M, où M représente le numéro de la tentative.

File d’attente d’abandon

Une file d’attente finale destinée aux messages en échec après l’ensemble des tentatives, par exemple abandon.webhook.queue.

Calcul du TTL

La durée de vie (TTL, time-to-live) de chaque file d’attente de nouvelle tentative est calculée à l’aide de la formule : {interval} + {current_retry_attempt} ^ 4.

En-tête x-retry

En-tête qui suit le nombre de tentatives de nouvel envoi pour chaque message.

Dead Letter Exchange

Un échangeur qui reçoit les messages ne pouvant plus faire l’objet de nouvelles tentatives et les achemine vers la file d’attente d’abandon.

Si vous ne mettez pas en place une logique appropriée de nouvelles tentatives et de temporisation progressive (backoff), votre application risque de perdre des notifications ou de générer des incohérences de données. Les requêtes en échec ou la limitation de débit peuvent vous empêcher de recevoir des mises à jour critiques. La temporisation exponentielle vous aide à gérer les requêtes limitées et réduit le risque de surcharger votre système ou Microsoft Graph Webhooks.

🛡️ Bonne pratique : suivez systématiquement le nombre de tentatives et déplacez les messages en échec vers une file d’attente d’abandon après plusieurs nouvelles tentatives. Cette approche vous permet d’analyser et de résoudre les problèmes persistants sans perdre de données.

En authentifiant les jetons JWT, en validant les charges utiles et en mettant en œuvre une logique de nouvelles tentatives fiable, vous créez un pipeline de notifications sécurisé et résilient. Ces étapes vous permettent de traiter en toute sécurité et efficacement chaque notification de Microsoft Graph Webhooks.

Gestion des abonnements et suivi des modifications

Automatisation du renouvellement des abonnements

Vous devez maintenir vos abonnements webhook actifs afin de ne manquer aucune notification. Les abonnements Microsoft Graph expirent au bout d’une période définie. Si vous ne les renouvelez pas, votre application cesse de recevoir des mises à jour. Vous pouvez automatiser le renouvellement à l’aide de plusieurs méthodes :

Conseil : l’automatisation des renouvellements réduit le travail manuel et garantit que votre système reste connecté à Microsoft Graph.

Supervision et alertes

Vous devez surveiller l’état de santé de votre pipeline webhook. Configurez des alertes pour être informé si le renouvellement d’un abonnement échoue ou si votre point de terminaison cesse de répondre. Utilisez la journalisation pour suivre les notifications entrantes et les tentatives de renouvellement. Vous repérez ainsi les problèmes avant qu’ils n’affectent les utilisateurs.

🛎️ Une supervision proactive vous permet de résoudre rapidement les problèmes et garantit la fiabilité de votre intégration.

Utilisation des requêtes delta pour le suivi des modifications

Les requêtes delta vous permettent de suivre efficacement les modifications apportées aux ressources SharePoint et Microsoft 365. Vous pouvez les utiliser pour ne recevoir que les données nouvelles ou mises à jour, ce qui réduit le besoin d’interrogations fréquentes et diminue le risque de limitation de débit.

Toutefois, les requêtes delta présentent certaines limites :

Limite/Difficulté

Description

Contexte OData

Renvoyé de manière incorrecte lors du suivi des modifications apportées aux relations.

Extensions de schéma

Non renvoyées avec l’instruction $select, mais renvoyées sans elle.

Extensions ouvertes

Les clients ne peuvent pas suivre les modifications apportées aux extensions ouvertes ou aux extensions de schéma inscrites.

Remarque : testez systématiquement votre implémentation des requêtes delta afin de prendre en compte ces limites et garantir un suivi précis des modifications.

En automatisant les renouvellements, en supervisant votre pipeline et en utilisant les requêtes delta, vous construisez un système webhook fiable et efficace pour SharePoint et Microsoft 365.

Vous pouvez mettre en place des webhooks Microsoft Graph fiables en suivant une démarche claire. Commencez par créer des abonnements et utiliser des requêtes delta pour suivre les modifications. Automatisez les renouvellements et surveillez votre pipeline pour détecter les anomalies. Privilégiez la validation, la sécurité et la résilience à chaque étape. Pour vérifier que votre solution est prête pour la production, consultez cette liste de contrôle :

Type de mesure

Description

Analyses de sécurité du pipeline CI

Recherchez les vulnérabilités avant le déploiement.

Piste d'audit automatisée

Journalisez chaque build et chaque déploiement à des fins de conformité et d'audit.

Appliquez ces bonnes pratiques pour garantir la fiabilité de vos intégrations SharePoint et Microsoft 365.

Questions fréquentes

Comment renouveler un abonnement webhook Microsoft Graph expiré ?

Envoyez une requête PATCH au point de terminaison Microsoft Graph /subscriptions/{id}. Mettez à jour le champ expirationDateTime. Planifiez l'exécution quotidienne de ce processus. Vos abonnements restent ainsi actifs et vous évitez de manquer des notifications.

Que faire si votre point de terminaison webhook échoue à la validation ?

Vérifiez que votre point de terminaison renvoie le validationToken en texte brut dans le corps de la réponse. Répondez avec un statut 200 OK. Assurez-vous que votre point de terminaison est accessible publiquement et qu'il utilise HTTPS.

Comment sécuriser votre point de terminaison webhook ?

Utilisez HTTPS pour tous les points de terminaison. Validez les jetons JWT dans chaque requête. Restreignez l'accès par authentification et liste blanche d'adresses IP. Surveillez les activités inhabituelles. Auditez régulièrement vos paramètres de sécurité.

Pourquoi utiliser des requêtes delta avec les webhooks ?

Les requêtes delta vous permettent de ne suivre que les données nouvelles ou modifiées. Cela réduit la bande passante et améliore les performances. Vous évitez de télécharger l'intégralité des données à chaque fois, ce qui rend votre intégration plus rapide et plus efficace.

Quelle est la meilleure façon de gérer les notifications webhook en échec ?

Mettez en place une logique de nouvelles tentatives avec un backoff exponentiel. Suivez les tentatives à l'aide d'en-têtes ou de files d'attente. Déplacez les messages en échec après plusieurs nouvelles tentatives vers une file d'abandon. Analysez ces échecs pour éviter toute perte de données.

Microsoft Graph Change notifications and webhooks SharePoint OneDrive Microsoft 365

Related articles

RSS