Passer au contenu principal
La prise en charge à long terme (LTS) pour les versions 12 et 16 de node.js a pris fin en 2023, ce qui signifie que l’équipe de développement de Node.js ne porte plus les correctifs de sécurité critiques sur ces versions de manière rétroactive. Toute exécution effectuée avec la version de Node 12 ou 16 comme environnement d’exécution pourrait exposer votre code d’extensibilité à des vulnérabilités de sécurité. L’environnement d’exécution de l’extensibilité de la version 18 de Node est généralement disponible sur l’ensemble de notre suite d’offres d’extensibilité. Cela inclut les actions, les règles, les hooks, les scripts de base de données et les connexions personnalisées avec les réseaux sociaux. Nous encourageons vivement tout le monde à mettre à jour vers la version de Node 18 dès que possible pour adhérer aux meilleures pratiques de sécurité du code.

Considérations générales

Migrer les règles et hooks vers les actions

Si vous utilisez une exécution d’extensibilité interrompue, nous vous recommandons de profiter de l’examen de votre implémentation des règles et des hooks pour les migrer vers des actions (la version 18 de Node). Déterminez les règles et les appels que vous pouvez migrer vers les actions en visitant Limites liées aux actions. Pour savoir comment migrer vos règles et vos appels vers des actions, veuillez consulter la page Migrer vers les actions.

Intégrations Marketplace

Intégrations des connexions avec les réseaux sociaux

Utilisez la Management API pour identifier une liste complète des connexions avec les réseaux sociaux qu’un changement de version de l’environnement d’exécution de Node peut affecter. Plus particulièrement, toutes les connexions avec les réseaux sociaux potentiellement affectées, qu’elles soient explicitement créées en tant que connexion avec les réseaux sociaux personnalisée ou initialement ajoutées par la place du marché, ont une valeur d’attribut de strategy établie à oauth1 ou à oauth2. Vous pouvez ensuite paginer à travers toutes les connexions personnalisées avec les réseaux sociaux existantes dans un locataire donné à l’aide du point de terminaison GET Connections de . Par exemple, les options de requête suivantes renvoient les noms et identifiants d’un maximum de 100 connexions personnalisées avec les réseaux sociaux :
/api/v2/connections?strategy=oauth1&strategy=oauth2&include_totals=true&fields=name&per_page=100
L’ ne permet pas de mettre à jour les scripts pour les connexions personnalisées avec les réseaux sociaux ajoutées par Marketplace Si une modification de script est nécessaire pour être compatible avec la version 18 de Node, vous devez utiliser Management API.

Tâches de migration

Créer de nouvelles actions personnalisées

Pour créer une nouvelle action personnalisée avec la version de Node 18 par l’Auth0 Dashboard :
  1. Naviguez vers Auth0 Dashboard> Actions > Bibliothèque.
  2. Sélectionnez Créer une action > Construire à partir de zéro.
  3. Dans le champ Exécution*, sélectionnez Version 18 de Node (recommandé).
  4. Écrivez vos actions personnalisées dans la version 18 de Node, puis testez et déployez-les lorsqu’elles sont prêtes.

Mettre à niveau des actions personnalisées existantes

Vous pouvez mettre à niveau individuellement les actions personnalisées existantes construites sur la version 12 ou 16 de Node vers la version de Node, puis revenir à la version précédente en utilisant l’ancien environnement d’exécution. Mettez à jour les actions vers la version de Node en créant et en déployant une nouvelle version de l’implémentation actuelle pour utiliser la version 18 de Node comme environnement d’exécution.

Choisissez la version 18 de Node pour les autres produits d’extensibilité

Le temps d’exécution utilisé pour les offres d’extensibilité restantes (autres que les actions) est défini globalement au niveau des paramètres avancés du locataire. La modification de ce paramètre affecte simultanément les fonctionnalités suivantes :
  • règles
  • hooks
  • scripts personnalisés de base de données
  • scripts de connexion personnalisée avec les réseaux sociaux
Pour modifier le paramètre d’exécution de l’extensibilité du locataire dans l’Auth0 Dashboard :
  1. Accédez à Dashboard > > Paramètres > > Avancés.
  2. Faites défiler jusqu’à la section Extensibilité.
  3. Pour l’environnement d’exécution, sélectionnez version 18 de Node.
Étant donné qu’il s’agit d’un paramètre global qui a un impact simultané sur plusieurs fonctionnalités d’extensibilité, nous vous recommandons d’effectuer d’abord cette étape dans votre locataire de développement, de tester toutes les fonctionnalités d’extensibilité applicables et de ne passer à votre locataire de production que lorsque vous ne voyez aucun problème en cours de développement. En particulier avec les scripts de bases de données personnalisés, vous pouvez suivre les étapes expliquées sur cette page pour vérifier individuellement un script par rapport à une version d’exécution spécifique avant de procéder à la modification de la version d’exécution globale.

