跳到主要内容

授权 (Authorization)

在 Logto 中,授权 (Authorization) 定义了用户和应用在认证 (Authentication) 后可以做什么:每个身份可以访问哪些 API、资源或执行哪些操作。

Logto 为现代 SaaS 和 AI 应用提供灵活的、基于令牌的授权 (Authorization)。你可以在全局范围或每个组织 (Organization) 内保护 API 资源。所有权限都通过 基于角色的访问控制 (RBAC) 系统进行管理,并通过 组织模板 为多租户应用提供高级支持。除了控制用户可以做什么,你还可以通过 应用级访问控制 限制哪些用户可以登录到每个应用程序。

核心概念

  • 基于角色的访问控制 (RBAC): Logto 以 RBAC 为基础,为用户、客户端和服务分配权限。了解更多 RBAC 相关内容
  • API 资源: 你想要保护的任何后端服务或端点(全局或组织 (Organization) 专属)。
  • 角色 (Role): 权限的集合(如 admin、viewer、editor)。
  • 权限 (Permission)(权限 (Scope)): 具体允许的操作(如 read:reportinvite:member)。
  • 组织 (Organization): 代表你的应用中的租户、工作区或客户。这不同于 Logto 租户,后者指的是你的整体 Logto 项目或实例
  • 组织模板: 针对多租户应用,定义可复用的角色和权限集合,应用于所有组织 (Organization)。了解组织模板如何工作
  • 访问令牌 / 组织令牌: 包含全局或组织 (Organization) 范围权限声明 (Claims) 的令牌。

授权 (Authorization) 场景

Logto 中有三种主要的授权 (Authorization) 模式。请选择与你需求相符的场景:

场景适用时机令牌类型角色配置了解更多
全局 API 资源权限保护在整个 Logto 租户中共享的 API 资源(非组织 (Organization) 专属)访问令牌分配全局角色 / 权限保护全局 API 资源
组织 (Organization)(非 API)权限控制组织 (Organization) 专属的操作、UI 功能或业务逻辑(非 API)组织令牌为应用控制分配组织 (Organization) 角色 / 权限保护组织 (Organization)(非 API)权限
组织级 API 资源权限保护在特定组织 (Organization) 内可访问的 API 资源组织令牌为组织 (Organization) API 分配组织 (Organization) 角色 / 权限保护组织级 API 资源

Logto 按照 RFC 8707 建模 API 资源,在 OAuth 2.0 授权 (Authorization) 流程中使用 resource 参数。这让你可以轻松保护多个 API 或微服务,并确保与其他基于标准的系统兼容。

这些模式控制用户在登录应用后可以做什么。如果你想控制用户是否可以登录到某个特定应用,请使用 应用级访问控制。它基于用户、角色、组织 (Organization) 或组织 (Organization) 角色的允许规则限制应用访问,并且独立于上述基于令牌的模式。

提示:

需要自定义声明 (Claims) 或高级访问控制?请参阅 自定义令牌声明 (Claims)

Logto 授权 (Authorization) 工作原理

  • 基于令牌: 每次访问都通过安全签名的访问令牌授予。你的后端验证令牌并强制执行权限(权限 (Scopes))。

  • 全局权限 (Scope) 与组织 (Organization) 权限 (Scope):

    • 全局 权限 (Scope):控制整个 Logto 租户范围内对 API 资源的访问。
    • 组织 (Organization) 权限 (Scope):控制组织 (Organization) 范围内的业务逻辑(应用功能)和 API 资源。组织 (Organization) 权限可以应用于非 API 功能(如 UI 元素或工作流)和 / 或组织 (Organization) 范围的 API 端点。
  • 角色 (Role) 与权限 (Scopes): 角色 (Role) 是权限 (Scopes) 的集合。根据你的场景,将角色 (Role) 分配给用户或客户端(全局或组织 (Organization) 范围)。

下一步

准备好进一步探索了吗?动手实践、探索真实案例指南,或加深你的理解:

使用场景

想要实际案例和真实场景?请查看以下指南:

延伸阅读

RBAC 与 ABAC:你应该了解的访问控制模型 我应该什么时候使用 JWT? API 授权 (Authorization) 方法