組織 (Organization) の作成
マルチテナントアプリ(例:マルチテナント SaaS アプリ)を構築していると想像してください。多数の顧客にサービスを提供し、それぞれの顧客が専用のテナントを所有しています。新しい顧客が来たときには、新しいアカウントと自分のビジネス用の新しいテナントを作成します。
これは、Logto Cloud アカウントを登録し、自分専用の Logto テナントを持つのと同じです。Logto の「組織 (Organization)」機能を使えば、同じアーキテクチャをアプリにも実装できます。
組織 (Organization) を作成する
アプリのために組織 (Organization) を作成する方法は 2 つあります。
Logto Console から作成
Logto Console の UI から手動で組織 (Organization) を作成します。Console > 組織 (Organizations) に移動し、組織 (Organization) の作成、メンバーやロールの割り当て、組織 (Organization) のサインイン体験 UI のカスタマイズができます。
同じロールや権限設定を共有する類似の組織 (Organization) をまとめて作成したい場合は、「組織テンプレート」を作成してください。
Logto Management API から作成
Console UI でボタンをクリックするのも便利ですが、実際にはエンドユーザー自身がセルフサービスで組織 (Organization) を作成し、管理できるようにしたいものです。アプリ内でこれらの機能を実装するには、Logto Management API を活用します。
すでに 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}'
レスポンス例 (201)
{
"tenantId": "string",
"id": "string",
"name": "string",
"description": "string",
"customData": {},
"isMfaRequired": false,
"branding": {
"logoUrl": "string",
"darkLogoUrl": "string",
"favicon": "string",
"darkFavicon": "string"
},
"createdAt": 1234567890
}
次に、アプリ独自の API を実装できます。ユーザーがアプリ内で「組織 (Organization) を作成」アクションを実行した際に、そのリクエストの権限を検証し、Logto Management API を呼び出して処理を行うことができます。
ユーザーリクエスト内の組織トークン (Organization token) の検証
アプリ内でユーザーが組織 (Organization) のコンテキストで操作を行う場合、通常のアクセス トークン (Access token) ではなく、組織トークン (Organization token) を使用する必要があります。組織トークン (Organization token) は、組織 (Organization) の権限を含む特別な JWT です。そして、他の JWT アクセス トークン (Access tokens) と同様に、トークンのクレーム (Claims) をデコードし、「スコープ (Scope)」クレームで権限チェックを行うことができます。
認可 (Authorization) シナリオや組織トークン (Organization token) の検証方法については、認可 (Authorization) をご覧ください。