Node.js 8からNode.js 12への移行

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

影響のある機能

次のAuth0機能がノード8を使用します。

  • ルール

  • フック

  • カスタムデータベース接続

  • カスタムソーシャル接続

  • 拡張機能

上記の拡張機能を使用しない場合は、この移行の影響を受けません。

タスク

WebtaskランタイムにNode 12を導入するプロセスの一環として、Node 8から12への上位互換性がないモジュールを特定するために、いくつかのテストを実行しました。ほとんどの場合、Node 12にアップグレードできるはずです。

とはいえ、移行前に、以下のすべてをテストすることを強くお勧めします。

  • ルール

  • フック

  • カスタムデータベース接続とスクリプト

  • カスタムソーシャル接続

  • 拡張機能

Auth0では、まず開発テナントをNode 12ランタイムに切り替え、開発テナントでテストを完了し、開発中に問題が見られない場合にのみ、運用環境のテナントを移行してください。

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

この移行の結果として追加の動作変更が発生する可能性があるため、移行スイッチを用意して、 Node 12を使用して、環境を新しいWebtaskランタイムに移行します。

Auth0では、まず開発テナントをNode 12ランタイムに切り替え、開発テナントでテストを完了し、開発中に問題が見られない場合にのみ、運用環境のテナントを移行してください。

ルール、フック、カスタムデータベーススクリプト、カスタムソーシャル接続について、Management APIをクエリできます。これにより、テスト目的で運用テナントから開発テナントにアイテムを移動しやすくなります。

Management APIで接続エンドポイントを使用する場合、options.customScriptsを使用してカスタムデータベーススクリプトを取得または更新できます。同様に、options.scripts.fetchUserProfileでカスタムソーシャル接続を見つけることができます。

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

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

  3. 以下にリストされている項目を使用する場合は、それぞれの移行手順を完了してください。

  4. 構成をテストします。

  5. 何も壊れていないことを確認したら、上記の手順1と2を使用して、運用テナントでNode 12を有効にします。

新しいURLを許可リストに登録

委任管理拡張機能とシングル サインオン(SSO)ダッシュボード拡張機能では、拡張機能とカスタムWebタスクへのアクセスに使用するURLを許可リストに登録する必要があります。Node 12にアップグレードすると、拡張機能とカスタムWebタスクへのアクセスに使用するURLが変更されます。これは、これらの拡張機能にとって重大な変更です。

これらの拡張機能のいずれかを使用する場合は、新しいURLを許可されたコールバックURLと許可されたログアウトURLの両方として許可リストに登録する必要があります。

URLのリージョン部分は8から12に変更されます。URLを使用して拡張機能にアクセスする際:

https://{yourTenant}.us8.webtask.io/dummy-extension-url

Node12にアップグレードする際、URLは:

https://{yourTenant}.us12.webtask.io/dummy-extension-url

  1. Dashboard > [Applications(アプリケーション)] > [Applications(アプリケーション)] > [Settings(設定)]に移動し、 を[Allowed Callback URLs(許可されたコールバックURL)]および[Allowed Logout URLs(許可されたログアウトURL)]フィールドに追加します。

  2. Auth0コンテナー内のカスタムWebタスクの実行URLも変更されます。これらのWebタスクを呼び出す外部アプリケーションを更新する必要があります。

認可拡張機能ルールの再発行

認可拡張機能を使用すると、auth0-authorization-extensionルールが生成されます。認可拡張機能内からこのルールを再発行して、URLを自動的に更新します。

  1. [Installed Extensions(インストールされた拡張機能)]タブから、認可拡張機能の最新バージョンにアップグレードしたことを確認します。[Upgrade(アップグレード)]ボタンがある場合は、クリックしてアップグレードします。ボタンが表示されない場合は、すでに最新バージョンの拡張機能を使用しています。

  2. 認可拡張機能の設定ページを開きます。

  3. URLのルールを更新するには、[Publish Rule(ルールの公開)]ボタンをクリックしてルールを再度公開します。

  4. テストして、すべてがまだ機能していることを確認します。更新後に無効なAPIキーエラーが表示される場合は、[Rotate(回転)]ボタンをクリックして新しいAPIキーを生成します。

委任管理URLを構成する

