搜索

12.7. 客户端策略

download PDF

为了便于保护客户端应用程序,以统一的方式实现以下点:

  • 根据配置客户端可以有什么策略
  • 客户端配置验证
  • 遵守所需的安全标准和配置文件,如财务级 API (FAPI)

为了实现这些点,引进了 Client Policies 概念。

12.7.1. 使用案例

客户端策略实现以下要点,如下所示:

根据配置客户端可以有什么策略
客户端策略可以在客户端创建/更新期间强制实施客户端的配置设置,但也在与特定客户端相关的 Red Hat Single Sign-On 服务器进行 OpenID Connect 请求期间。Red Hat Single Sign-On 支持类似的事情,也可以通过 保护应用程序和服务指南中的客户端注册 政策支持。但是,客户端注册策略只能涵盖 OIDC Dynamic Client Registration。客户端策略不仅包括客户端注册策略可以做什么,但其他客户端注册和配置方法。当前计划被客户端注册策略替代。
客户端配置验证
Red Hat Single Sign-On 支持验证客户端是否遵循代码交换的概念验证、请求对象签名算法、Holder-of-Key Token 等一些端点,等等。它们可由每个设置项(在管理控制台中、交换机、下拉菜单等)指定。要使客户端应用程序安全,管理员需要以适当方式设置许多设置,因此管理员很难保护客户端应用程序。客户端策略可以对上述客户端配置进行这些验证,也可用于自动配置一些客户端配置开关来满足高级安全要求。以后,单个客户端配置设置可能会被客户端策略直接执行所需的验证替代。
遵守所需的安全标准和配置集,如 FAPI
Global 客户端配置集 是 Red Hat Single Sign-On 中预先配置的客户端配置集。它们被预先配置为符合 FAPI 等标准安全配置集,使得管理员可以轻松地确保其客户端应用程序符合特定的安全配置集。目前,Red Hat Single Sign-On 具有支持 FAPI 1 规格的全局配置集。管理员只需要配置客户端策略,以指定哪些客户端应与 FAPI 兼容。管理员可以配置客户端配置文件和客户端策略,以便可轻松地遵循 Red Hat Single Sign-On 客户端,如 SPA、Native App、Open Banking 等。

12.7.2. 协议

客户端策略概念独立于任何特定的协议。但是,Red Hat Single Sign-On 只支持 OpenID Connect (OIDC)协议

12.7.3. 架构

客户端策略由四个构建块组成:Condition、Executor、Profile 和 Policy。

12.7.3.1. 状况

条件决定了策略在采用以及何时采用策略的客户端。在客户端请求过程中(OIDC 授权请求、令牌端点请求等)检查了客户端创建/更新的一些条件。该条件检查是否满足指定的条件。例如,一些条件会检查客户端的访问类型是否机密。

该条件不能单独使用。它可以在稍后描述 的策略 中使用。

条件可以与其他可配置提供程序相同。可以配置的内容取决于每个条件的性质。

提供了以下条件:

创建/发布客户端的方法
  • 动态客户端注册(匿名或带有初始访问令牌的验证或注册访问令牌)
  • admin REST API (Admin 控制台等)

因此,在创建客户端时,当这个客户端由 OIDC Dynamic Client Registration 创建而不初始访问令牌(Anonymous Dynamic Client Registration)创建此客户端时,可将条件配置为评估为 true。因此,可以使用这个条件来确保通过 OIDC Dynamic Client Registration 注册的所有客户端都兼容 FAPI。

客户端的作者(根据特定角色或组存在)
在 OpenID Connect 动态客户端注册中,客户端的作者是验证获得访问令牌的最终用户,用来生成新客户端,而不是实际通过访问令牌访问注册端点的现有客户端的服务帐户。在由 Admin REST API 注册时,客户端作者是作为红帽单点登录管理员的最终用户。
客户端访问类型(机密、公共、仅 bearer-only)
例如,当客户端发送授权请求时,如果这个客户端保密,则采用策略。
客户端范围
如果客户端有特定的客户端范围(默认或者作为当前请求中使用的可选范围),评估为 true。这可用于确保使用范围为 fapi-example-scope 的 OIDC 授权请求需要符合 FAPI。
客户端角色
适用于具有指定名称的客户端角色
客户端域名、主机或 IP 地址
用于客户端的特定域名。或者对于管理员从特定主机或 IP 地址注册/更新客户端时的情况。
任何客户端
此条件始终评估为 true。它可用于确保特定域中的所有客户端都兼容 FAPI。

