組織テンプレートの設定
Logto コンソールを通じて組織テンプレート機能を設定するプロセスを説明します。
まず、コンソール > 組織テンプレート に移動します。組織テンプレートには、組織ロール と 組織権限 の 2 つの部分が含まれていることがわかります。組織テンプレートは、複数の組織に対する共有アクセス制御ポリシー(権限とロール)を定義します。
Logto コンソールを通じて設定する
組織権限を作成する
組織権限は、組織テンプレートの重要な部分です。これらの権限は、製品内の組織専用に設計されています。管理方法は次のとおりです:
- 組織権限タブを見つける:「組織権限」タブに移動して、既存の権限を確認します。
- 追加、削除、編集:新しい組織権限を簡単に追加したり、不要なものを削除したり、既存の権限を必要に応じて編集できます。
組織ロールを作成する
Logto は、ユーザー / システムレベルのロールベースのアクセス制御 (RBAC) と同様に、2 種類の組織ロールをサポートしています:
- ユーザー:ユーザーに割り当てられるロール。
- マシン間通信:マシン間通信アプリケーション に割り当てられるロール。
Logto は、システムの構造に合わせてさまざまな方法で組織ロールを定義できます:
オプション 1: 組織権限のみの組織ロール
- 使用する場合:ユーザー / システムエンドポイントと組織エンドポイントが分かれている場合。
- 説明:製品の技術的アーキテクチャと API 設計が ユーザー / システムレベルのリソース と 組織リソース を明確に分離している場合、これは最も簡単なアプローチです。組織ロールには、組織のために定義した権限のみが含まれます。
オプション 2: API 権限のみの組織ロール
- 使用する場合:ユーザー / システムレベルと組織レベルのアクセス制御が同じエンドポイントで処理される場合。
- 説明:すべての権限を統一された API リソース で管理したい場合に選択します。
オプション 3: 組織ロールにおける API と組織権限の混合
- 使用する場合:製品のためにユーザー / システムレベルと組織レベルのために別々のエンドポイントが定義されているが、一部のユーザーロールが ユーザーレベル と 組織レベルの権限 の両方を必要とする場合。
- 説明:これは最も柔軟性がありますが、管理が最も複雑になる可能性があります。
Logto Management API を通じて設定する
コンソールでできることはすべて Management API を通じて行うことができます。これには、組織テンプレートを管理して組織権限とロールを作成、削除、編集することが含まれます。
機能の完全なリストについては、API リファレンスを参照してください:
Logto Management API - 組織ロール
Logto Management API - 組織権限
Logto Management API を使用すると、組織の管理者がセルフサービスで組織を作成できるなど、カスタム組織体験を作成できます。より多くの組織レベルの機能と管理を有効にするには、このセクション を確認してください。
メンバー権限の変更を処理する
API RBAC と同様に、メンバーの権限はセッション中に変更されることがあります。たとえば、新しいロールが割り当てられたり、既存のロール権限が変更されたりすることがあります。
メンバーの権限が変更された場合、2 つのケースがあります。
システムに新しい権限が導入されない場合
ユーザーの組織権限が変更された後でも、現在の組織アクセストークン(別名:組織トークン)は有効期限が切れるまで有効です。ただし、新しい権限は後続の組織トークンに反映され、取り消された権限は省略されます。
組織トークンは、一般的なアクセス トークンとは異なり、変更できない固定の有効期限を持っています。
Logto Management API エンドポイントを定期的に呼び出すか、長期間の接続(例:WebSocket を使用)を確立して、ユーザーの組織権限を動的に取得します。変更を検出した場合、既存の組織トークンをクリアし、新しく発行されたトークンには自動的に組織権限スコープの変更が反映されます。
curl \
-X GET https://[tenant_id].logto.app/api/organizations/{id}/users/{userId}/scopes \
-H "Authorization: Bearer $ORGANIZATION_TOKEN"
権限の変更が検出された場合、まずストレージから組織トークンをクリアし、次に SDK メソッド getOrganizationToken(organizationId)
を呼び出して新しいトークンを取得します。新しく発行された組織トークンには、権限の変更が反映されるはずです。
新しい権限がシステムに導入され、メンバーに割り当てられる場合
これは、新しい権限が組織テンプレートに導入された場合に発生します。この場合、まず Logto クライアントを初期化する際に新しく導入された権限スコープを含める必要があります。例:
new LogtoClient({
appId: 'your-app-id',
redirectUrl: 'your-redirect-url',
scopes: [
'urn:logto:scope:organizations',
// ... 他の既存の組織権限スコープ,
'new-organization-permission-scope',
],
});
次に、各クライアントアプリケーションは、新しい権限の変更を受け取るためにユーザーの再同意または再ログインが必要です。すると、新しい権限スコープが新しい組織トークンに反映されます。
再同意のコード例:
signIn({ redirectUrl: 'your-redirect-url', prompt: 'consent' });