Skip to main content
Avec Event Streams, vous pouvez conserver une copie de vos données d’identité d’Auth0 dans un système externe, comme une base de données relationnelle, un entrepôt de données ou un index de recherche. Lorsqu’un profil utilisateur est créé, mis à jour ou supprimé dans Auth0, un événement est envoyé à la destination de votre stream afin que votre système externe puisse apporter la même modification.

Pourquoi synchroniser les données d’identité

Conserver une copie locale des données d’identité est utile lorsque vous devez :
  • Exécuter des analyses, produire des rapports ou effectuer des requêtes de conformité sans appeler la Management API.
  • Offrir des fonctions de recherche qui nécessitent des recherches à faible latence dans les attributs des utilisateurs.
  • Alimenter des pipelines de données qui croisent des enregistrements d’identité avec d’autres données d’affaires.
  • Conserver une sauvegarde de l’état du profil utilisateur pour la reprise après sinistre.

Fonctionnement

  1. Auth0 publie un événement chaque fois qu’un profil utilisateur est modifié.
  2. Votre Event Stream transmet cet événement à une destination (webhook, AWS EventBridge ou Auth0 Action).
  3. Votre gestionnaire examine le type d’événement et applique l’opération d’écriture correspondante dans le système externe.
Les types d’événements suivants sont pertinents pour la synchronisation des données :

Prérequis

Avant de commencer, assurez-vous d’avoir :
  • Un tenant Auth0 où Events est activé. Pour en savoir plus sur la disponibilité selon le forfait, consultez Créer un Event Stream.
  • Un Event Stream actif abonné à user.created, user.updated et user.deleted. Pour en savoir plus, consultez Créer un Event Stream.
  • Un stockage de données externe (par exemple, PostgreSQL, MySQL ou un entrepôt de données) dans lequel votre handler peut écrire.

Synchronisation des données avec Implement

Les sections ci-dessous montrent comment traiter chaque type d’événement. Les fonctions handler sont les mêmes, quelle que soit la destination de votre Event Stream. La section Acheminer les événements par type montre comment acheminer les événements pour les destinations webhook et Auth0 Action.

Traiter user.created

Lorsqu’Auth0 publie un événement user.created, insérez un nouvel enregistrement dans votre base de données.

Traiter user.updated

Lorsque Auth0 émet un événement user.updated, mettez à jour la ligne correspondante. Comparez l’horodatage de l’événement avec la colonne last_event_processed pour éviter d’écraser des données obsolètes.
Les Events peuvent ne pas arriver dans l’ordre. Comparez toujours les horodatages avant d’appliquer les mises à jour afin d’éviter que des données périmées n’écrasent des enregistrements plus récents. Pour en savoir plus, consultez Events Best Practices.

Traiter user.deleted

Quand Auth0 publie un événement user.deleted, supprimez la ligne correspondante ou effectuez une suppression logique.

Acheminer les événements par type

Utilisez un routeur principal pour acheminer chaque événement vers le handler approprié. Les exemples ci-dessous montrent comment acheminer les événements vers des destinations webhook et Auth0 Action.
Retournez une réponse HTTP 2XX le plus rapidement possible. Si votre handler doit effectuer des opérations lentes, placez l’événement dans une file d’attente interne et traitez-le de façon asynchrone. Pour en savoir plus, consultez Events Best Practices.

Se prémunir contre les doublons et les problèmes d’ordre

Event Streams offrent une livraison au moins une fois, ce qui signifie que votre handler peut recevoir le même événement plus d’une fois. Pour gérer cela de façon sécuritaire :
  • Faites le suivi des ID d’événement. Stockez l’id de chaque événement traité et ignorez tout événement que vous avez déjà traité.
  • Comparez les horodatages. Chaque payload d’événement comprend les champs created_at et updated_at dans data.object. Utilisez ces champs pour déterminer si un événement entrant est plus récent que ce que votre système a déjà enregistré.
  • Utilisez des écritures idempotentes. Structurez vos opérations de base de données de sorte que l’application du même événement deux fois produise le même résultat. Par exemple, utilisez INSERT ... ON CONFLICT DO UPDATE dans PostgreSQL.

Vérifiez la synchronisation

Après avoir déployé votre handler, créez un utilisateur test dans Auth0 et confirmez ce qui suit :
  1. Un nouvel enregistrement apparaît dans votre base de données externe avec les bonnes données de profil.
  2. Mettez à jour le nom ou l’adresse courriel de l’utilisateur dans Auth0. Confirmez que l’enregistrement dans la base de données reflète ce changement.
  3. Supprimez l’utilisateur dans Auth0. Confirmez que l’enregistrement est supprimé (ou marqué comme supprimé) dans votre base de données.
Pour en savoir plus sur la mise à l’essai des Event Streams, consultez Tests des événements, observabilité et reprise après échec.

En savoir plus