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_metadatapour 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
apiappropriée, commeapi.access.deny(). -
Utilisez
event.request.hostnamepour 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
returnlorsque 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
npmou 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_verifiedlorsqu’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.encodeTokenest 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=nonedans 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.