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
- Auth0 publie un événement chaque fois qu’un profil utilisateur est modifié.
- Votre Event Stream transmet cet événement à une destination (webhook, AWS EventBridge ou Auth0 Action).
- Votre gestionnaire examine le type d’événement et applique l’opération d’écriture correspondante dans le système externe.
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.updatedetuser.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énementuser.created, insérez un nouvel enregistrement dans votre base de données.
Traiter user.updated
Lorsque Auth0 émet un événementuser.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énementuser.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.- Webhook
- 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’
idde 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_atetupdated_atdansdata.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 UPDATEdans PostgreSQL.
Vérifiez la synchronisation
Après avoir déployé votre handler, créez un utilisateur test dans Auth0 et confirmez ce qui suit :- Un nouvel enregistrement apparaît dans votre base de données externe avec les bonnes données de profil.
- 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.
- Supprimez l’utilisateur dans Auth0. Confirmez que l’enregistrement est supprimé (ou marqué comme supprimé) dans votre base de données.