権限 (Permission) とリソース管理
組織 (Organization) をリソースとして使用し、組織テンプレートを適用して保護します。例えば、各組織 (Organization) はテナント内に独自のドキュメントを持ちます。適切なロール (Role) を持つユーザーのみが、それらのドキュメントを編集または削除できます。
詳細は 組織の権限 (Organization permissions) を参照してください。
組織ロールベースのアクセス制御 (RBAC) でユーザー権限を管理する
上記の設定により、メールで招待を送信でき、招待されたユーザーは割り当てられたロール (Role) で組織 (Organization) に参加できます。
異なる組織ロール (Role) を持つユーザーは、組織トークン (Organization token) 内で異なるスコープ (Scope)(権限 (Permission))を持ちます。クライアントアプリとバックエンドサービスの両方で、これらのスコープ (Scope) を確認し、表示する機能や許可された操作を判断してください。
組織トークン (Organization token) のスコープ (Scope) 更新を処理する
このセクションでは、組織テンプレートや認可 (Authorization) シナリオの管理に関する高度なトピックを扱います。これらの概念に慣れていない場合は、まず 認可 (Authorization) および 組織テンプレート (Organization template) をお読みください。
組織トークン (Organization token) のスコープ (Scope) 更新の管理には、次の内容が含まれます:
既存のスコープ (Scope) を取り消す
例えば、管理者 (admin) を非管理者メンバーに降格する場合、ユーザーからスコープ (Scope) を削除する必要があります。このような場合は、キャッシュされた組織トークン (Organization token) をクリアし、リフレッシュトークン (Refresh token) で新しいトークンを取得してください。減少したスコープ (Scope) は新しく発行された組織トークン (Organization token) に即座に反映されます。
新しいスコープ (Scope) を付与する
これは 2 つのシナリオに分けられます:
認証システムですでに定義されている新しいスコープ (Scope) を付与する
スコープ (Scope) の取り消しと同様に、新たに付与されたスコープ (Scope) がすでに認証サーバーに登録されている場合、新しい組織トークン (Organization token) を発行すれば、新しいスコープ (Scope) が即座に反映されます。
認証システムに新たに導入されたスコープ (Scope) を付与する
この場合、ユーザーの組織トークン (Organization token) を更新するために再ログインまたは再同意プロセスをトリガーしてください。例えば、Logto SDK の signIn メソッドを呼び出します。
権限 (Permission) をリアルタイムで確認し、組織トークン (Organization token) を更新する
Logto は、組織 (Organization) 内のユーザー権限 (Permission) をリアルタイムで取得するための Management API を提供しています。
GET /api/organizations/{id}/users/{userId}/scopes(API リファレンス)
ユーザーの組織トークン (Organization token) 内のスコープ (Scope) とリアルタイムの権限 (Permission) を比較し、ユーザーが昇格または降格されたかどうかを判断します。
-
降格された場合、キャッシュされた組織トークン (Organization token) をクリアすると、SDK が自動的に更新されたスコープ (Scope) で新しいトークンを発行します。
const { clearAccessToken } = useLogto();
...
// 取得したリアルタイムスコープ (Scope) が組織トークン (Organization token) のスコープ (Scope) より少ない場合
await clearAccessToken();この操作には再ログインや再同意プロセスは不要です。新しい組織トークン (Organization token) は Logto SDK により自動的に発行されます。
-
認証システムに新しいスコープ (Scope) が導入された場合、再ログインまたは再同意プロセスをトリガーしてユーザーの組織トークン (Organization token) を更新してください。例えば、React SDK では:
const { clearAllTokens, signIn } = useLogto();
...
// 取得したリアルタイムスコープ (Scope) に新たに割り当てられたスコープ (Scope) がある場合
await clearAllTokens();
signIn({
redirectUri: '<your-sign-in-redirect-uri>',
prompt: 'consent',
});上記のコードは同意画面 (Consent screen) への遷移をトリガーし、ユーザーの組織トークン (Organization token) に更新されたスコープ (Scope) を付与してアプリに自動リダイレクトします。