委任管理拡張機能を使用する場合、次のマトリックスには、Node 12に移行した後に構成する必要がある更新されたURLが含まれています。URLは場所によって異なります。

場所 ノード12で許可されたコールバックURL ノード12で許可されたログアウトURL
US-1 https://{yourTenant}.us12.webtask.io/auth0-delegated-admin/login https://{yourTenant}.us12.webtask.io/auth0-delegated-admin
US-3 https://{yourTenant}.us.webtask.run/auth0-delegated-admin/login https://{yourTenant}.us.webtask.run/auth0-delegated-admin
EU https://{yourTenant}.eu12.webtask.io/auth0-delegated-admin/login https://{yourTenant}.eu12.webtask.io/auth0-delegated-admin
AU https://{yourTenant}.au12.webtask.io/auth0-delegated-admin/login https://{yourTenant}.au12.webtask.io/auth0-delegated-admin
JP-1 https://{yourTenant}.jp.webtask.run/auth0-delegated-admin/login https://{yourTenant}.jp.webtask.run/auth0-delegated-admin

たとえば、米国にいて委任管理を使用している場合は、アプリケーションの設定で次のフィールドを更新する必要があります。

  • Allowed Callback URL(許可されているコールバックURL)https://{yourTenant}.us12.webtask.io/auth0-delegated-admin/login

  • Allowed Logout URLs(許可されているログアウトURL)https://{yourTenant}.us12.webtask.io/auth0-delegated-admin

SSOダッシュボードURLを構成する

次のマトリックスには、Node 12に移行した後に構成する必要がある更新されたURLが含まれています。URLは場所によって異なります。

管理者のログインURL:

場所 許可されているコールバックURL
米国-1 https://{yourTenant}.us12.webtask.io/auth0-sso-dashboard/admins/login
米国-3 https://{yourTenant}.us.webtask.run/auth0-sso-dashboard/admins/login
欧州 https://{yourTenant}.eu12.webtask.io/auth0-sso-dashboard/admins/login
オーストラリア https://{yourTenant}.au12.webtask.io/auth0-sso-dashboard/admins/login
日本 https://{yourTenant}.jp.webtask.run/auth0-sso-dashboard/admins/login

ユーザーのログインURL:

場所 許可されているコールバックURL
米国-1 https://{yourTenant}.us12.webtask.io/auth0-sso-dashboard/login
米国-3 https://{yourTenant}.us.webtask.run/auth0-sso-dashboard/login
欧州 https://{yourTenant}.eu12.webtask.io/auth0-sso-dashboard/login
オーストラリア https://{yourTenant}.au12.webtask.io/auth0-sso-dashboard/login
日本 https://{yourTenant}.jp.webtask.run/auth0-sso-dashboard/login

拡張機能の更新

ほとんどの拡張機能は、認証にPUBLIC_WT_URLの非表示シークレットを使用します。このシークレットはランタイムバージョンに依存し、自動的に更新されません。

更新するには、拡張機能の設定を保存する必要があります(変更は必要ありません)。これを行うには、ランタイムをNode 12に切り替えた後、拡張機能ダッシュボード(歯車アイコン)で拡張機能の設定を開き、[Save(保存)]をクリックする必要があります。その後、拡張機能ギャラリーは、選択したランタイムに基づいてPUBLIC_WT_URLシークレットを更新します。

PUBLIC_WT_URLの隠しシークレットを更新しないと、次のエラーが表示されます。

Misconfiguration or Service Outage Error

固定モジュールの更新

次の組み込みモジュール(つまり、明示的に要求しなかったモジュール)を使用している場合は、一部のバージョンがNode 12で動作するように更新されていることに注意してください。次の表は、変更内容をまとめたものです。これらの新しいバージョンでは、以前のバージョンとの下位互換性を維持する必要があります。

モジュール名 旧バージョン 新バージョン
couchbase ~2.5.1 2.6.10
bcrypt 1.0.3 3.0.8

モジュールを手動で固定している場合は、コードをNode 12で実行できるように手動で更新する必要がある場合があります。

たとえば、次のように変更する必要があります。

var bcrypt = require(‘bcrypt@1.0.3’);

から

var bcrypt = require(‘bcrypt’);

または、モジュールを特定のバージョンに固定する必要がある場合:

var bcrypt = require(‘bcrypt@3.0.8’);