配置组织模板
我们将通过 Logto Console 介绍配置组织模板功能的过程。
首先,导航到 Console > Organization template。你会看到组织模板包括两个部分:组织角色 和 组织权限。组织模板为多个组织定义了共享的访问控制策略(权限和角色)。
通过 Logto Console 配置
创建组织权限
组织权限是组织模板的关键部分。这些权限是专为产品内的组织设计的。以下是管理它们的方法:
- 找到组织权限选项卡: 转到“组织权限”选项卡以查看现有权限。
- 添加、删除和编辑: 你可以轻松添加新的组织权限,删除不需要的权限,并根据需要编辑现有权限。
创建组织角色
Logto 支持两种类型的组织角色,这与用户 / 系统级别的基于角色的访问控制 (RBAC) 相同:
- 用户: 分配给用户的角色。
- 机器对机器: 分配给 机器对机器应用程序 的角色。
Logto 允许你以多种方式定义组织角色,以适应系统结构:
选项 1:仅组织权限的组织角色
- 何时使用: 你有单独的用户 / 系统端点和组织端点。
- 解释: 如果你的产品技术架构和 API 设计明确区分 用户 / 系统级资源 和 组织资源,这是最简单的方法。你的组织角色将仅包含你为组织定义的权限。
选项 2:仅 API 权限的组织角色
- 何时使用: 用户 / 系统级和组织级访问控制由相同的端点处理。
- 解释: 如果你希望通过统一的 API 资源 管理所有权限,请选择此选项。
选项 3:组织角色中混合 API 和组织权限
通过 Logto Management API 配 置
你可以通过 Management API 完成在 Console 中可以做的一切,包括:管理组织模板以创建、删除或编辑组织权限和角色。
有关完整的功能列表,请参阅我们的 API 参考:
Logto Management API - 组织角色
Logto Management API - 组织权限
使用 Logto Management API,你可以创建自定义的组织体验,例如允许组织管理员自助创建组织。查看 此部分 以启用更多组织级功能和管理。
处理成员权限变更
类似于 API 基于角色的访问控制 (RBAC),成员权限可能在会话期间发生变化——例如,他们可能被分配新的角色或现有角色权限被修改。
当成员权限发生变化时会发生什么?有两种情况。
系统中没有引入新权限
当前的组织访问令牌(即组织令牌)将在到期前保持有效,即使用户的组织权限发生了变化。然而,新权限将在后续的组织令牌中反映,任何被撤销的权限将被省略。
组织令牌具有固定的到期时间,无法更改,不同于通用访问令牌。
定期调用 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' });