Gérer les métadonnées des utilisateurs avec le déclencheur d’action après l’ouverture de session

Auth0 fournit un système complet pour stocker les métadonnées sur le profil utilisateur Auth0. Vous pouvez configurer un déclencheur post-login pour modifier user_metadata et app_metadata dans le cadre du flux de connexion d’un utilisateur. Les déclencheurs post-ouverture de session sont utiles pour des tâches telles que le stockage de données spécifiques à l’application sur le profil utilisateur, la capture des journaux d’opérations de l’utilisateur, le mappage des attributs SAML au champ de métadonnées, ou la mise en cache des valeurs d’opérations volumineuses sur le profil utilisateur pour les réutiliser lors des ouvertures de session ultérieures.

L’objet post-loginapi fournit des opérations communes qui peuvent être effectuées dans ce déclencheur. Pour gérer les métadonnées de l’utilisateur, nous voulons utiliser les méthodes api.user.setAppMetadata et api.user.setUserMetadata. Par exemple, pour éviter qu’un comportement ne s’exécute plusieurs fois pour un utilisateur spécifique, réfléchissons une action qui ressemble à ceci :

exports.onExecutePostLogin = async (event, api) => {
  if (event.user.app_metadata.didAnExpensiveTask) {
    console.log(`Skipping the expensive task because it already occurred for ${event.user.email}.`);
    return;
  }
  // do and expensive task
  api.user.setAppMetadata("didAnExpensiveTask", true);
};

Was this helpful?

/

Ici, nous avons ajouté une vérification au début de l’action pour voir si nous avons déjà effectué la tâche volumineuse pour cet utilisateur. Si le champ de métadonnées existe, nous retournons à la fonction.

À la fin de l’action, nous appelons api.user.setAppMetadata pour signaler que nous souhaitons stocker des métadonnées dans l’objet utilisateur. À la fin de l’exécution de chaque déclencheur, les actions mettront à jour le profil utilisateur en une seule opération. Si plusieurs appels sont faits aux actions setUserMetadata, même s’ils sont faits dans différentes actions faisant partie du même flux, les actions ne mettront à jour le profil utilisateur qu’une seule fois, à la fin de l’exécution du déclencheur.

Meilleures pratiques

Veillez à ne pas stocker trop de données dans le profil Auth0. Ces données sont destinées à être utilisées à des fins d’authentification et d’autorisation, et les utilisateurs peuvent modifier leur propre champ user_metadata; il convient donc de ne pas y stocker de données sensibles. Les métadonnées et les capacités de recherche d’Auth0 ne sont pas conçues pour la recherche marketing ou toute autre activité nécessitant une fréquence de recherche ou de mise à jour élevée. Votre système risque de rencontrer des problèmes de croissance et de performance si vous utilisez Auth0 à cette fin. Une meilleure approche consiste à stocker les données dans un système externe et à stocker un pointeur (l’ID de l’utilisateur) dans Auth0 afin que les systèmes dorsaux puissent récupérer les données en cas de besoin.

Limites anti-attaques

Même si un seul appel est effectué pour mettre à jour le profil utilisateur, cette opération est toujours soumise aux limites de taux « Write User » (Écriture utilisateur) de votre locataire. Si la limite anti-attaques est atteinte lors d’une tentative de mise à jour des métadonnées, les actions relanceront la demande tant qu’un code d’état HTTP 429 sera renvoyé. Le délai entre les tentatives est régi par la valeur de l’en-tête X-RateLimit-Reset renvoyée dans le cadre de la réponse 429.

Redirections

En cas de redirection invoquée avec api.redirect.sendUserTo(), toute mise à jour des métadonnées de l’utilisateur ou de l’application en cours sera appliquée au profil utilisateur avant que celui-ci ne soit redirigé vers le site externe. Pour en savoir plus, consulter Redirection avec des actions.

En savoir plus