1.2. 术语
进一步之前,务必要了解红帽构建的 Keycloak 授权服务所引入的术语和概念。
1.2.1. 资源服务器 复制链接链接已复制到粘贴板!
根据 OAuth2 术语,资源服务器是托管受保护的资源的服务器,能够接受和响应受保护的资源请求。
资源服务器通常依赖某种类型的信息来决定是否应该被授予对受保护的资源的访问。对于基于 RESTful 的资源服务器,这些信息通常在安全令牌中传输,通常作为 bearer 令牌发送,以及每个对服务器的请求。依赖会话验证用户的 Web 应用通常会将该信息存储在用户的会话中,并从那里检索每个请求。
在红帽构建的 Keycloak 中,任何 机密 客户端应用程序都可以充当资源服务器。此客户端的资源及其各自范围受一组授权策略保护和管理。
1.2.2. 资源 复制链接链接已复制到粘贴板!
资源是应用程序和组织资产的一部分。它可以是一个或多个端点的集合,一个典型的 Web 资源,如 HTML 页面等。在授权策略术语中,资源是受保护的 对象。
每个资源都有一个唯一标识符,它可以代表单个资源或一组资源。例如,您可以管理代表并为所有 银行帐户定义一组授权策略的银行帐户资源。但是,您还可以有一个名为 alice 银行帐户 的不同资源,它代表了单个客户拥有的单个资源,这些资源可以拥有自己的授权策略。
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 (包含授权数据的最终令牌)。