认证 (Authentication) 与授权 (Authorization)
认证 (Authentication) 和 授权 (Authorization) 之间的区别可以总结如下:
- 认证 (Authentication) 回答了“你拥有哪个身份?”的问题
- 授权 (Authorization) 回答了“你可以做什么?”的问题
有关完整的客户身份和访问管理 (CIAM) 介绍,你可以参考我们的 CIAM 系列:
认证 (Authentication)
Logto 支持多种交互式和非交互式的认证 (Authentication) 方法,例如:
- 登录体验:终端用户的认证 (Authentication) 过程。
- 机器对机器 (M2M) 认证 (Authentication):服务或应用程序的认证 (Authentication) 过程。
认证 (Authentication) 的最终目标非常简单:验证并获取实体的唯一标识符(在 Logto 中,是用户或应用程序)。
授权 (Authorization)
在 Logto 中,授权 (Authorization) 是通过基于角色的访问控制 (RBAC) 完成的。它让你可以完全控制用户或 M2M 应用程序对以下内容的访问:
- API 资源:由绝对 URI 表示的全局实体。
- 组织 (Organizations):用户或应用程序的组。
- 组织 API 资源:属于组织的 API 资源。
要了解更多关于这些概念的信息,你可以参考以下资源:
以下是这些概念之间关系的可视化表示:
简而言之,授权 (Authorization) 是关于定义规则,以确定“Identities”组中的实体可以访问“Resources”组中的哪些实体。
常见问题解答
我需要指定哪些用户可以登录到应用程序
由于单点登录 (SSO) 的特性,Logto 目前不支持将应用程序用作资源。相反,你可以定义 API 资源和权限来控制对资源的访问。
我需要我的用户登录到一个组织
如前所述,认证 (Authentication) 涉及验证实体的身份,而访问控制是通过授权 (Authorization) 处理的。因此:
- 确定用户属于哪个组织是一个授权 (Authorization) 问题。
- 登录过程是一个认证 (Authentication) 问题。
这意味着在 Logto 中没有“登录到组织”的概念。一旦用户被认证 (Authentication),他们可以根据定义的权限被授权 (Authorization) 访问所有资源(包括组织资源)。
这种模型高效且清晰,因为它将认证 (Authentication) 和授权 (Authorization) 的关注点分开。所有现代 SaaS 应用程序,如 GitHub 和 Notion,都遵循这种模型。
然而,在某些情况下,你需要在用户来源和组织之间建立 1-1 映射。在这种情况下,企业单点登录 (SSO) 和 组织即时 (JIT) 供应 可能会有所帮助。