Auth0の基本構成を図で理解する #Auth0JP
認証サービス「Auth0」の基本構成を理解しよう
認証サービス「Auth0」。認証に関する様々な機能を有し、様々なユースケースで利用できます。提供されている機能をフル活用したアーキテクチャが考えられるよう、基本的な構成を理解することは非常に大切なことです。
そこで本記事では、Auth0の基本構成について解説します。
図で理解するAuth0の基本構成
今回、解説用に下図を用意しました。こちらの図をベースに解説していきます。
テナント (Tenant)
Auth0を使い始める際、まずはじめに作るのがアカウントとテナントです。テナントは、アカウント作成時に同時に作成できます。
テナントにはこれからAuth0を使う上でのもっともベースとなる要素です。このテナント内に要素を追加したり、設定を行ったりすることで使いたいようにカスタマイズしていきます。
テナントは、Auth0のインフラストラクチャ内に論理的に分離された単位になります。
アカウント (Account)
Auth0に作成したテナントを管理するためのアカウントです。通常、使い始める際にテナントと同時に作成します。
アカウントは以下のいずれかの方法で作成できます。
- Email/Passwordで登録
- GitHubアカウント
- Googleアカウント
- Microsoftアカウント
テナントとアカウントはN:Nの関係になっており、例えば1つのアカウントで複数のテナントを管理することができます。また、テナント内に新たにアカウントを招待することも可能です。
ドメイン (Domain)
ドメインはテナントに与えられるベースURLです。カスタムドメインを使わない場合、リージョン内にサブドメインが与えられます。
リージョン | ドメイン | 例 |
---|---|---|
US | auth0.com |
TENANT_NAME.auth0.com |
Europe | eu.auth0.com |
TENANT_NAME.eu.auth0.com |
Australia | au.auth0.com |
TENANT_NAME.au.auth0.com |
アプリケーション (Application)
アプリケーションはテナントに対してログインを実行する元となるクライアントのことです。ドキュメントによってはクライアント(Client)と記載されることもあります。
アプリケーションは以下のいずれかの種類を作成できます。
- Native/Mobile Application
- Single Page Web Application
- Regular Web Application
- Machine to Machine Application
また、アプリケーションはテナント内に複数作成することができます。例えば作ろうとしているサービスをiOSアプリ、Androidアプリ、Webアプリで展開しようと思っている場合、3つのアプリケーションを用意します。
コネクション (Connection)
コネクションは簡単に言うと「ログインする方法」です。例えば「メールアドレス/パスワードでログインする」「Twitterでログインする」「Googleでログインする」などといった感じです。
テナント内に以下の種類のコネクションを複数作成することができます。
種類 | 説明 | 例 |
---|---|---|
Database Connection | Auth0または自身のデータベースに認証情報を保存する | メールアドレス/パスワード |
Social Login | ソーシャルアカウントを使ってログインする | Google, Twitter, LINEなど |
Enterprise Directory | エンタープライズ向けの製品でログインする | AD, G Suite, SAMLなど |
Passwordless System | ワンタイムコードを使ってログインする | 電話番号またはメールアドレス |
コネクションは、アプリケーション単位で有効/無効を設定します。例えばiOSアプリとAndroidアプリはTwitterログインとLINEログインを有効にし、管理用のWebアプリではSAMLのみを有効にするといったような構成が可能です。
ユーザー (User)
ユーザーは、アプリケーションにログイン可能なユーザーのことを指します。
ユーザーはコネクションの配下に作成されるため、利用者が同じ場合でもコネクションごとに異なるユーザーとして扱われます(なお、ユーザー同士をリンクさせる機能を使って同じユーザーとして扱うこともできます)。例えばAさんがTwitterでログインしたあと、別途LINEログインした場合、TwitterでログインしたユーザーとLINEでログインしたユーザーは別々のユーザーとなります。
構成を正しく理解し活用しよう
Auth0の構成を正しく理解すると、認証にまつわるアーキテクチャをより適切に考えられるようになります。アーキテクチャを考える際にはぜひ参考にしてください。