LoginSignup
17
6

More than 3 years have passed since last update.

Auth0の運用時のユーザ管理方法について - Delegated Administration -

Last updated at Posted at 2019-12-12

Auth0の運用ユーザ管理について - Delegated Administration -

概要

Auth0でユーザの管理だけヘルプデスクチームに任せたい(他の様々な機能は見せたくない)場合に、どうやれば良いのかすぐには分からなかったのでその方法を共有します。

Auth0の権限について

Auth0の管理ユーザの権限は、現状Adminしか存在しません。
そこで、Adminの権限の一部を委譲したユーザ管理画面アプリケーションを作成する、という方法で権限と使える機能をコントロールします。

Admin権限を委譲したユーザ管理画面アプリケーションを作成する具体的手段

Delegated Administration Dashboard というextensionを使用します。
これを使用すると、ユーザ管理周りの権限を委譲したダッシュボードを作成できます。

作成方法

公式のDelegated Administration Extensionの記事があるので、そこに書かれている手順を踏めば作成できますが、いくつか注意事項があるのでそれを交えて簡単に説明します。

作成手順

Delegated Administration Extentionの資料より抜粋

  1. Register an Application with Auth0
    Auth0にユーザ管理アプリケーションを作成します

  2. Create a database connection
    ユーザ管理アプリケーション認証用のAuth0DBを作成します

  3. Disable all other connections for your Auth0 Application
    デフォルトでは、Auht0テナントで使用できる全ての認証方法が利用可能なので、ユーザ管理アプリケーション用に作成した認証DBの利用のみに制限します

  4. Create a user for the database connection
    ユーザ管理アプリケーション用のユーザを作成します

  5. Assign roles to the user
    ユーザ管理アプリケーション用のユーザに権限を設定します

  6. Install and configure the extension
    Delegated Administration ExtensionをAuth0管理画面からインストールします

  7. Use the extension
    Delegated Administration Extensionからユーザ管理画面アプリケーションにログインします

作成

Register an Application with Auth0

Create Delegated Admin Applicationsの資料に書かれている通りに、ユーザ管理画面アプリケーションを作成します。
コールバックURLはテナントのLocationによって異なるので注意してください。
このページに Next, you will need to install the Delegated Admin Extension. と記載されてますが、一旦無視してください(一応この段階でインストールしても問題はないですが、手順は前後します)。

Create a database connection

Set Up Database Connectionsの資料にかかれている通り、ユーザ管理画面アプリケーション認証用のDBを作成します。
実はこれ作らなくてもGoogle Authなども利用可能ですが、後で認証方法は変更できるのでここではドキュメント通り作成してください。
コネクション名は利用する部署やチームの名前などを付けてください(例えば HelpDesk とか)。

注意!:サインアップは利用不可にしてください
これ利用できちゃうと誰でもアクセス可能になってしまいます。

Disable all other connections for your Auth0 Application

ユーザ管理画面アプリケーションのコネクション設定を、先程作った認証以外は全て無効にしてください。
設定場所ちょっと分かりづらいですが下記画像のところです。
UIは変更になる可能性が高いので、もし変更になってたらすみません。

Connection settings

Create a user for the database connection

ユーザ管理画面アプリケーション用のユーザを作成します。
今の段階では特に特別なことはありません。

Assign roles to the user

ユーザにロールを設定します。
まず、ロールを設定する方法が現状大きく2つあります。

  1. Authorization Extensionを利用する
  2. Authorization Coreを利用する

詳しくはAuthorization Core vs. Authorization Extensionを参照してください。
ざっくり説明すると、 Authorization ExtensionDeprecatedです。
なので今から利用する場合は特別な理由がない限り Authorization Core 一択になります。

ロールの作成

Create Rolesを参考にロールを作成します。
Create Rolesのドキュメントでは事前にAPIとPermissionを作成してくださいと書かれていますが、不要です

ロールの名前は下記のいずれかをそのまま指定します。独自のものを指定しないでください。

  • Delegated Admin - User
  • Delegated Admin - Administrator
  • Delegated Admin - Auditor
  • Delegated Admin - Operator

勘違いしやすいので(私も勘違いしました)重ねて書きますが、そのまま指定してください。
例えば Delegated Admin - User とそのまま書いてください。
設定画面は下記のようになります。

Role Name

作成したロールはユーザに割り当てておいてください。

ルールの作成

ロールをIDTokenに埋め込むルールを作成します。
ClientID が必要になるので、Application情報からメモしておいてください。

ルールのコードサンプルは下記になります。

function (user, context, callback) {
    if (context.clientID === 'CLIENT_ID') {
        const namespace = 'https://example.com/auth0-delegated-admin';
        context.idToken[namespace] = {
            roles: (context.authorization || {}).roles
        };
    }
    callback(null, user, context);
}

上記コードはドキュメントそのままですが、いくつか注意すべきことがあります。

ロール情報

下記のコードを見れば分かりますが、 作成してユーザに割り当てたロールの情報は user ではなくて context に入ってきます。


roles: (context.authorization || {}).roles

また、 roles 項目に必ず情報を入れる必要があります。
ロール情報は context.authorization.roles で返ってくる構造がそのまま必要になります。
ちょっと大げさに書きましたが、構造というのはロール名の配列です。

いくつか注意点を書きましたが、ロールの設定はサンプルのコードで表現される構造の通りにしてください。

namespace

namespaceはURLである必要があります。
namespaceの例では、ドメインが example.com になっています。
ここを変更する場合注意が必要です。
思わず テナント名.auth0.com と指定したくなりますが(私はやってしまいました)、それを指定すると認証できなくなります。
詳細な説明は、Namespacing Claimsを参照してください。
ざっくり説明すると、以下のドメインは利用不可です。

  • auth0.com
  • webtask.io
  • webtask.run

また、 auth0-delegated-admin というパスは必ず必要です。勝手に独自のパスを設定したりしないようにしてください。
そのためnamespaceは必ず https://ドメイン/auth0-delegated-admin というURL構造にしてください。

Install and configure the extension

Install the Delegated Admin Extensionを参考にDelegated Admin Extensionをインストールしてください。
特に難しくはないですし注意点もありません。

Use the extension

ユーザ管理画面アプリケーションに接続します。
Use the Delegated Admin Extensionを参考にしてください。
接続方法は、Extensions画面から Delegated Administration Dashboard アイコンをクリックします。

Delegated Administration Dashboard

そうすると、ドキュメントに書かれてるログイン画面が表示されます。

まとめ

以上が簡単ではありますが、ユーザ管理画面アプリケーションであるDelegated Administartion Dashboardの作成方法です。
これでユーザの作成削除やパスワードの変更などが可能になります。
一点注意点を述べるとすると、 2019/12/12 時点ではロール管理はこのダッシュボードではできません。
Issueは出ているのでそのうち対応されるとは思います。
私はロール管理をこのダッシュボードでやりたいので期待して待っています。

では良いAuth0ライフを。

17
6
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
17
6