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