Terminology 术语
在进一步了解之前,了解Keycloak引入的这些术语和概念很重要。
Resource Server资源服务器
根据OAuth2术语,资源服务器是托管受保护资源并能够接受和响应受保护的资源请求的服务器。
资源服务器通常依赖于某种信息来决定是否授予对受保护资源的访问。对于基于REST的资源服务器,该信息通常在安全令牌中携带.通常作为承载令牌与每个请求一起发送到服务器。依赖会话认证用户的Web应用程序通常将该信息存储在用户的会话中,并从每个请求中检索该信息。
在Keycloak中,任何保密的客户端应用程序都可以充当资源服务器。该客户的资源及其各自的范围受到一组授权策略的保护和管理。
Resource 资源
资源是应用程序和组织的资产的一部分。它可以是一个或多个端点,一个经典的Web资源,如HTML页面等等。在授权策略术语中,资源是被保护的对象。
每个资源都有唯一的标识符,可以表示单个资源或一组资源。例如,您可以管理银行帐户资源,代表并定义了所有银行帐户的一组授权策略。但您也可以使用不同的资源,名为Alice的银行帐户,代表单个客户拥有的单一资源,该资源可以拥有自己的一套授权策略。
Scope 作用域
资源的作用域是有可能在资源上执行的访问范围。在授权策略术语中,作用域是逻辑上应用于资源的潜在许多动词之一。
它通常表示给定资源可以做什么。作用域的示例如查看,编辑,删除等。然而,范围也可以与资源提供的具体信息相关。在这种情况下,可以拥有项目的资源和成本范围,其中使用成本范围来定义用户访问项目成本的具体策略和权限。
Permission 权限
考虑这个简单而非常普遍的许可:
权限将被保护的对象与必须评估的策略相关联,以确定是否授予访问权限。
X CAN DO Y ON RESOURCE Z
where …
X表示一个或多个用户,角色或组,或它们的组合。也可以在这里使用声明和上下文。
Y表示要执行的操作,例如写入,查看等。
Z表示受保护的资源,例如“/ accounts”。
Keycloak提供了一个丰富的平台,用于构建一系列权限策略,从简单到非常复杂,基于规则的动态权限。它提供灵活性,有助于:
减少代码重构和权限管理成本
支持更灵活的安全模式,帮助您轻松适应安全需求的变化
在运行时进行更改;应用程序只关心受保护的资源和范围,而不是如何保护它们。
Policy 策略
策略定义了授予对对象访问权限必须满足的条件。与权限不同,不指定被保护对象,而是指定访问给定对象(例如资源,范围或两者)必须满足的条件。策略与可用于保护资源的不同访问控制机制(ACM)密切相关.通过策略,可以实现基于属性的访问控制(ABAC),基于角色的访问控制(RBAC),基于上下文的访问控制或这些访问控制的任何组合的策略。
Keycloak利用政策的概念以及您如何定义这些概念,提供聚合策略的概念,您可以在其中构建“策略的策略”并仍然控制评估的行为。Keycloak中的策略实施不是按照一个必须满足的条件来编写一个大型策略,而是遵循“分而治之”的方法。也就是说,您可以创建单独的策略,然后通过不同的权限重用它们,并通过组合各个策略构建更复杂的策略。
Policy Provider 策略生产者
策略提供者是特定策略类型的实现。Keycloak提供内置策略,由相应的策略提供者支持,您可以创建自己的策略类型来支持您的特定需求。Keycloak提供了一个SPI(服务提供者接口),可以使用它来放入自己的策略提供者实现。
Permission Ticket 权限许可
权限许可是由OAuth2的用户管理访问(UMA)配置文件规范定义的特殊类型的令牌,它提供了一种不透明的结构,其形式由授权服务器确定。该结构表示客户端请求的资源和/或范围以及必须应用于授权数据请求(请求方令牌[RPT])的策略。
在UMA中,许可证是支持 人-人 共享以及个人对组织共享的关键.使用授权工作流的权限凭证可以实现从简单到复杂的一系列场景,资源所有者和资源服务器根据管理对这些资源访问权限的细粒度策略完全控制其资源。
在UMA工作流程中,授权服务器向资源服务器发出许可证凭证,资源服务器向客户端返回尝试访问受保护资源的权限凭证。一旦客户端收到,就可以通过将凭据发回授权服务器来请求RPT(持有授权数据的最后一个令牌)。