メインコンテンツまでスキップ

組織の作成

マルチテナントアプリ(例:マルチテナント SaaS アプリ)を構築していると想像してください。このアプリは多くの顧客にサービスを提供し、それぞれの顧客が専用のテナントを所有します。

組織 (Organization) は通常、次のタイミングで作成されます:

  1. 新しい顧客がサインアップし、自社用のアカウントとテナントを作成する場合。
  2. 既存ユーザーがアプリ内から新しい組織 (Organization) を作成する場合。
新規アカウントが組織を作成 既存ユーザーが組織を作成

組織 (Organization) 作成の実装​

アプリで組織 (Organization) を作成する方法は 2 つあります。

Logto コンソールから作成​

Logto コンソール UI で手動で組織 (Organization) を作成します。コンソール > 組織 (Organizations) に移動し、組織 (Organization) の作成、メンバーやロールの割り当て、組織 (Organization) のサインイン体験のカスタマイズができます。

組織テンプレート を作成して、同じロールや権限を共有する類似の組織 (Organization) を一括作成できます。

Logto Management API から作成​

コンソールは手動設定に便利ですが、多くのアプリではエンドユーザーがセルフサービスで組織 (Organization) を作成・管理できるようにします。そのためには、Logto Management API を使ってこれらの機能を実装します。

注記:

Logto Management API を初めて利用する場合や、組織体験のための Logto Management API の基本的な使い方をまだ読んでいない場合は、まず以下をお読みください:

Logto Management API でアプリサービスをセットアップする

Management APIManagement API との連携

バックエンドがマシン間通信 (M2M) メカニズムを通じて Logto Management API に接続されており、M2M アクセストークン (アクセス トークン) を取得済みであると仮定します。

Management API で組織 (Organization) を作成します(API リファレンス):

curl \
-X POST https://[tenant_id].logto.app/api/organizations \
-H "Authorization: Bearer $M2M_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"tenantId":"string","name":"string","description":"string","customData":{},"isMfaRequired":false,"branding":{"logoUrl":"string","darkLogoUrl":"string","favicon":"string","darkFavicon":"string"},"createdAt":1234567890}'

次に、ユーザーを組織 (Organization) のメンバーとして追加します(API リファレンス):

curl \
-X POST https://[tenant_id].logto.app/api/organizations/{id}/users \
-H "Authorization: Bearer $M2M_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"userIds":["string"]}'

必要に応じて、特定の組織ロール (ロール) をユーザーに割り当てることもできます(API リファレンス)。

詳細は API 仕様全体 をご確認ください。

これらの呼び出しを独自の API レイヤーでラップしましょう。ユーザーがアプリで「組織 (Organization) を作成」アクションを実行した際、権限を確認してリクエストを検証し、その後 Logto Management API を呼び出して処理を完了させます。

ユーザーリクエストで組織トークン (組織トークン) を検証する​

アプリ内でユーザーが組織 (Organization) のコンテキストで操作を行う場合、通常のアクセス トークンではなく組織トークン (組織トークン) を使用する必要があります。組織トークン (組織トークン) は、組織の権限 (権限) を含む JWT です。任意の アクセス トークン と同様に、クレーム (クレーム) をデコードし、「スコープ (スコープ)」クレームを検証して権限 (権限) を強制できます。

認可 (Authorization) シナリオや組織トークン (組織トークン) の検証方法については、認可 (Authorization) を参照してください。