Node.jsでAuth0のテナント設定のインポート・エクスポートを実行する

Auth0ではテナントの設定をインポート・エクスポートすることができます。本記事ではJavaScriptでインポート・エクスポートするスクリプトを作成しNode.jsで実行する例をご紹介します。
2021.01.27

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、CX事業本部のうらわです。

Auth0ではテナント設定をCLIでインポート・エクスポートすることができます。

本記事ではCLIではなく、JavaScriptで書いたインポート・エクスポートのスクリプトをNode.jsで実行する例をご紹介します。

前提

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.15.6
BuildVersion:   19G2021

$ node -v
v14.15.4

$ npm -v
6.14.10

$ yarn -v
1.22.10

準備

作業用ディレクトリを作成し、auth0-deploy-cliをインストールします。Auth0のドメイン名、Client ID、Client Secretは環境変数で読み込むのでdotenv-cliもインストールします。

mkdir auth0-import-export
cd auth0-import-export
npm init -y
yarn add -D auth0-deploy-cli dotenv-cli

auth0-deploy-cliGitHubリポジトリのREADME.mdを参考にインポート・エクスポートを実行するスクリプトを作成します。実行時にコマンドライン引数を受け取ってインポート・エクスポートを分岐させます。

import-export.js

const a0deploy = require("auth0-deploy-cli");

const config = {
  AUTH0_DOMAIN: process.env.AUTH0_DOMAIN,
  AUTH0_CLIENT_SECRET: process.env.AUTH0_CLIENT_SECRET,
  AUTH0_CLIENT_ID: process.env.AUTH0_CLIENT_ID,
  AUTH0_EXPORT_IDENTIFIERS: false,
  AUTH0_ALLOW_DELETE: false,
  AUTH0_API_MAX_RETRIES: 10,
};

const action = process.argv[2];

if (action === "import") {
  a0deploy
    .deploy({
      input_file: "./tenants",
      config: config,
    })
    .then(() => console.log("yey deploy was successful"))
    .catch((err) => console.log(`Oh no, something went wrong. Error: ${err}`));
} else if (action === "export") {
  a0deploy
    .dump({
      output_folder: "./tenants",
      config: config,
    })
    .then(() => console.log("yey export was successful"))
    .catch((err) => console.log(`Oh no, something went wrong. Error: ${err}`));
} else {
  console.log("Invalid argument.");
}

Auth0の設定

Auth0の対象テナントにアクセスし、左サイドバーメニューの Extensions を選択します。検索フォームで「deploy」と検索して表示される「Auth0 Deploy CLI」をインストールします。

インストールすると、Applications に「auth0-deploy-cli-extensions」が追加されます。こちらのアプリの Client ID と Client Secret を使用します。

.envファイルを作成し、Auth0で控えた情報を記載します。こちらのファイルは.gitignoreに記載し、GitHub等のgitリポジトリにプッシュしないようにします。

.env

AUTH0_DOMAIN=hogehoge.jp.auth0.com
AUTH0_CLIENT_ID=xxxxxxxxxxxxxxxxxxxxxxxxxxx
AUTH0_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx

実行

package.jsonに以下を追記します。

package.json

  "scripts": {
    "export": "dotenv -e .env node import-export.js export",
    "import": "dotenv -e .env node import-export.js import"
  },

yarn exportでテナント設定がtenantsディレクトリ内にエクスポートされます。

yarn importでインポートを実行します。

まとめ

Auth0のテナント設定のインポート・エクスポートはCLIでも実行できますが、自分でスクリプトを書いて実行することも可能です。インポート・エクスポート時に何らかの追加処理を加えたい等の要件がある場合は有効かと思います。

参考