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
でカスタムソーシャル接続を見つけることができます。
新しい[Extensibility(拡張性)]パネルを使って開発テナントでNode 12を有効にします。このパネルは、Dashboardの[Advanced Tenant Settings(テナントの詳細設定)]ページにあります。[Runtime(ランタイム)]ドロップダウンで[Node 12]を選択します。
[Save(保存)]をクリックします。
以下にリストされている項目を使用する場合は、それぞれの移行手順を完了してください。
構成をテストします。
何も壊れていないことを確認したら、上記の手順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
Dashboard > [Applications(アプリケーション)] > [Applications(アプリケーション)] > [Settings(設定)]に移動し、 を[Allowed Callback URLs(許可されたコールバックURL)]および[Allowed Logout URLs(許可されたログアウトURL)]フィールドに追加します。
Auth0コンテナー内のカスタムWebタスクの実行URLも変更されます。これらのWebタスクを呼び出す外部アプリケーションを更新する必要があります。
認可拡張機能ルールの再発行
認可拡張機能を使用すると、auth0-authorization-extension
ルールが生成されます。認可拡張機能内からこのルールを再発行して、URLを自動的に更新します。
[Installed Extensions(インストールされた拡張機能)]タブから、認可拡張機能の最新バージョンにアップグレードしたことを確認します。[Upgrade(アップグレード)]ボタンがある場合は、クリックしてアップグレードします。ボタンが表示されない場合は、すでに最新バージョンの拡張機能を使用しています。
認可拡張機能の設定ページを開きます。
URLのルールを更新するには、[Publish Rule(ルールの公開)]ボタンをクリックしてルールを再度公開します。
テストして、すべてがまだ機能していることを確認します。更新後に無効な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
の隠しシークレットを更新しないと、次のエラーが表示されます。

固定モジュールの更新
次の組み込みモジュール(つまり、明示的に要求しなかったモジュール)を使用している場合は、一部のバージョンが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’);