跳到主要内容

权限 (Permission) 与资源管理

将组织 (Organization) 作为资源,并应用组织模板来保护它。例如,每个组织 (Organization) 在租户内都有自己的文档。只有拥有正确角色 (Role) 的用户才能编辑或删除这些文档。

详见 组织权限 (Organization permissions)。

使用组织基于角色的访问控制 (RBAC) 管理用户权限 (Permissions)​

通过上述设置,你可以通过电子邮件发送邀请,受邀者可以以分配的角色 (Role) 加入组织 (Organization)。

拥有不同组织角色 (Role) 的用户将在其组织令牌 (Organization token) 中拥有不同的权限 (Scopes)。你的客户端应用和后端服务都应检查这些权限 (Scopes) 以确定可见功能和允许的操作。

处理组织令牌 (Organization token) 中权限 (Scopes) 的更新​

本节涵盖关于管理组织模板和授权 (Authorization) 场景的高级主题。如果你不熟悉这些概念,请先阅读 授权 (Authorization) 和 组织模板 (Organization template)。

管理组织令牌 (Organization token) 中权限 (Scopes) 的更新包括:

撤销现有权限 (Scopes)​

例如,将管理员降级为非管理员成员时,应从该用户移除权限 (Scopes)。在这种情况下,清除缓存的组织令牌 (Organization token),并使用刷新令牌 (Refresh token) 获取新的组织令牌 (Organization token)。减少后的权限 (Scopes) 会立即反映在新签发的组织令牌 (Organization token) 中。

授予新权限 (Scopes)​

这可以分为两种情况:

授予已在认证 (Authentication) 系统中定义的新权限 (Scopes)​

与撤销权限 (Scopes) 类似,如果新授予的权限 (Scope) 已在认证 (Authentication) 服务器注册,签发新的组织令牌 (Organization token),新权限 (Scopes) 会立即生效。

授予认证 (Authentication) 系统中新引入的权限 (Scopes)​

在这种情况下,触发重新登录或重新授权流程以更新用户的组织令牌 (Organization token)。例如,调用 Logto SDK 中的 signIn 方法。

实时检查权限 (Permissions) 并更新组织令牌 (Organization token)​

Logto 提供了 Management API 用于获取组织 (Organization) 内用户的实时权限 (Permissions)。

  • GET /api/organizations/{id}/users/{userId}/scopes (API 参考)

将用户组织令牌 (Organization token) 中的权限 (Scopes) 与实时权限 (Permissions) 进行比较,以判断用户是否被提升或降级。

  • 如果被降级,清除缓存的组织令牌 (Organization token),SDK 会自动签发带有更新权限 (Scopes) 的新令牌 (Token)。

    const { clearAccessToken } = useLogto();

    ...
    // 如果获取到的实时权限 (Scopes) 少于组织令牌 (Organization token) 中的权限 (Scopes)
    await clearAccessToken();

    这不需要重新登录或重新授权流程。Logto SDK 会自动签发新的组织令牌 (Organization token)。

  • 如果在认证 (Authentication) 系统中引入了新的权限 (Scope),则需触发重新登录或重新授权流程以更新用户的组织令牌 (Organization token)。例如,使用 React SDK:

    const { clearAllTokens, signIn } = useLogto();

    ...
    // 如果获取到的实时权限 (Scopes) 比组织令牌 (Organization token) 中的权限 (Scopes) 多了新分配的权限 (Scopes)
    await clearAllTokens();
    signIn({
    redirectUri: '<your-sign-in-redirect-uri>',
    prompt: 'consent',
    });

    上述代码会触发跳转到用户授权页面 (Consent screen),并在用户组织令牌 (Organization token) 中带有更新后的权限 (Scopes) 自动重定向回你的应用。