2.2. 涉及新支持的功能的更改
以下是为现有功能提供新支持的主要改进。
2.2.1. 标准令牌交换
在本发行版本中,红帽构建的 Keycloak 添加了对 标准令牌交换的支持(Feature token-exchange
-standard:v2 )。在以前的红帽构建的 Keycloak 版本中,红帽构建的 Keycloak 只有一个预览令牌交换功能,它现在被称为 Legacy 令牌交换(Feature token
-exchange:v1 )。传统令牌交换仍然处于预览阶段,其工作方式与之前的版本相同。如果您使用 内部令牌交换,则考虑迁移到新的标准令牌交换。
如果您希望继续使用旧的令牌交换,则不需要禁用标准令牌交换功能。只有在红帽构建的 Keycloak 客户端中启用了标准令牌交换时,您的客户端才会使用标准令牌交换。但是,建议迁移到标准令牌交换。它是官方支持的方法和功能增强的优先级。
在计划迁移到新的标准令牌交换时请考虑以下备注:
-
功能
token-exchange-standard
(代表新的标准令牌交换)默认是启用的。建议禁用表示 Legacy 令牌交换的token-exchange
功能,以确保新标准令牌交换将请求提供。 您可以同时启用标准和旧的令牌交换功能,如果您需要涵盖标准用例(内部)以及仅由传统令牌交换实施的其他令牌交换用例,这非常有用。例如,内部令牌交换的外部 仅由传统令牌交换来实施。在这种情况下,红帽构建的 Keycloak 可为标准令牌交换提供标准内部请求,而其他请求则由旧令牌交换提供。选择标准或传统令牌交换取决于特定请求的参数。例如,包含 non-standard 参数(如
requested_issuer
或requested_subject
)的请求被视为 legacy。如果您仍然需要旧的令牌交换功能,则还需要启用 Fine-grained admin permissions 版本 1 (FGAP:v1),因为 版本 2 (FGAP:v2) 不支持令牌交换权限。这是因为 token-exchange 是概念上并不是一个"管理员"权限,因此不会向 FGAP:v2 中添加令牌交换权限。
- 标准令牌交换需要在客户端上启用交换机。请参阅 如何启用令牌交换。
考虑这两种令牌交换的行为中的这些额外更改:
- 标准令牌交换不再需要或支持细粒度 admin 权限。
-
有关范围和使用者行为的最显著更改是应用的客户端范围基于客户端触发令牌交换请求,而不是
audience
参数指定的 "target" 客户端。根据规范中所述,对audience
参数的多个值的支持存在。请参阅 如何启用令牌交换。 -
不再允许公共客户端发送令牌交换请求。传统令牌交换允许公共客户端自行交换令牌,以降低原始令牌。可以使用 refresh 令牌授权涵盖此用例,其中
scope
参数可用于缩减刷新的访问令牌,如 OAuth2 规格 中所述。 -
此发行版本不支持为 SAML 断言交换访问令牌。换句话说,不支持使用
requested_token_type=urn:ietf:params:oauth:token-type:saml2
。 - 只有在客户端明确启用了刷新令牌时,才允许交换访问令牌,如 如何启用令牌交换 中所述。
目前,当从离线会话发出主题令牌时,不支持请求离线令牌或交换刷新令牌。推荐的方法是为访问令牌交换,而不是尽可能刷新令牌。
2.2.2. 细粒度 admin 权限
红帽 Keycloak 的构建引入了精细的 admin 权限 V2,为管理权限提供改进和更灵活的授权模型。
- FGAP:V2 功能被默认启用。
-
FGAP:V1 功能保持预览,可以使用--
features=admin-fine-grained-authz:v1
启用。但是,V1 可能在以后的版本中被弃用并删除。
2.2.2.1. 从 V1 迁移到 V2
由于权限模型的基本更改,无法使用从 V1 到 V2 自动迁移。简化转换:
- 引入了一个新的 admin-permissions 客户端。当您为域启用功能时,会创建此客户端。客户端包含 FGAP:V2 的授权模型。
- 现有的 FGAP:V1 授权模型在 realm-management 客户端中保持不变。
- 管理员必须使用新模型 重新创建权限和策略,这些模型可以在管理控制台的更新权限部分中进行配置。
2.2.2.2. FGAP:V1 和 FGAP:V2 之间的主要区别
realm-level 启用 :
- 可以使用 Realm Settings 中的新的 Admin Permissions 开关为域启用 FGAP:V2。
集中管理:
- 删除了特定于资源的 权限选项卡 (用于用户、组、客户端和角色)。
- 新的 权限 部分提供对管理控制台中单个位置的所有管理权限的集中管理。
显式操作范围:
- 在权限间传输依赖项已被删除。
- 管理员现在必须明确分配每个所需的权限。
- 示例:要查看和管理资源,必须单独分配权限的范围。
权限模型更改:
- 已删除用户配置的 用户权限。
- 配置客户端权限 已被删除。随着 V2 中明确的操作范围引入,管理和配置之间的区分是模糊的。管理组成员的权限不允许域管理员从组中取消分配成员。该限制的原因是,V1 允许组成员成为常规域用户,并在域中创建用户。将来的版本可能会提供额外的范围,以允许从组中删除成员。
灵活的资源范围:
- 与 V1 不同,其中权限被赋予 一个资源 (用于客户端、组和角色)或所有资源(用户)或 所有资源 (用户),V2 增加了更大的灵活性。
管理员现在可以为以下对象定义权限:
- 特定资源
- 一组所选资源
- 给定类型的所有资源
- 这适用于所有资源类型 :客户端、用户、组和角色。