跳到主要内容

配置组织模板

我们将通过 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' });