1.2. 术语
进一步之前,务必要了解红帽构建的 Keycloak 授权服务所引入的术语和概念。
1.2.1. 资源服务器 复制链接链接已复制到粘贴板!
根据 OAuth2 术语,资源服务器是托管受保护资源的服务器,能够接受和响应受保护的资源请求。
资源服务器通常依赖于某种类型的信息来决定是否应授予受保护资源的访问权限。对于基于 RESTful 的资源服务器,该信息通常在安全令牌中执行,通常会作为 bearer 令牌以及每个请求发送到服务器。依赖于会话来验证用户的 Web 应用通常会将这些信息存储在用户会话中,并从那里检索每个请求。
在红帽构建的 Keycloak 中,任何 机密 客户端应用程序都可以充当资源服务器。此客户端的资源及其对应的范围受到一组授权策略进行保护和管理。
1.2.2. 资源 复制链接链接已复制到粘贴板!
资源是应用程序和组织的资产的一部分。它可以是一个或多个端点、一个典型的 Web 资源,如 HTML 页面等。在授权策略术语中,资源是受保护的 对象。
每个资源都有一个唯一标识符,它可以代表单个资源或一组资源。例如,您可以管理一个代表 并为所有公司帐户定义一组授权策略的过期帐户资源。但是,您可能还有不同的名为 Ice 的过期 帐户的资源,它代表一个由单一客户拥有的单个资源,它们可以拥有自己的授权策略。
1.2.3. 影响范围 复制链接链接已复制到粘贴板!
资源范围是一个有界限的访问权限范围,可以在资源上执行。在授权策略术语中,范围是逻辑应用到资源的可能性之一。
它通常表示可以使用给定资源完成什么操作。范围示例包括 view、edit、delete 等。但是,范围也可以与资源提供的特定信息相关。在这种情况下,您可以有一个项目资源和成本范围,其中成本范围用于为用户定义特定策略和权限来访问项目成本。
1.2.4. 权限 复制链接链接已复制到粘贴板!
考虑这个简单和非常常见的权限:
权限将保护的对象与必须评估的策略相关联,以确定是否授予访问权限。
X 可在资源 Z 上执行 Y
其中 …
- X 代表一个或多个用户、角色或组,或者它们的组合。您还可以在此处使用声明和上下文。
- Y 代表要执行的操作,例如 write, view 等。
- z 代表受保护的资源,如 "/accounts"。
红帽构建的 Keycloak 提供了丰富的平台,用于构建一系列权限策略,范围从简单到非常复杂的、基于规则的动态权限。它提供灵活性和帮助:
- 减少代码重构和权限管理成本
- 支持更灵活的安全模型,帮助您轻松适应安全要求的更改
- 在运行时进行更改;应用程序仅关注受保护的资源和范围,而不是它们的保护方式。
1.2.5. 策略 复制链接链接已复制到粘贴板!
策略定义授予对象访问权限必须满足的条件。与权限不同,您不指定受保护的对象,而是指定访问给定对象(如资源、范围或两者)必须满足的条件。策略与可用于保护资源的不同访问控制机制(ACM)密切相关。使用策略,您可以为基于属性的访问控制(ABAC)、基于角色的访问控制(RBAC)、基于上下文的访问控制或这些组合实施策略。
红帽构建的 Keycloak 利用策略的概念,以及如何通过提供聚合策略的概念来定义它们,您可以在其中构建"策略策略",并仍然控制评估的行为。红帽构建的 Keycloak 授权服务中的策略实施不符合对给定资源的所有条件,而不是编写一个大型策略,而是遵循其划分的技术。也就是说,您可以创建单独的策略,然后将它们使用不同的权限重复使用,并通过组合单个策略来构建更复杂的策略。
1.2.6. 策略供应商 复制链接链接已复制到粘贴板!
策略提供程序是特定策略类型的实现。Red Hat build of Keycloak 提供内置的策略,由对应的策略供应商支持,您可以创建自己的策略类型来支持您的特定要求。
Red Hat build of Keycloak 提供了一个 SPI (Service Provider Interface),可用于插入您自己的策略供应商实现。
1.2.7. 权限票据 复制链接链接已复制到粘贴板!
权限票据是由用户管理访问(UMA)规格定义的特殊令牌类型,它提供其表单由授权服务器决定的不透明结构。此结构代表了客户端请求的资源和/或范围,以及必须应用到授权数据请求的策略(请求方令牌 [RPT])。
在 UMA 中,权限票据对于支持个人对个人共享以及个人对机构共享至关重要。对授权工作流使用权限票据可以简化一系列场景,其中资源所有者和资源服务器根据管理对这些资源的访问的精细策略完全控制其资源。
在 UMA 工作流中,权限票据由授权服务器向资源服务器发出,该服务器会向客户端访问受保护的资源的客户端返回权限票据。客户端收到票据后,它可以通过将票据返回到授权服务器来请求 RPT (包含授权数据的最终令牌)。