> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Rédigez du code d’Actions clair, concis et sécurisé grâce à nos directives de codage.

# Directives de codage des Actions

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

<div id="actions-basics">
  ## Principes de base des Actions
</div>

* 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](/fr-CA/docs/get-started/applications/configure-application-metadata) 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](/fr-CA/docs/customize/actions/transaction-metadata) pour partager des données entre les [déclencheurs post-login](/fr-CA/docs/customize/actions/explore-triggers/signup-and-login-triggers/login-trigger) 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 <Tooltip tip="Authentification multifacteur (MFA) : processus d’authentification de l’utilisateur qui utilise un facteur en plus du nom d’utilisateur et du mot de passe, comme un code envoyé par SMS." cta="Voir le glossaire" href="/fr-CA/docs/glossary?term=MFA">MFA</Tooltip> 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é](/fr-CA/docs/customize/custom-domains).

<div id="actions-modules">
  ## Modules d’Actions
</div>

* 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](https://en.wikipedia.org/wiki/Singleton_pattern) 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.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  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.
</Callout>

<div id="coding-basics">
  ## Principes de base du code
</div>

* 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](https://eslint.org), et un analyseur, comme [Semgrep](https://semgrep.dev/docs/getting-started/), pour améliorer la qualité du code et repérer automatiquement les problèmes.

<div id="security-basics">
  ## Principes de base de la sécurité
</div>

* 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](/fr-CA/docs/customize/actions/write-your-first-action#add-a-secret) 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.).

<div id="defensive-coding">
  ## Codage défensif
</div>

* [Interceptez les erreurs](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Control_flow_and_error_handling#exception_handling_statements) 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.

<div id="logging">
  ## Journalisation
</div>

* 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.

<div id="dependencies">
  ## Dépendances
</div>

* 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`](https://docs.npmjs.com/cli/v6/commands/npm-audit) 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.

<div id="user-data">
  ## Données utilisateur
</div>

* 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](/fr-CA/docs/manage-users/user-accounts/user-profiles/user-profile-structure) garanti est `user_id`.

<div id="redirect-actions-in-the-login-flow">
  ## Actions de redirection dans le flux de connexion
</div>

* 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.
