跳到主要内容

配置组织模板

我们将通过 Logto Console 介绍配置组织模板功能的过程

首先,导航到 Console > Organization template。你会看到组织模板包括两个部分:组织角色和组织权限。组织模板为多个组织定义了共享的访问控制策略(权限和角色)。

通过 Logto Console 配置

创建组织权限

组织权限是组织模板的关键部分。这些权限是专为产品内的组织设计的。以下是管理它们的方法:

  • 找到组织权限选项卡: 转到“组织权限”选项卡以查看现有权限。
  • 添加、删除和编辑: 你可以轻松添加新的组织权限,删除不需要的权限,并根据需要编辑现有权限。

创建组织角色

Logto 支持两种类型的组织角色,这与用户 / 系统级别的基于角色的访问控制 (RBAC) 相同:

  • 用户: 分配给用户的角色。
  • 机器对机器: 分配给机器对机器应用程序的角色。

Logto 允许你以多种方式定义组织角色,以适应系统的结构:

仅组织权限的组织角色

  • 何时使用: 你有单独的用户 / 系统端点和组织端点。
  • 解释: 如果你的产品的技术架构和 API 设计明确区分用户 / 系统级资源和组织资源,这是最简单的方法。你的组织角色将仅包括你为组织定义的权限。

仅 API 权限的组织角色

  • 何时使用: 用户 / 系统级和组织级访问控制由相同的端点处理。
  • 解释: 如果你希望通过统一的 API 资源管理所有权限,请选择此选项。

组织角色中混合 API 和组织权限

  • 何时使用: 你为产品定义了用户 / 系统级和组织级的单独端点,但某些用户角色需要混合用户级和组织级权限。
  • 解释: 这提供了最大的灵活性,但也可能是最复杂的管理。

通过 Logto Management API 配置

你可以在 Console 中完成的所有操作也可以通过 Management API 完成,包括:管理组织模板以创建、删除或编辑组织权限和角色。

有关完整的功能列表,请参阅我们的 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' });