4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Auth0】テナント設定をImportする

Posted at

はじめに

前回の記事でAuth0のテナント設定をExportしてみたので今回はImportをやってみました。

前回:【Auth0】テナント設定をExportする

設定ファイルの準備

前回と同様にauth0-deploy-cliの設定ファイルを用意します。

config.json
{
  "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します。

tenant.yamlの一部抜粋
...
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.jsonAUTH0_ALLOW_DELETEの値によって削除状態を反映する、しないを制御できます。

今用意しているconfig.jsonのようにAUTH0_ALLOW_DELETEfalseだと設定の削除は反映されません。
反対にAUTH0_ALLOW_DELETEtrueだと設定の削除が反映されます。

試しにAUTH0_ALLOW_DELETEfalseのままに、先ほど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.jsonAUTH0_ALLOW_DELETEtrueに変更してから再度Importを行うとtestAppはAuth0のテナントから削除されてしまいます。

意図しない削除が行われないようにconfig.jsonの設定を確認するようにしましょう。

テナント設定で変数を使う

Auth0のテナントを複数運用していると、各テナントでアプリケーションのcallback_url等に設定しているドメインは違うけど、他の設定は大体同じ。となっていることがあると思います。
テナント設定ファイルには変数を設定することができるので、こういった場合も1つのテナント設定ファイルで複数のテナント設定を管理することが可能になります。

テナント設定ファイルに以下の構文を差し込むことで変数を設定することができます。

  • @@key@@で固定値を設定
  • ##key##で設定値の文字列を一部置換

試しにcallback_urlのドメインとid_tokenの有効期限を変数化してみます。

tenant.yamlの一部抜粋
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というパラメーターを追加し変数の値を指定します。

config.json
{
  "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を行うと、以下のように設定が反映されます。

スクリーンショット 2020-09-04 16.55.07.png

スクリーンショット 2020-09-04 16.55.22.png

config.jsonをテナントごとに用意しておけば同じ1つのテナント設定ファイルを使いまわして複数テナントの設定内容を管理することが可能です。

おわりに

auth0-deploy-cliのImport機能は変数が使えるので、複数テナントの管理でも便利に使うことができます。
毎回GUIで各テナントに設定を反映するよりも厳密な設定内容の管理が行えるのでぜひ利用してみてください。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?