組織の作成
マルチテナントアプリ(例:マルチテナント SaaS アプリ)を構築していると想像してください。このアプリは多くの顧客にサービスを提供し、それぞれの顧客が専用のテナントを所有します。
組織 (Organization) は通常、次のタイミングで作成されます:
- 新しい顧客がサインアップし、自社用のアカウントとテナントを作成する場合。
- 既存ユーザーがアプリ内から新しい組織 (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) を参照してください。