Conteneurs Webtask
Les scripts d’action s’exécutent dans un conteneur Webtask individuel avec une limite d’exécution d’environ 20 secondes. Après l’exécution des fonctions, le conteneur est recyclé. Lorsqu’un conteneur est recyclé, il met fin aux opérations en cours du script d’action. Cela peut entraîner le retour d’une condition d’erreur et une réinitialisation potentielle de l’objetglobal
. Pour plus d’informations sur l’objet global
, lisez Meilleures pratiques de l’environnement des scripts d’action des bases de données personnalisées.
Fonctionnalités asynchrones
Les fonctions asynchrones de JavaScript, y compris les objets Promise et les fonctions async, sont prises en charge dans les scripts d’action. Vous pouvez utiliser les fonctions asynchrones pour exécuter des opérations non bloquantes dans un script d’action, mais assurez-vous que ces opérations ne dépassent pas la limite d’exécution du conteneur Webtask. Lorsque le conteneur Webtask est recyclé, il met fin à toutes les opérations en attente, ce qui peut entraîner un comportement inattendu ou une erreur. Si vous appelez un service externe ou une API dans votre script d’action, paramétrez la fonction pour qu’elle se termine après une durée raisonnable et renvoyez une erreur si le service externe ou l’API ne peut pas être atteint.Exemples
Auth0 prend en charge l’utilisation d’objets Promise et de fonctions async dans les scripts d’action.Objet Promise
Cet exemple utilise la méthode intégrée JavaScriptfetch
, qui obtient une ressource à partir d’un réseau et renvoie un objet Promise, écrit à l’aide de chaînes Promise.
Fonction asynchrone
Cet exemple utilise la méthode intégrée JavaScriptfetch
, qui obtient une ressource d’un réseau et renvoie un objet Promise, écrit à l’aide de fonctions asynchrones.
Fonction de rappel
La fonctioncallback
signale que l’opération du script d’action est terminée et doit être appelée exactement une fois. Un script d’action doit se terminer immédiatement après un appel à la fonction callback
, de préférence en utilisant explicitement l’instruction return
.
Si la fonction de
callback (rappel)
est appelée plus d’une fois, cela peut entraîner des résultats inattendus et/ou des erreurs.Si la fonction de callback (rappel)
n’est pas appelée une seule fois, l’exécution du script d’action sera alors bloquée et une erreur sera renvoyée lorsque le conteneur Webtask sera recyclé.Traitement asynchrone
Si un script d’action utilise un traitement asynchrone, la fonctioncallback
doit être appelée après la fin de toutes les opérations asynchrones.
Paramètres
Si la fonctioncallback
est appelée sans paramètre, elle sera exécutée comme si un paramètre null
avait été fourni.
Taille
La taille totale de la mise en œuvre d’un script d’action ne doit pas dépasser 100 Ko. Cette limitation de taille exclut les modules importésnpm
. Pour plus d’informations sur les modules npm
, lisez Meilleures pratiques de l’environnement des scripts d’action des bases de données personnalisées.
Plus la taille d’un script est importante, plus la latence est introduite en fonction du processus d’emballage et de transport utilisé par la plateforme Webtask. La taille a un impact sur les performances du système.
Fonctions anonymes
Les scripts d’action peuvent être mis en œuvre sous forme de fonctions anonymes, mais il n’est pas recommandé du faire. Les fonctions anonymes compliquent le débogage du script d’action et l’interprétation de la pile d’appels générée à la suite d’une condition d’erreur exceptionnelle. Pour en savoir plus sur les fonctions anonymes, lisez IIFE sur MDN Web Docs.Gestion des erreurs
Transmettez un objetError
à la fonction callback
avec un message descriptif de l’erreur :
Sécurité
Interface de base de données par rapport à une API
Veillez à sécuriser toutes les communications entre Auth0 et votre magasin d’identité hérité. Si votre magasin d’identité hérité n’a pas encore mis en œuvre une API, il est fortement recommandé de le faire. Si votre magasin d’identité hérité dispose d’une API, vous pouvez enregistrer l’API via Auth0, et créer une Action pour restreindre l’accès des utilisateurs finaux. Si votre magasin d’identité hérité ne dispose pas d’une API et qu’il n’est pas possible d’en mettre une en œuvre, vous pouvez toujours communiquer directement avec votre base de données. Veillez à ajouter les adresses IP d’Auth0 à la liste d’autorisations de votre pare-feu pour autoriser le trafic entrant en provenance d’Auth0.Jetons de fournisseur d’identité
Si l’objetuser
renvoie les propriétés access_token
et refresh_token
, Auth0 les traite différemment des autres types d’informations utilisateur. Auth0 les stocke dans la propriété identities
de l’objet user
:
read:user_idp_tokens
lorsque vous demandez un jeton d’accès.