Skip to main content
Le soutien à long terme (LTS) de Node.js 12 et 16 a pris fin en 2023, ce qui signifie que l’équipe de développement de Node.js ne rétroporte plus les correctifs de sécurité critiques vers ces versions. L’exécution de vos runtimes sur Node 12 ou 16 pourrait exposer votre code d’extensibilité à des vulnérabilités de sécurité. Le runtime d’extensibilité Node 18 est offert de façon générale (GA) dans l’ensemble de notre offre d’extensibilité. Cela comprend Actions, Rules, Hooks, Database Scripts et Custom Social Connections. Nous vous encourageons fortement à passer à Node 18 dès que possible afin de suivre les meilleures pratiques en matière de sécurité du code.

Considérations générales

Migrer les Rules et Hooks vers Actions

Si vous utilisez un runtime d’extensibilité obsolète, nous vous recommandons de profiter de la révision de votre mise en œuvre des Rules et des Hooks pour les migrer vers les Actions (Node 18). Déterminez quels Rules et Hooks vous pouvez migrer vers les Actions en consultant Actions Limitations. Pour en savoir plus sur la migration de vos Rules et Hooks vers les Actions, consultez Migrate to Actions.

Intégrations Marketplace

Intégrations des connexions sociales

Utilisez la Management API pour obtenir la liste complète des connexions sociales susceptibles d’être touchées par un changement de version du runtime Node. Plus précisément, toutes les connexions sociales potentiellement touchées, qu’elles aient été créées explicitement comme connexion sociale personnalisée ou ajoutées initialement par l’entremise du Marketplace, ont l’attribut strategy dont la valeur est oauth1 ou oauth2. Vous pouvez ensuite parcourir, par pagination, toutes les connexions sociales personnalisées existantes dans un tenant donné à l’aide de l’endpoint GET connections de la . Par exemple, les options de requête suivantes renvoient les noms et les identifiants d’un maximum de 100 connexions sociales personnalisées :
Le ne permet pas de mettre à jour les scripts des connexions sociales personnalisées ajoutées via Marketplace. Si un changement au script est nécessaire pour assurer la compatibilité avec Node 18, vous devez utiliser la Management API.

Tâches de migration

Créer de nouvelles Actions personnalisées

Pour créer une nouvelle Action personnalisée avec Node 18 à partir d’Auth0 Dashboard :
  1. Accédez à Auth0 Dashboard > Actions > Library.
  2. Sélectionnez Create Action > Build from scratch.
  3. Dans le champ Runtime*, sélectionnez Node 18 (Recommended).
  4. Rédigez vos Actions personnalisées en Node 18, testez-les, puis déployez-les lorsque vous êtes prêt.

Mettre à niveau les Actions personnalisées existantes

Vous pouvez mettre à niveau individuellement les Actions personnalisées existantes basées sur Node 12 ou 16 vers Node 18 et rétablir la version précédente en utilisant l’ancien runtime. Pour faire passer les Actions à Node 18, créez et déployez une nouvelle version de l’implémentation existante avec les modifications requises, puis configurez-la pour utiliser Node 18 comme runtime.

Choisissez Node 18 pour les autres produits d’extensibilité

Le runtime utilisé pour les autres offres d’extensibilité (hors Actions) est défini globalement dans les paramètres avancés du tenant. La modification de ce paramètre a une incidence sur les fonctionnalités suivantes en même temps :
  • rules
  • hooks
  • scripts de base de données personnalisés
  • scripts de connexion sociale personnalisée
Pour modifier le paramètre de runtime d’extensibilité du tenant dans l’Auth0 Dashboard :
  1. Accédez à Dashboard > Settings > Advanced.
  2. Faites défiler jusqu’à la section Extensibility.
  3. Pour Runtime, sélectionnez Node 18.
Comme il s’agit d’un paramètre global qui a une incidence sur plusieurs fonctionnalités d’extensibilité à la fois, nous vous recommandons d’effectuer d’abord cette étape dans votre tenant de développement, de terminer les tests de toutes les fonctionnalités d’extensibilité applicables, puis de passer à votre tenant de production seulement lorsque vous ne constatez aucun problème en développement. Plus précisément pour les Custom DB scripts, vous pouvez suivre les étapes expliquées sur cette page pour vérifier individuellement un script avec une version précise du runtime avant de modifier la version globale du runtime.

Incompatibilités connues

Modules npm magiques

Le runtime d’extensibilité Node 12 permet d’utiliser certains modules npm sans les inclure explicitement dans le code d’extensibilité. À partir du runtime Node 16, nous avons retiré la prise en charge de ce type d’utilisation pour les modules suivants :
  • _
  • async
  • Auth0
  • azure_storage
  • bcrypt
  • crypto
  • couchbase
  • cql
  • ip
  • Knex
  • mongo
  • mysql
  • mysql_pool
  • ObjectID
  • pbkdf2
  • pg
  • postgres
  • Pubnub
  • q
  • querystring
  • sqlserver
  • uuid
  • xml2js
  • xmldom
  • xpath
  • xtend
Si vous avez encore du code d’extensibilité qui s’exécute sur Node 12, tenez compte de ce qui précède lorsque vous mettez le code à jour directement vers Node 18. Avant d’utiliser un module, vous devez vous assurer de l’inclure explicitement. Dans le contexte de Rules, Custom Database Connections et connexions sociales personnalisées, vous devez inclure explicitement une version du module indiquée comme disponible pour Node 18. Dans Hooks et Actions, vous devez ajouter la version cible voulue comme dépendance explicite avant d’inclure le module.

Versions de modules supprimées de Can I Require

Nous avons retiré de Can I Require la prise en charge des versions précisées des modules énumérés ci-dessous pour le runtime Node 18. Cette modification touche le code d’extensibilité associé à Rules, aux scripts de Custom Database Connection et aux scripts de connexion sociale personnalisée.
Le script Fetch User Profile pour les connexions sociales personnalisées suivantes (Indeed, monday.com, Snapchat et Tumblr), offertes dans le Marketplace, utilisait la version 0.22.0 du module axios, qui n’est pas disponible dans Node 18. Si vous utilisez l’une de ces connections, vérifiez et mettez à jour les scripts correspondants au besoin au moyen de la Management API.

Renégociation sécurisée requise par défaut pour les connexions TLS

Node.js 18 exige par défaut la renégociation sécurisée (RFC 5746) pour les connexions TLS, puisque cette exigence a été introduite dans la dépendance OpenSSL sous-jacente. Si votre code d’extensibilité effectue des appels réseau vers des services externes, les serveurs cibles doivent prendre en charge la renégociation sécurisée; sinon, les requêtes échoueront et vous recevrez une erreur semblable à :
Compte tenu de ce changement touchant la sécurité, nous vous recommandons de vérifier que tous les serveurs visés ont été mis à jour pour prendre en charge la renégociation sécurisée. Si les serveurs en question sont des serveurs tiers qui ne sont pas sous votre contrôle, vous pouvez évaluer la possibilité d’opter explicitement pour le comportement précédent. Par exemple, pour la bibliothèque axios, l’extrait de code suivant montre comment opter explicitement pour l’ancien comportement :