Skip to main content
マルチテナンシーは、サーバー上で稼働する単一のソフトウェアインスタンスを複数のユーザーグループで共有するアーキテクチャ方式です。マルチテナンシーでは、共通の特性を持つユーザーをグループごとに分け、それぞれに個別の権限やアプリケーションへのアクセスレベルを付与できます。これにより、異なる顧客、事業部門、その他の定義済みユーザーグループごとに、最適化された体験を作成し、維持できます。 Auth0 でマルチテナンシーを実装する最適な方法は、Auth0 Organizations を使用することです。必要に応じて、個別のビジネスユースケースに対応するために、従来の別のソリューションを使用することもできます。business-to-business (B2B) の製品やサービスを提供している場合は、ビジネスユーザー向けにマルチテナンシーを設定することが、ユースケースによっては有効です。 以下のセクションでは、Auth0 でマルチテナンシーを実装するために利用できるオプションについて説明します。
この記事では、「tenant」を、アプリケーションにアクセスできるユーザーグループを指すソフトウェアアーキテクチャ用語として使用しています。Auth0 のインスタンスを指す場合は、「Auth0 tenant」という用語を使用します。

Auth0 Organizations

ほとんどのマルチテナントのユースケースでは、Auth0 Organizations は、お客様とユーザーにとって最適なソリューションです。Auth0 Organizations は、エンドユーザーがアクセスできる 1 つ以上のアプリケーションを持つ B2B 実装をサポートします。 B2B 実装に共通する特徴には、次のようなものがあります。
  • 他社の従業員による利用を目的として、その企業にライセンス提供される製品。
  • 認証体験において、それぞれ独自のフェデレーションと簡易的なブランディングを必要とする複数の組織。
  • 異なるユーザーグループごとに異なるアプリケーションアクセスレベル。
Auth0 Organizations を使用すると、個別のユーザーグループを作成し、ロールベースのアクセス制御カスタマイズされたログインページとメールテンプレート などを使って、それぞれに合わせた体験を提供できます。 Auth0 Organizations を使用してマルチテナンシーを実装する方法の詳細については、Multiple Organization Architecture を参照してください。

レガシーソリューション

Auth0 Organizations がお客様のユースケースの要件を満たさない場合は、以下のレガシーソリューションを検討できます。お客様固有の要件に最適なアプローチを選ぶためのガイダンスについては、Professional Services チームまでお問い合わせください。 レガシーソリューションには、次のものがあります。
  • 各テナントを表すために Auth0 接続を使用する。
  • 各テナントを表すために Auth0 アプリケーションを使用する。
  • 各テナントを表すために Auth0 テナントを使用する。
  • ユーザーのプロフィールにテナントの詳細を保存する。

Auth0 接続を使用する

エンティティの上限が適用される場合があります。詳しくは、Entity Limit Policyをご覧ください。Enterprise サブスクリプションをご利用の場合、エンティティ上限による制約は受けませんが、すでに数千の有効なクライアントが設定されている接続によって制約を受ける可能性があります。
各テナントを個別の Auth0 接続として表すことができます。 この方法では、次のようなシナリオに対応できます。
  • テナントごとに、パスワードポリシーが異なるなど、接続レベルで異なる要件がある。
  • 異なる接続に属するユーザープールがある。たとえば、あるテナントではユーザー名/パスワード認証情報の入力が必要でも、別のテナントではエンタープライズ 経由でのログインが必要な場合があります。
ユーザーに特定の接続経由でログインするよう求めるには、Auth0 Authentication API Login エンドポイント を呼び出し、connection パラメーターを含めます。
アプリケーションで Lock を使用している場合、1 つのアプリケーションでサポートされるデータベース接続は最大 50 個であることに注意してください。ソーシャル接続とエンタープライズ接続はこの上限の対象ではありませんが、引き続き Entity Limit Policy の対象です。

Auth0アプリケーションを使用する

エンティティ数の上限が適用される場合があります。詳しくは、Entity Limit Policyをご覧ください。Enterpriseサブスクリプションをご利用の場合、エンティティ数の上限による制約は受けませんが、すでに数千の有効なクライアントが有効化されている接続による制約を受ける可能性があります。
各テナントを個別のAuth0アプリケーションで表すことができます。 この方法では、利用可能な接続など、テナントごとに異なる要件に応じて各Auth0アプリケーションを個別に設定できます。 アプリケーション内で、ユーザーがどのテナントに属しているかを把握しておく必要があります。ユーザーがアプリケーションにログインしたら、その情報を読み取り、認証を完了するために適切なAuth0アプリケーションへ誘導する必要があります。 Auth0のを使用して1つの接続を複数のアプリケーションで有効にするには、コネクションの有効なクライアントを更新するエンドポイントを呼び出し、該当する接続IDを渡します。

Auth0テナントを使用する

各テナントは、それぞれ個別のAuth0テナントとして表現できます。 この方法では、テナントごとにアクセスを制限したうえで、ユーザーにへのアクセスを共有できますが、テナントごとにAuth0を個別に設定する必要があります。 つまり、各Auth0テナントの機能 (Branding、Actions、など) を個別に管理する必要があるだけでなく、アプリケーション側でも複数のAuth0設定に対応しなければなりません。

ユーザーのプロフィールにテナントの詳細を保存する

ユーザーのプロフィールにテナントの詳細を保存しておけば、ユーザーがログインした後に、アプリケーションでその情報を読み取れます。 この方法を使えば、どのテナントに属しているユーザーでも、統一された設定 (利用可能な接続など) でログインできます。 これを実装するには、任意の識別子 (たとえば "tenant": "customer-group-12345") を使って、ユーザーの Auth0 プロフィールの app_metadata オブジェクト にテナントの詳細を保存します。ユーザーがログインした後、アプリケーションで tenant 変数を取得し、返された値に応じた適切なバージョンを表示します。