Pratiques exemplaires pour l’exécution des scripts d’action de base de données personnalisée
Découvrez les pratiques exemplaires pour l’exécution des scripts d’action de base de données personnalisée.
Un type de connexion de base de données personnalisée vous permet de configurer des scripts d’action, qui contiennent du code personnalisé utilisé par Auth0 pour s’interfacer avec votre magasin d’identité hérité. Les scripts d’action sont des fonctions JavaScript nommées qui acceptent un ensemble prédéfini de paramètres.
Les scripts d’action s’exécutent dans un conteneur Webtask distinct, avec une limite d’exécution d’environ 20 secondes. Une fois les fonctions exécutées, le conteneur est recyclé.Lorsqu’un conteneur est recyclé, il met fin aux opérations en attente du script d’action. Cela peut entraîner le retour d’une erreur et la réinitialisation possible de l’objet global. Pour en savoir plus sur l’objet global, consultez Pratiques exemplaires pour l’environnement des scripts d’action de base de données personnalisée.
Les fonctionnalités 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 fonctionnalités 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 à toute opération en attente, ce qui peut entraîner un comportement inattendu ou une erreur.Si vous effectuez un appel à un service externe ou à une API dans votre script d’action, définissez un délai d’expiration raisonnable pour la fonction, puis renvoyez une erreur si le service externe ou l’API est inaccessible.
Cet exemple utilise la méthode JavaScript intégrée fetch, qui récupère une ressource depuis le réseau, puis renvoie un objet Promise. Il est présenté à l’aide d’un chaînage de promesses.
Cet exemple utilise la méthode JavaScript intégrée fetch, qui récupère une ressource sur le réseau et renvoie un objet Promise. Il est rédigé à l’aide de fonctions asynchrones.
La fonction callback indique que l’exécution 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 l’appel à la fonction callback, de préférence en utilisant explicitement l’instruction return.
Si la fonction callback est appelée plus d’une fois, cela peut entraîner des résultats inattendus ou des erreurs.Si la fonction callback n’est jamais appelée, l’exécution du script d’action se bloquera et une erreur sera renvoyée lorsque le conteneur Webtask sera recyclé.
Si un script d’action utilise un traitement asynchrone, la fonction callback doit être appelée seulement une fois toutes les opérations asynchrones terminées.
La taille totale de l’implémentation de tout script d’action ne doit pas dépasser 100 kB. Cette limite n’inclut pas les modules npm importés. Pour en savoir plus sur les modules npm, consultez Pratiques exemplaires pour l’environnement des scripts Action de base de données personnalisée.Plus un script est volumineux, plus le processus d’empaquetage et de transport utilisé par la plateforme Webtask ajoute de la latence. La taille a une incidence sur les performances du système.
Les scripts d’action peuvent être écrits sous forme de fonctions anonymes, mais ce n’est pas recommandé. Les fonctions anonymes rendent plus difficile le débogage du script d’action et l’interprétation de la pile d’appels générée en cas d’exception. Pour en savoir plus sur les fonctions anonymes, consultez IIFE sur MDN Web Docs.
Veillez à sécuriser toutes les communications entre Auth0 et votre magasin d’identités hérité. Si votre magasin d’identités hérité ne dispose pas déjà d’une API, il est fortement recommandé d’en implémenter une.Si votre magasin d’identités hérité dispose d’une API, vous pouvez enregistrer l’API auprès d’Auth0 et créer une Action pour restreindre l’accès aux utilisateurs finaux.Si votre magasin d’identités hérité ne dispose pas d’une API — et qu’il n’est pas possible d’en implémenter une — vous pouvez tout de même communiquer directement avec votre base de données. Assurez-vous d’ajouter les adresses IP d’Auth0 à la liste d’autorisation de votre pare-feu pour autoriser le trafic entrant provenant d’Auth0.
Si l’objet user 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 :