メインコンテンツへスキップ
Node.js 12および16の長期サポート(LTS)は、2023年に終了しました。つまり、Node.js開発チームが、重要なセキュリティ修正をこれらのバージョンにバックポートしないことを意味します。Node 12または16のランタイムで実行することは、拡張コードをセキュリティ脆弱性にさらす可能性があります。 Node 18の拡張ランタイムは、弊社の一連の拡張オファリングにおいて、一般利用可能(GA)です。これにはアクション、ルール、フック、データベーススクリプト、カスタムソーシャル接続が含まれます。コードセキュリティのベストプラクティスに従うために、できるだけ早くNode 18にアップデートすることを強くお勧めします。

一般的な考慮事項

RulesおよびHooksをActionsに移行する

廃止された拡張ランタイムを使用している場合は、(Node 18)Actionsに移行する機会として、RulesおよびHooksの実装を確認することをお勧めします。Actionsの制限を確認して、Actionsに移行できるRulesおよびHooksを判断してください。RulesおよびHooksをActionsに移行する方法については、「Actionsへの移行」をご覧ください。

Marketplaceの統合

ソーシャル接続の統合

Nodeランタイムバージョンの変更が影響を与える可能性があるソーシャル接続の全リストを確認するには、Management APIを使用します。特に、カスタムソーシャル接続として明示的に作成されたものか、Marketplaceを通して最初に追加されたものかを問わず、影響を受ける可能性があるソーシャル接続はすべて、oauth1oauth2のいずれかの値のstrategy属性を持ちます。 GET接続エンドポイントを使用して、ある特定のテナント内での既存のカスタムソーシャル接続すべてをページネーションできます。たとえば、以下のクエリオプションは、最大100のカスタムソーシャル接続の名前と識別子を返します。
は、Marketplaceを通して追加されたカスタムソーシャル接続のスクリプトの更新を許可しません。スクリプトの変更がNode 18との互換性を必要とする場合は、Management APIを使用する必要があります。

移行タスク

新しいカスタムActionsを作成する

Auth0 Dashboardを通してNode 18で新しいカスタムActionsを作成するには、
  1. [Auth0 Dashboard]>[Actions(アクション)]>[Library(ライブラリー)]に移動します。
  2. [Create Action(Actionを作成)]>[Build from scratch(初めから構築する)] の順に選択します。
  3. [Runtime*(ランタイム)] フィールドで、Node 18 (Recommended)(Node 18(推奨)) を選択します。
  4. Node 18にカスタムActionsを記述し、テストして、準備が完了したらデプロイします。

既存のカスタムActionsをアップグレード

Node 12または16で構築された既存のカスタムActionsをNode 18に個々にアップグレードでき、また古いランタイムを使用して前のバージョンに戻すことができます。ActionsをNode 18にアップグレードするには、必要な変更を加えて、ランタイムでNode 18が使用されるように設定して、既存の実装の新しいバージョンを作成してデプロイします。

他の拡張製品のためにNode 18を選択する

残りの(Actions以外の)拡張オファリングに使用されるランタイムは、テナントの詳細設定レベルでグローバルに定義されます。この設定を変更すると、同時に以下の機能性に影響を及ぼします。
  • ルール
  • フック
  • カスタムデータベースのスクリプト
  • カスタムソーシャル接続のスクリプト
Auth0 Dashboardでテナントの拡張ランタイム設定を変更するには、
  1. [Dashboard]>[Settings(設定)]>[Advanced(詳細設定)] に移動します。
  2. [Extensibility(拡張)] セクションにスクロールします。
  3. [Runtime(ランタイム)] で、Node 18 を選択します。
これが複数の拡張機能に同時に影響を与えるグローバル設定の場合、最初に開発テナントでこのステップを実施し、該当するすべての拡張機能のテストを完了し、開発で問題がみられない場合のみ、運用テナントに進むことをお勧めします。 Node 12拡張ランタイムは、拡張コードで明示的に要求することなく特定のnpmモジュールを使用することをサポートしています。Node 16ランタイムから、弊社は、以下のモジュールのこの種類の使用法に対するサポートを終了しました。

既知の破壊的変更

マジックnpmモジュール

まだNode 12で実行している拡張がある場合、コードをNode 18に直接アップデートする時には、上記を考慮してください。モジュールを使用する前に、明示的に要求されていることを必ず確認してください。
  • _
  • 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
Rules、カスタムデータベース接続、カスタムソーシャル接続においては、Node 18に利用可能だと記載されているモジュールのバージョンを明示的に要求する必要があります。 HooksおよびActionsにおいては、モジュールを要求する前に、明示的な依存関係として意図された対象バージョンを追加する必要があります。 Can I RequireのNode 18ランタイムについて以下にリストした特定のバージョンのモジュールに対するサポートを終了しました。この変更は、Rules、カスタムデータベース接続スクリプト、カスタムソーシャル接続スクリプトに関連する拡張コードに影響を与えます。

Can I Requireモジュールバージョンの削除

次のカスタムソーシャル接続(Indeedmonday.comSnapchat、およびTumblr)のユーザープロファイルの取得スクリプトは、Marketplaceで利用可能で、0.22.0バージョンのaxiosモジュールを使用していましたが、Node 18では利用できません。これらの接続のいずれかを使用する場合は、必要に応じてManagement APIを通じてそのスクリプトを確認し、更新してください。

TLS接続にデフォルトで必要となる安全な再ネゴシエーション

拡張コードが外部ネットワーク呼び出しを行う場合、ターゲットサーバーは安全な再ネゴシエーションをサポートしていなければならず、そうでなければ要求は失敗し、以下のようなエラーを受け取ります。
このセキュリティに関する変更を考慮して、ターゲットサーバーすべてが、安全な再ネゴシエーションをサポートするようにアップデートされていることを確認してください。管理下にないサードパーティーのサーバーの場合は、以前の動作にオプトインする可能性を評価します。 たとえば、axiosライブラリーについては、以下のコードスニペットが、旧来の動作にオプトインする方法を示しています。