Passer au contenu principal
Suivez les directives ci-dessous pour rédiger du code d’Actions performant, sécurisé et clair, et ainsi simplifier votre environnement de production.

Principes de base des Actions

  • Utilisez le moins de requêtes HTTP possible et définissez un délai d’expiration raisonnable (moins de 10 secondes) pour éviter l’accumulation de requêtes pendant la connexion.
  • Utilisez les métadonnées de l’application pour filtrer des applications précises afin de déterminer si une Action doit être exécutée.
    • Exemple : valeurs propres à l’application ou valeurs de regroupement d’applications utilisées pour faire varier partiellement ou entièrement l’exécution de l’Action.
  • Utilisez user_metadata/app_metadata pour conserver des données personnalisées dans le profil utilisateur.
    • Exemple : préférences de l’utilisateur ou valeurs d’état.
  • Utilisez les métadonnées de transaction pour partager des données entre les déclencheurs post-login au cours d’une même exécution.
    • Exemple : valeurs récupérées depuis des services externes ou calculées, qui doivent être réutilisées dans des Actions subséquentes et qui sont liées à l’exécution en cours.
  • Utilisez le cache pour les données à partager entre des Actions appartenant à différentes exécutions.
    • Exemple : valeurs récupérées depuis des services externes ou calculées, qui doivent être réutilisées par des Actions et qui ne sont pas liées à l’utilisateur ni à l’exécution en cours.
  • Assurez-vous que les Actions qui effectuent une vérification ou déclenchent la ne puissent pas être contournées de façon involontaire ou malveillante.
  • Les Actions ne devraient jamais générer intentionnellement une erreur; si un processus s’arrête en raison d’une erreur ou d’une condition, utilisez la méthode api appropriée, comme api.access.deny().
  • Utilisez event.request.hostname pour le domaine utilisé dans les appels à l’Authentication API; il peut s’agir du domaine de locataire Auth0 par défaut ou d’un domaine personnalisé.

Modules d’Actions

  • Utilisez les modules d’Actions lorsqu’il faut réutiliser des fonctions dans différentes Actions afin d’éviter la redondance du code.
  • Réduisez le temps d’instanciation des objets lorsque possible en appliquant le modèle Singleton pour réutiliser des instances d’objet dans le module d’Actions.
  • Suivez les directives applicables présentées dans ce document concernant le code, la sécurité, la journalisation, les dépendances et les données utilisateur.
  • Lorsque vous utilisez un module d’Actions à partir d’une Action, tenez toujours compte de la version du module utilisée.
Lorsque vous publiez une nouvelle version d’un module d’Actions, Auth0 ne met pas automatiquement à jour la version référencée par les Actions, ce qui évite les problèmes potentiels lorsque la mise à niveau n’est pas compatible avec l’Action.

Principes de base du code

  • Utilisez l’opérateur d’égalité stricte === pour toutes les données entrantes ou stockées.
  • Utilisez une instruction return lorsque l’exécution de l’Action doit s’arrêter.
  • Exécutez un linter de code, comme ESLint, et un analyseur, comme Semgrep, pour améliorer la qualité du code et repérer automatiquement les problèmes.

Principes de base de la sécurité

  • N’inscrivez pas de secrets ni d’éléments de code sensibles en texte clair dans votre code Actions. Utilisez plutôt le gestionnaire de secrets ou votre propre gestionnaire en l’intégrant à votre code Actions.
  • Ne transmettez pas de renseignements personnels identifiables (PII) non chiffrés en clair, par exemple dans des URL ou des messages d’erreur.
  • Utilisez toujours des URL HTTPS pour les redirections et les appels d’API.
  • Ajoutez les adresses IP à une liste d’autorisation lorsque c’est possible.
  • Soyez attentif aux données entrantes qui peuvent être falsifiées (paramètres d’URL, agent utilisateur, etc.).

Codage défensif

  • Interceptez les erreurs et gérez-les au besoin.
  • Utilisez des clauses de garde et quittez tôt si le traitement de l’Action ne doit pas se poursuivre.

Journalisation

  • Ne consignez jamais de données sensibles, de secrets ou de renseignements personnels.
  • Ne dépassez pas la limite de 256 caractères consignés par Action.

Dépendances

  • Utilisez des packages fiables et maintenus.
  • Vérifiez s’il existe des CVE non corrigées à l’aide de la fonction d’audit de npm ou d’un vérificateur automatisé des dépendances lié à un dépôt.
  • Utilisez la version la plus récente d’un package, si possible.

Données utilisateur

  • Vérifiez si un courriel a été vérifié avec event.user.email_verified lorsqu’il est utilisé dans un contexte sensible ou à haute sécurité.
  • Les différentes connexions fournissent différentes données de profil utilisateur; le seul champ de profil utilisateur garanti est user_id.

Actions de redirection dans le flux de connexion

  • Le jeton renvoyé par api.redirect.encodeToken est signé, mais non chiffré; il ne faut donc pas inclure de données sensibles ni de renseignements personnels identifiables (PII) dans la charge utile.
  • Le flux de connexion s’exécute après une connexion réussie, ce qui comprend :
    • SSO (aucun formulaire de connexion n’est affiché)
    • authentification silencieuse (vérification d’une session à l’aide de prompt=none dans l’URL d’autorisation)
    • échange de Jeton d’actualisation (aucune interaction utilisateur)
    • octrois de mot de passe RO (les identifiants sont recueillis par une application puis échangés auprès du point de terminaison des jetons)
  • Les Actions qui redirigent doivent tenir compte des cas ci-dessus et soit refuser l’accès si une interaction est requise, soit autoriser intentionnellement le contournement, ce qui laisse à l’application qui demande la connexion la responsabilité de le gérer.