12.7.3.2. executor

executor 指定在采用策略的客户端上执行什么操作。executor 执行一个或多个指定的操作。例如,一些 executor 检查授权请求中的参数 redirect_uri 的值是否与授权端点上的预先注册的重定向 URI 完全匹配,并在非授权端点上拒绝此请求。

executor 无法单独单独使用。它可以在稍后 描述的配置 集中使用。

executor 可以与其他可配置供应商相同。可以配置的内容取决于每个 executor 的性质。

executor 对各种事件执行操作。executor 实现可以忽略特定类型的事件(例如,用于检查 OIDC 请求 对象的 executor 则只是 OIDC 授权请求)。事件是:

  • 创建客户端(包括通过动态客户端注册创建)
  • 更新客户端
  • 发送授权请求
  • 发送令牌请求
  • 发送令牌刷新请求
  • 发送令牌撤销请求
  • 发送令牌内省请求
  • 发送 userinfo 请求
  • 使用刷新令牌发送注销请求

在每个事件中,Executor 可以在多个阶段工作。例如,在创建/备份客户端时,Executor 可以通过自动配置特定的客户端设置来修改客户端配置。之后,Executor 在验证阶段验证此配置。

此执行程序有几个目的之一是实现客户端一致性配置集(如 FAPI)的安全要求。要做到这一点,需要以下 executors:

  • 客户端使用 强制安全客户端身份验证方法
  • 使用强制密钥令牌
  • 使用 代码交换(PKCE)的 强制密钥
  • 使用 签名 JWT 客户端身份验证(private-key-jwt) 的强制签名算法
  • 强制 HTTPS 重定向 URI,并确保配置的重定向 URI 不包含通配符
  • 强制 OIDC 请求 对象满足高安全性等级
  • 强制 OIDC 混合流的 response Type,包括用作 分离签名 的 ID 令牌,如 FAPI 1 规格中所述,这意味着从授权响应返回的 ID 令牌不包含用户配置集数据
  • 为防止 CSRF 强制实施更安全的 状态 和非ce 参数处理
  • 在客户端注册时强制执行更安全的签名算法
  • enforce binding_message 参数用于 CIBA 请求
  • 强制 客户端 Secret 轮转

12.7.3.3. profile

一个配置集由多个 executors 组成,它可以实现一个安全配置集,如 FAPI。配置集可以通过 Admin REST API (Admin Console)及其 executors 配置。有三个 全局配置集,它们默认在 Red Hat Single Sign-On 中配置,它与 FAPI Baseline、FAPI Advanced 和 FAPI CIBA 规格兼容。《安全应用程序和服务 指南》 中的 FAPI 部分提供了更多详细信息。

12.7.3.4. 策略

策略由多个条件和配置文件组成。该策略可用于满足此策略的所有条件的客户端。策略会引用多个配置集,这些配置集的所有 executors 都会针对针对此策略所采用的客户端执行其任务。

12.7.4. Configuration

策略、配置文件、条件、执行程序可通过 Admin REST API 配置,这意味着管理控制台。要做到这一点,有一个 Realm Realm Settings Client Policies 的标签页,这意味着管理员可以为每个域具有客户端策略。

Global Client Profiles 会在每个域中自动可用。但是,默认情况下没有配置任何客户端策略。这意味着,如果管理员希望示例其域的客户端符合 FAPI,则始终需要创建任何客户端策略。无法更新全局配置文件,但管理员可以轻松将其用作模板,如果他们想要在全局配置集配置中进行一些小更改,则创建自己的配置集。Admin Console 中提供 JSON Editor,它简化了基于某些全局配置集的新配置集的创建。

12.7.5. 向后兼容性

客户端策略可以替换安全应用程序和服务 指南中的客户端注册策略。但是,客户端注册策略仍存在共存。这意味着,在 Dynamic Client Registration 请求时,要创建/更新客户端,同时应用客户端策略和客户端注册策略。

当前计划适用于要删除的客户端注册策略功能,并且现有的客户端注册策略将自动迁移到新的客户端策略。

12.7.6. 客户端 Secret 轮转示例

请参阅 客户端 secret 轮转的示例配置

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.