權限與資源管理
將組織 (Organization) 作為資源,並套用組織範本 (Organization template) 來保護它。例如,每個組織在租戶內都有自己的文件,只有擁有正確角色 (Role) 的使用者才能編輯或刪除這些文件。
詳情請參閱 組織權限 (Organization permissions)。
使用組織角色型存取控制 (RBAC, Role-based Access Control) 管理使用者權限
完成上述設定後,你可以透過電子郵件發送邀請,受邀者將以指定角色加入組織。
擁有不同組織角色的使用者,在其組織權杖 (Organization token) 中會有不同的權限範圍 (Scopes)。你的前端應用程式與後端服務都應檢查這些權限範圍,以決定可見功能與允許操作。
處理組織權杖 (Organization token) 權限範圍 (Scope) 更新
本節涵蓋管理組織範本 (Organization template) 與授權 (Authorization) 情境的進階主題。若你尚未熟悉這些概念,請先閱讀 授權 (Authorization) 與 組織範本 (Organization template)。
管理組織權杖權限範圍更新包含:
撤銷現有權限範圍 (Scopes)
例如,將管理員降級為非管理員成員時,應移除該使用者的權限範圍。此時,請清除快取的組織權杖,並使用重新整理權杖 (Refresh token) 取得新權杖。新發行的組織權杖會立即反映權限範圍的減少。
賦予新權限範圍 (Scopes)
可分為兩種情境:
賦予已在驗證系統中定義的新權限範圍
與撤銷權限範圍類似,若新賦予的權限範圍已在驗證伺服器註冊,發行新組織權杖即可立即反映新權限範圍。
賦予驗證系統中新引入的權限範圍
此時需觸發重新登入或重新同意流程,以更新使用者的組織權杖。例如,呼叫 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',
});上述程式碼會導向使用者授權頁面 (Consent screen),並於同意後自動導回你的應用程式,組織權杖中的權限範圍也會隨之更新。