Changements de rupture connus

Modules npm magiques

L’environnement d’exécution d’extensibilité de la version 12 de Node prend en charge l’utilisation de modules npm spécifiques sans les exiger explicitement dans le code d’extensibilité. À partir de la version 16 de l’environnement d’exécution de Node, nous avons supprimé 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 l’extensibilité est toujours en cours d’exécution sur la version 12 de Node, tenez compte de ce qui précède lors de la mise à jour du code directement vers la version 18 de Node. Avant d’utiliser un module, vous devez vous assurer qu’il est explicitement requis. Dans le contexte des règles, des connexions de base de données personnalisées et des connexions personnalisées avec les réseaux sociaux, vous devez explicitement exiger une version du module qui est répertoriée comme disponible pour la version 18 de Node. Dans les hooks et les actions, vous devez ajouter la version cible prévue en tant que dépendance explicite avant d’exiger le module.

Can I Require : suppression de versions de modules

Nous avons supprimé la prise en charge des versions spécifiées des modules ci-dessous pour le runtime Node 18 dans Can I Require. Cette modification affecte le code d’extensibilité associé aux règles, aux scripts de connexion à une base de données personnalisée et aux scripts de connexion sociale personnalisée.
Le script de récupération du profil utilisateur pour les connexions sociales personnalisées suivantes (Indeed, monday.com, Snapchat, et Tumblr), disponible via 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 connexions, examinez et mettez à jour leurs scripts si nécessaire via Management API.
ModuleVersions
@analytics/google-analytics0.4.0
@auth0/hapi13.5.1, 13.6.0
@auth0/rule-utilities0.1.0
@gitbeaker/node17.0.1
@incognia/api1.0.0
@octokit/rest15.8.2
@sentry/node5.6.2, 5.15.5, 6.2.0
acorn1.2.2
airbrake1.0.2
airgram3.1.1
ajv6.10.1
amazon-dax-client1.2.2
amazon-mws-node1.0.3
analytics0.5.1
analytics-node2.0.1, 3.5.0
applicationinsights0.15.8, 0.18.0, 1.5.0, 1.8.8
async1.0.0, 0.9.0, 2.1.2, 2.6.1
auth02.4.0, 2.1.0, 2.0.0, 0.8.2, 2.6.0, 2.7.0, 2.8.0, 2.9.1, 2.13.0, 2.17.0, 2.17.1, 2.19.0, 2.23.0, 2.27.0, 2.27.1, 2.30.0, 2.31.0, 2.32.0, 2.34.2, 2.35.0, 2.36.1, 2.36.2, 2.39.0, 3.0.1
auth0-authz-rules-api4.0.0
auth0-ext-template-renderers0.4.2
auth0-extension-express-tools1.0.2, 1.1.5, 1.1.6, 2.0.0
auth0-extension-hapi-tools1.0.0, 1.1.0, 1.2.0, 1.2.1, 1.2.2, 1.3.0
auth0-extension-tools1.0.0, 1.2.1, 1.3.1, 1.3.2, 1.4.0
auth0-magic3.1.0
auth0-oauth2-express0.0.1, 0.0.3, 1.1.5
auth0-source-control-extension-tools3.0.10, 3.0.9, 3.1.4, 3.4.0, 3.5.1, 4.0.3, 4.0.5, 4.0.6, 4.0.7, 4.1.1, 4.1.2, 4.1.3, 4.1.5, 4.1.7, 4.1.9
aws-sdk2.2.30, 2.1.31, 2.1.13, 2.4.13, 2.5.3, 2.197.0, 2.291.0, 2.458.0, 2.593.0
axios0.15.2, 0.18.0, 0.19.2, 0.21.1, 0.21.3, 0.22.0, 0.27.2
azure0.10.6
azure-storage0.4.4, 0.4.1, 0.9.0
babel5.4.7, 5.1.9
bcrypt4.0.0
bluebird2.9.26, 3.4.6
body-parser1.12.4
boom2.7.2
botbuilder0.9.0
bson0.3.2, 4.4.0
cookie-parser1.3.5
datadog-metrics0.8.2, 0.9.0, 0.9.2, 0.9.3
disposable-email-domains1.0.14, 1.0.15, 1.0.56
dockerode2.1.4, 2.0.3
dotenv0.4.0, 2.0.0
easy-pbkdf20.0.2
ejs2.3.1
engine.io-client1.5.1
express4.12.4, 4.14.0, 4.16.3
express-jwt3.1.0, 5.1.0
faunadb2.11.1, 4.1.1
filter-object2.1.0
firebase7.12.0
firebase-admin4.0.4, 5.0.0, 6.0.0, 8.0.0, 8.12.1
form-data0.2.0
getstream3.4.1
gitlab1.7.0
google-auth-library1.0.0
google-libphonenumber2.0.7, 3.2.8, 3.2.10
googleapis2.1.6, 34.0.0
got3.2.0, 9.2.1, 10.7.0, 11.3.0, 11.5.2
hapi13.5.0
hapi-auth-jwt27.0.1
hapi-swagger7.4.0
hoek2.14.0
http-proxy1.11.1
ibm_db2.6.4
ip0.3.2, 0.0.1
ipaddr.js1.0.1
joi6.10.1
jose3.19.0
jsforce1.6.0
jsonwebtoken5.7.0, 5.0.1, 5.0.0, 7.1.9, 8.5.0
jwks-rsa1.0.0, 1.1.1, 1.6.0
ldapjs1.0.0
lodash3.10.1, 3.9.3, 2.4.1, 4.8.2, 4.17.10, 4.17.19
lru-cache2.6.4
mixpanel0.4.0
mkdirp0.5.1
moment2.10.3, 2.11.2
mongodb2.0.48, 2.0.33, 2.0.27, 2.2.11, 3.1.4, 4.1.0, 3.6.10, 3.5.11
mongoose4.1.6
morgan1.5.3
mysql2.7.0, 2.6.2, 2.0.0-alpha8, 2.15.0
mysql21.5.3
nano6.2.0
neo4j-driver1.7.1
node-fetch2.6.0
node-jose0.9.2
node-rdkafka2.10.1
nodemailer2.5.0
nsp2.4.0
oauth0.9.12
passport-wsfed-saml22.11.4
pg4.5.7, 4.3.0, 4.1.1, 6.1.2, 7.17.1
postmark1.3.1
q1.0.1
qs3.1.0
ramda0.18.0, 0.23.0
range_check0.0.1
raw-body2.1.0
react15.3.2
redis0.12.1
request2.56.0, 2.55.0, 2.27.0, 2.67.0, 2.73.0, 2.75.0, 2.81.0, 2.83.0, 2.88.0
rethinkdb2.1.1, 2.0.0-1, 2.0.0
rollbar0.6.2, 2.12.2
semver4.3.4
sendgrid1.8.0, 3.0.7
sequelize3.1.1
soap0.23.0
socket.io1.3.5
socket.io-client1.3.5
splunk-bunyan-logger0.9.1
ssh20.4.13
stamplay1.0.6, 1.0.5, 1.0.3
stripe3.3.4, 4.14.0, 4.24.0, 7.1.0, 7.4.0, 8.52.0
sumo-logger1.5.5
superagent1.2.0, 3.8.3, 4.1.0
tedious6.6.2, 1.11.0, 0.1.4, 8.3.1, 9.2.1
tough-cookie1.2.0
twilio2.2.1, 3.6.0, 3.57.0
twit1.1.20
uuid2.0.3, 2.0.1, 3.1.0, 3.3.2, 7.0.3, 8.0.0
vso-node-api3.1.1
watson-developer-cloud2.0.1
winston1.0.0, 0.8.1, 3.1.0
xml2js0.4.8, 0.2.8
xmlbuilder2.6.4
xmldom0.1.19, 0.1.13
xpath0.0.5
xtend1.0.3

Une renégociation sécurisée est requise par défaut pour les connexions TLS

La version 18 de Node.js nécessite une renégociation sécurisée (RFC 5746) pour les connexions TLS par défaut, une conséquence de l’exigence introduite dans la dépendance OpenSSL sous-jacente. Si votre code d’extensibilité effectue des appels réseau externes, les serveurs cibles doivent prendre en charge la renégociation sécurisée, sinon, les demandes échoueront et vous recevrez une erreur similaire à :
Error: write EPROTO C0BAF076:error:0A000152:SSL routines:final_renegotiate:unsafe legacy renegotiation disabled:../deps/openssl/openssl/ssl/statem/extensions.c:922:
Compte tenu de ce changement lié à la sécurité, nous vous recommandons de vous assurer que tous les serveurs cibles sont 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 pour le comportement précédent. Par exemple, pour la bibliothèque axios, l’extrait de code suivant illustre comment activer le comportement hérité :
const axios = require('axios');
const https = require('https');
const crypto = require('crypto');

axios.get(
  'https://[LEGACY_SERVER]', 
  {
    httpsAgent: new https.Agent(
      {
        secureOptions: crypto.constants.SSL_OP_LEGACY_SERVER_CONNECT
      }
    )
  })
I