Pourquoi synchroniser les données d’identité
- Exécuter des requêtes d’analyse, de rapport ou de conformité sans appeler le Management API.
- Offrir des fonctionnalités de recherche qui exigent des recherches à faible latence dans les attributs des utilisateurs.
- Alimenter des pipelines de données qui combinent les enregistrements d’identité avec d’autres données d’entreprise.
- Conserver une sauvegarde de l’état du profil utilisateur à des fins de reprise après sinistre.
Fonctionnement
- Auth0 publie un événement chaque fois qu’un profil utilisateur est modifié.
- Votre flux d’événements achemine cet événement vers une destination (webhook, AWS EventBridge ou Auth0 Action).
- Votre gestionnaire examine le type d’événement et applique l’opération d’écriture correspondante au système externe.
| Type d’événement | Moment du déclenchement |
|---|---|
user.created | Un nouveau profil utilisateur est créé dans Auth0. |
user.updated | Un profil utilisateur existant est modifié. |
user.deleted | Un profil utilisateur est supprimé d’Auth0. |
Prérequis
- Un locataire Auth0 avec Events activé. Pour en savoir plus sur la disponibilité selon votre forfait, consultez Créer un flux d’événements.
- Un flux d’événements actif abonné à
user.created,user.updatedetuser.deleted. Pour en savoir plus, consultez Créer un flux d’événements. - Un stockage de données externe (par exemple, PostgreSQL, MySQL ou un entrepôt de données) dans lequel votre gestionnaire peut écrire.
Mettre en place la synchronisation des données
Traiter user.created
user.created, insérez une nouvelle ligne dans votre base de données.
Traiter user.updated
user.updated, mettez à jour la ligne correspondante. Comparez l’horodatage de l’événement à la colonne last_event_processed pour éviter d’écraser des données plus récentes avec des données périmées.
Les événements peuvent arriver dans le désordre. 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 la pratique exemplaire relative aux événements.
Traiter user.deleted
user.deleted, supprimez la ligne correspondante ou effectuez une suppression logique.
Acheminer les événements par type
- Webhook
- Auth0 Action
Retournez une réponse HTTP
2XX aussi rapidement que possible. Si votre gestionnaire doit effectuer des opérations longues, placez l’événement dans une file d’attente interne et traitez-le de façon asynchrone. Pour en savoir plus, consultez la pratique exemplaire relative aux événements.Prémunissez-vous contre les doublons et les problèmes d’ordre
- Suivez les identifiants d’événement. Conservez chaque
idd’événement traité et ignorez tout événement que vous avez déjà pris en charge. - Comparez les horodatages. Chaque payload d’événement comprend les champs
created_atetupdated_atsurdata.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érifier la synchronisation
- Une nouvelle ligne apparaît dans votre base de données externe avec les données de profil correctes.
- Mettez à jour le nom ou l’adresse courriel de l’utilisateur dans Auth0. Confirmez que la ligne de la base de données reflète la modification.
- Supprimez l’utilisateur dans Auth0. Confirmez que la ligne est supprimée (ou marquée comme supprimée) dans votre base de données.