この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
概要
Auth0を使用する際、複数のテナントの作成やテナント設定のバックアップなど、テナント設定のコピーペースト作業にはDeploy CLI Toolが公式的に推奨され、よく使われます。
Deploy CLI Toolは非常に便利なので、このツールでAuth0のテナント設定コピー(export
)とペースト(import
)の手順を紹介したいと思います。
環境準備
このブログに使った端末は M1 / MacOS Monterey 12.1
。
Deploy CLI Toolのインストールには、事前nodejsとnpmのインストールが必要です。
コマンドツールで(こちらはTerminal
)で下記のコマンドでDeploy CLI Toolがインストールされます。
npm i -g auth0-deploy-cli
テナント設定 export
CLIツール用アプリの作成
export
元のテナントのダッシュボードに入って、新しいcli
ツール用のApplication
を作ります:
- Application名は
auth0-deploy-cli-extension
- Application Typeは
Machine to Machine
Create
を押してから、Authorize Machine to Machine ApplicationページにAuth0 Management API
のAll
で、全ての権限をAuthorize
でこのアプリに付与します。
export用config.json設定ファイルの作成
既にAuth0をログインして、export
元を選択した場合は、Configure the Deploy CLI Tool このリンクにconfig.json
のテンプレートができてます。 そのテンプレートで好きなパスにconfig.json
ファイルを作成してもらって、さっき作ったauth0-deploy-cli-extension
アプリのClient Secret
をコピーし、YOUR_CLIENT_SECRET
に書き換えます。
CLIツールでexportの実行
コマンドツール(Terminal)で用意したconfig.json
のパスに入ります。
そのパスに下記のコマンド実行します(exportされるYAMLファイルが同じパス保存する)
a0deploy export --config_file config.json --format yaml --output_folder ./
logはこういう感じ:
2022-02-26T10:28:12.269Z - info: Loading Auth0 Tenant Data
2022-02-26T10:28:12.270Z - info: Retrieving rules data from Auth0
2022-02-26T10:28:12.597Z - info: Retrieving rulesConfigs data from Auth0
2022-02-26T10:28:13.268Z - info: Retrieving hooks data from Auth0
guardianFactorProviders
2022-02-26T10:28:36.734Z - info: Exporting guardianFactorTemplates
// ...省略
2022-02-26T10:28:36.735Z - info: Exporting organizations
2022-02-26T10:28:36.735Z - info: Exporting triggers
2022-02-26T10:28:36.740Z - info: Writing tenant.yaml
2022-02-26T10:28:36.742Z - info: Export Successful
これでtenant.yaml
が出来ます。
テナント設定 import
CLIツール用アプリの作成
import
先のテナントのダッシュボードに入って、新しいcli
ツール用のApplication
を作ります(手順は同じ):
- Application名は
auth0-deploy-cli-extension
- Application Typeは
Machine to Machine
Create
を押してから、Authorize Machine to Machine ApplicationページにAuth0 Management API
のAll
で、全ての権限をAuthorize
でこのアプリに付与します。
import用config-import.jsonの作成
import用config
ファイルはexport用のと違います。
{
"AUTH0_DOMAIN": "<YOUR_TENANT>.auth0.com",
"AUTH0_CLIENT_ID": "<client_id>",
"AUTH0_CLIENT_SECRET": "<client_secret>",
"AUTH0_KEYWORD_REPLACE_MAPPINGS": {
"AUTH0_TENANT_NAME": "<NAME>",
"ENV": "DEV"
},
"AUTH0_ALLOW_DELETE": false,
"AUTH0_EXCLUDED_RULES": [
"rule-1-name",
"rule-2-name"
],
"INCLUDED_PROPS": {
"clients": [ "client_secret" ]
},
"EXCLUDED_PROPS": {
"connections": [ "options.client_secret" ]
}
}
このテンプレートにimport先のauth0-deploy-cli-extension
アプリ情報を入力します。必要な項目は:
AUTH0_DOMAIN
AUTH0_CLIENT_ID
AUTH0_CLIENT_SECRET
AUTH0_TENANT_NAME
ファイル名をconfig-import.json
にし、さっき生成されたtenant.yaml
と同じパスに保存します。
CLIツールでimportの実行
コマンドツール(Terminal)で用意したconfig-import.json
とtenant.yaml
のパスに入ります。
そのパスに下記のコマンド実行します。
a0deploy import --config_file config-import.json --input_file tenant.yaml
logはこういう感じ:
2022-02-26T12:52:45.764Z - info: Getting access token for 5W6tEpYGirhk9ECCbPH26cyWeWqkBEYL/tenant-b-to-import.jp.auth0.com
2022-02-26T12:52:47.721Z - info: Created [clients]: {"name":"app-to-export","client_id":"0Q4g0cotgYvqMmHu3M4a2a1A8QkNSs3N"}
2022-02-26T12:52:47.856Z - info: Updated [clients]: {"name":"Default App","client_id":"nBfLd8XHChMWke0GYTiRV9cNLePGfPjN"}
2022-02-26T12:52:48.026Z - info: Updated [guardianFactors]: {"name":"email"}
2022-02-26T12:52:48.028Z - info: Updated [guardianFactors]: {"name":"push-notification"}
2022-02-26T12:52:48.029Z - info: Updated [guardianFactors]: {"name":"webauthn-roaming"}
2022-02-26T12:52:48.036Z - info: Updated [guardianFactors]: {"name":"sms"}
2022-02-26T12:52:48.037Z - info: Updated [guardianFactors]: {"name":"webauthn-platform"}
//...省略
2022-02-26T12:53:01.663Z - info: Updated [migrations]: {"issue_opaque_access_tokens":true}
2022-02-26T12:53:01.664Z - info: Import Successful
info: Import Successful
が表示されたら設定移行が無事に終わります。
注意点
auth0-deploy-cli
ツールはよくバージョンアップされるので、最新版を使ってください。-
最初
export
は基本的に問題ないですが、import
の場合は一部項目がエラーが出るかもしれません。(例えばlogo_url
が設定されない場合、フォーマットエラーが出る)
その時は、エラーの項目をtenant.yaml
に消せばエラーがなくなり、手動で消した項目はimport
完了後またダッシュボードで設定できます。 -
一部の設定項目はこの方法で(
Auth0 Management API
+auth0-deploy-cli
)移行できません。具体の項目はAuth0 Deploy CLI Githubに確認してください。
以上です。