はじめに
前回の記事でAuth0のテナント設定をExportしてみたので今回はImportをやってみました。
設定ファイルの準備
前回と同様にauth0-deploy-cli
の設定ファイルを用意します。
{
"AUTH0_DOMAIN": "{テナントドメイン}",
"AUTH0_CLIENT_ID": "{クライアントID}",
"AUTH0_CLIENT_SECRET": "{クライアントシークレット}",
"AUTH0_ALLOW_DELETE": false
}
今回は新たにAUTH0_ALLOW_DELETE
という項目を足しています。
この項目については後で紹介します。
Importする設定ファイルの準備
Importするテナント設定ファイルはjson形式とYAML形式のどちらも扱えますが今回はYAML形式のテナント設定ファイルで試してみます。
一度既存のテナント設定をExportしてからテナント設定を編集するとやりやすいです。
今回はテナント設定ファイル(tenant.yaml
)にtestApp
とい名前のclient(アプリケーション)を追加してImportします。
...
clients:
- name: testApp
app_type: regular_web
cross_origin_auth: false
custom_login_page_on: true
grant_types:
- authorization_code
- refresh_token
is_first_party: true
is_token_endpoint_ip_header_trusted: false
jwt_configuration:
alg: RS256
lifetime_in_seconds: 36000
secret_encoded: false
oidc_conformant: true
sso_disabled: false
...
databases:
- name: Username-Password-Authentication
strategy: auth0
enabled_clients:
- testApp
- auth0-deploy-cli-extension
is_domain_connection: false
options:
mfa:
active: true
return_enroll_settings: true
passwordPolicy: good
strategy_version: 2
brute_force_protection: true
realms:
- Username-Password-Authentication
...
テナント設定のImport
以下のコマンドを入力するとtenant.yaml
の内容がAuth0のテナント設定に反映されます。
a0deploy deploy -c config.json -i path/to/tenant.yaml
-
-c
のあとに、config.json
の保存場所を指定します。 -
-o
のあとに、Importするtenant.yaml
の保存場所を指定します。
テナント設定の削除
auth0-deploy-cli
に読み込ませるconfig.json
の設定内容によってはtenant.yaml
ファイルから設定の一部(client等)を削除した状態でImportを行うと、Auth0のテナント設定にも削除した状態を反映できます。
本記事の最初に記載したconfig.json
のAUTH0_ALLOW_DELETE
の値によって削除状態を反映する、しないを制御できます。
今用意しているconfig.json
のようにAUTH0_ALLOW_DELETE
がfalse
だと設定の削除は反映されません。
反対にAUTH0_ALLOW_DELETE
がtrue
だと設定の削除が反映されます。
試しにAUTH0_ALLOW_DELETE
をfalse
のままに、先ほどImportで登録したtestApp
の設定内容をtenant.yaml
から削除して、再度Importしてみます。
すると、以下のような警告が表示され、testApp
はAuth0のテナントに残ったままになります。
warn: Detected the following clients should be deleted. Doing so may be destructive.
You can enable deletes by setting 'AUTH0_ALLOW_DELETE' to true in the config
{"name":"testApp","client_id":"..."}
config.json
のAUTH0_ALLOW_DELETE
をtrue
に変更してから再度Importを行うとtestApp
はAuth0のテナントから削除されてしまいます。
意図しない削除が行われないようにconfig.json
の設定を確認するようにしましょう。
テナント設定で変数を使う
Auth0のテナントを複数運用していると、各テナントでアプリケーションのcallback_url等に設定しているドメインは違うけど、他の設定は大体同じ。となっていることがあると思います。
テナント設定ファイルには変数を設定することができるので、こういった場合も1つのテナント設定ファイルで複数のテナント設定を管理することが可能になります。
テナント設定ファイルに以下の構文を差し込むことで変数を設定することができます。
-
@@key@@
で固定値を設定 -
##key##
で設定値の文字列を一部置換
試しにcallback_urlのドメインとid_tokenの有効期限を変数化してみます。
clients:
- name: testApp
callbacks:
- 'https://##ENVIRONMENT_DOMAIN##/callback'
...
jwt_configuration:
alg: RS256
lifetime_in_seconds: @@JWT_TIMEOUT@@
secret_encoded: false
...
変数の値はconfig.json
から注入することができます。
AUTH0_KEYWORD_REPLACE_MAPPINGS
というパラメーターを追加し変数の値を指定します。
{
"AUTH0_DOMAIN": "{テナントドメイン}",
"AUTH0_CLIENT_ID": "{クライアントID}",
"AUTH0_CLIENT_SECRET": "{クライアントシークレット}",
"AUTH0_ALLOW_DELETE": false,
"AUTH0_KEYWORD_REPLACE_MAPPINGS": {
"ENVIRONMENT_DOMAIN": "example.com",
"JWT_TIMEOUT": 120
}
}
この状態でテナント設定のImportを行うと、以下のように設定が反映されます。
config.json
をテナントごとに用意しておけば同じ1つのテナント設定ファイルを使いまわして複数テナントの設定内容を管理することが可能です。
おわりに
auth0-deploy-cli
のImport機能は変数が使えるので、複数テナントの管理でも便利に使うことができます。
毎回GUIで各テナントに設定を反映するよりも厳密な設定内容の管理が行えるのでぜひ利用してみてください。