Node.js 16に移行する

2022年4月30日に、Node.js v12の長期サポート(LTS)が終了しました。このため、Node.js開発チームは重要なセキュリティ修正をこのバージョンに移植できません。これにより、拡張コードが潜在的にセキュリティの脆弱性にさらされる可能性があります。そのため、Auth0はNode 12からNode 16に移行しています。

推奨事項

Node 16のアップデートでは、Node.jsの標準ライブラリーに破壊的変更はありません(ルールとカスタムデータベースのアクションスクリプトは影響を受けます。詳細は「破壊的変更 - ルールとカスタムデータベースのアクションスクリプトのみ」セクションを参照)が、Node v12を利用しているお客様は、セキュリティとコンプライアンスのために、長期サポート(LTS)が有効なNodeバージョンを最新の状態に維持してください。Node 8を利用しているお客様は、セキュリティコンプライアンスに違反しているため、Node 16に移行して、セキュリティリスクを排除する必要があります。Auth0は2022年2月22日にNode 8のランタイムをパブリッククラウドのテナントで削除し、2022年4月にはプライベートクラウドのリリースで削除しました。これらの日付以降にNode 8が設定されたままのテナントでは、サービス中断の可能性があります。

アクションは複数バージョンのNodeに同時対応するように設計されており、現在はNode 12とNode 16の両方に対応しています。また、ノーコードのアクション統合では、業界標準の「常に最新」バージョン管理に従って、マイナーバージョンが自動的にアップデートされます。基本コードは常時最新に維持され、最新バージョンのNode.jsに更新されます。

使用しているバージョン 必要なアクション タスク
Actions Node 12 既存のカスタムActionのバージョンを、新しいバージョンに更新すると、Node 16に更新されます。 できるだけ早くすべてのカスタムActionのバージョンを更新してください。レガシーのNode 12(ルール/フック/拡張)

タスク

アクションをアップグレードする

Node 12で構築された既存のアクションは、Node 16にアップグレードすることができます。その後、必要であれば、以前のNode 12に戻すことができます。アクションをNode 16にアップグレードするには、ランタイムでNode 16が使用されるように、新しいバージョンセットを作成して導入します。

ルールをアクションに移行する

できる限り、ルールやフックはアクションに移行してください。移行するべきルールやフックを判断するには、「アクションの制限事項」をお読みください。ルールやフックをアクションに移行する方法については、「アクションへの移行」にガイドが記載されています。

Node 16ランタイムを有効にする

ルールやフック、拡張機能など、レガシーの拡張性プロダクトを使用している場合には、テナントレベルでNode 16を有効化する必要があります。まず開発テナントでNode 16ランタイムに切り替えて、構成をテストしてから、運用テナントで切り替えることをお勧めします。

  1. [Extensibility(拡張性)]パネルを使って開発テナントでNode 16を有効にします。このパネルは、Dashboardの[Advanced Tenant Settings(テナントの詳細設定)]ページにあります。[Runtime(ランタイム)]ドロップダウンで[Node 16]を選択します。

  2. [Save(保存)]をクリックします。

  3. 下のリストに項目がないか、それぞれに移行手順が完了されているかを確認します。

  4. 構成をテストします。テストし終わったら、運用テナントを使って上記の手順1と2を繰り返し、運用環境でNode 16を有効にします。

破壊的変更 - ルールとカスタムデータベースのアクションスクリプトのみ

ルールはJavaScript sandboxで実行されます。sandboxはECMAScript 6言語と数多くのNode.js(バージョン16以上)モジュールに対応しています。ルールやカスタムデータベースのアクションスクリプト内で、以下にあるグローバルプロパティのいずれかを使用している場合には、対応しているsandboxモジュールリストの中から代替を見つけて、明示的に要求してください。

  • _

  • async

  • Auth0

  • azure_storage

  • bcrypt

  • crypto

  • couchbase

  • cql

  • ip

  • jwt

  • Knex

  • mongo

  • mysql

  • mysql_pool

  • ObjectID

  • pbkdf2

  • pg

  • postgres

  • Pubnub

  • q

  • querystring

  • request

  • sqlserver

  • uuid

  • xml2js

  • xmldom

  • xpath

  • xtend