メインコンテンツまでスキップ

組織トークンにおけるスコープの更新を扱う

上記のセットアップにより、メールで招待を送信し、招待されたユーザーは割り当てられたロールで組織に参加できます。

異なる組織ロールを持つユーザーは、組織トークン内で異なるスコープ(権限)を持ちます。クライアントアプリとバックエンドサービスの両方で、これらのスコープを確認し、表示する機能や許可されるアクションを判断してください。

前述の通り、組織テンプレートは 組織権限組織レベル API リソース を保護するための主要なアクセス制御レイヤーとして機能します。認可 (Authorization) セクションを必ず確認し、製品に最適な認可 (Authorization) モデルを選択してください。

この章では、Logto 組織トークンにおける 権限管理 および スコープ変更と権限の扱い のベストプラクティスに焦点を当てます。

組織トークンにおけるスコープの更新を扱う

組織トークンにおけるスコープの更新管理には、次の内容が含まれます:

既存のスコープを取り消す

例えば、管理者を非管理者メンバーに降格する場合、ユーザーからスコープを削除する必要があります。この場合、キャッシュされた組織トークンをクリアし、リフレッシュトークンで新しいトークンを取得してください。減少したスコープは新たに発行された組織トークンに即時反映されます。

新しいスコープを付与する

これは 2 つのシナリオに分けられます:

認証システムですでに定義されている新しいスコープを付与する場合

スコープの取り消しと同様に、新たに付与されたスコープがすでに認証サーバーに登録されている場合、新しい組織トークンを発行すれば新しいスコープが即時反映されます。

認証システムに新たに導入されたスコープを付与する場合

この場合、再ログインまたは再同意プロセスをトリガーしてユーザーの組織トークンを更新します。例えば、Logto SDK の signIn メソッドを呼び出します。

権限をリアルタイムで確認し、組織トークンを更新する

Logto は、組織内のユーザー権限をリアルタイムで取得するための Management 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',
    });

    上記のコードは同意画面への遷移をトリガーし、ユーザーの組織トークンに更新されたスコープを付与した状態でアプリに自動リダイレクトします。