授权 (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:report、invite: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) 范围)。
下一步
准备好进一步探索了吗?动手实践、探索真实案例指南,或加深你的理解:
掌握角色 (Role) 和权限 (Permission),实现细粒度访问控制。
了解如何为多租户应用设置可复用的角色 (Role) 和权限 (Permission)。
使用全局角色 (Role) 和权限 (Permission) 保护你的 Logto 租户共享的 API。
通过组织 (Organization) 角色 (Role) 控制组织 (Organization) 专属操作和 UI 功能。
使用组织 (Organization) 角色 (Role) 保护特定组织 (Organization) 内可访问的 API。
了解如何在后端验证 Logto 令牌以保护 API。
通过用户、角色 (Role)、组织 (Organization) 和组织 (Organization) 角色 (Role) 限制每个应用的登录用户。
了解如何为高级访问控制场景添加自定义声明 (Claims)。
使用场景
想要实际案例和真实场景?请查看以下指南:
通过分步真实案例,了解如何用 RBAC 实现安全授权 (Authorization)。
跟随全面指南,了解多租户 SaaS 架构与实现。