12.6. 客户端范围


使用红帽构建的 Keycloak 在名为 客户端范围 的实体中定义共享客户端配置。客户端范围为 多个客户端配置 协议映射器 和角色范围映射

客户端范围也支持 OAuth 2 范围 参数。客户端应用使用此参数来请求访问令牌中的声明或角色,具体取决于应用程序的要求。

要创建客户端范围,请按照以下步骤执行:

  1. 点菜单中的 Client Scopes

    客户端范围列表

    client scopes list

  2. Create
  3. 为您的客户端范围命名。
  4. Save

客户端范围 具有与常规客户端类似的标签页。您可以定义 协议映射器 和角色范围映射。这些映射可以被其他客户端继承,并被配置为从此客户端范围内继承。

12.6.1. 协议

当您创建客户端范围时,请选择 协议。同一范围内链接的客户端必须具有相同的协议。

每个域在菜单中都有一组预定义的内置客户端范围。

  • SAML 协议: role_list。此范围包含在 SAML 断言中的 roles 列表的一个协议映射程序。
  • OpenID Connect 协议:提供 Several 客户端范围:

    • roles

      此范围没有在 OpenID Connect 规格中定义,且不会自动添加到访问令牌中的 范围 声明中。此范围具有映射程序,用于将用户的角色添加到访问令牌,并为至少有一个客户端角色的客户端添加使用者。这些映射器在 Audience 部分中 详细介绍。

    • web-origins

      此范围也没有在 OpenID Connect 规格中定义,且不添加到声明访问令牌的范围中。此范围用于将允许的 Web 原始卷添加到访问令牌 allowed-origins 声明中。

    • microprofile-jwt

      此范围处理 MicroProfile/JWT Auth 规范中定义的声明。此范围定义了 upn 声明的用户属性映射程序,以及 声明的 realm 角色映射程序。可以更改这些映射程序,以便可使用不同的属性来创建 MicroProfile/JWT 特定的声明。

    • offline_access

      当客户端需要获取离线令牌时,会使用此范围。有关离线令牌的更多详细信息,请参见 Offline Access 部分和 OpenID Connect 规格

    • 配置集
    • email
    • address
    • 手机

客户端范围 配置文件电子邮件地址和 电话OpenID Connect 规范中 定义。这些范围没有定义任何角色范围映射,但它们定义了协议映射程序。这些映射程序与 OpenID Connect 规格中定义的声明对应。

例如,当您打开 手机 客户端范围并打开 Mappers 选项卡时,您将看到与范围 电话 规格中定义的声明相对应的协议映射程序。

客户端范围映射器

client scopes phone

手机 客户端范围链接到客户端时,客户端会自动继承 手机 客户端范围中定义的所有协议映射程序。此客户端发布的访问令牌包含有关用户的电话号码信息,假设用户具有定义的电话号码。

内置客户端范围包含规格中定义的协议映射程序。您可以自由编辑客户端范围并创建、更新或删除任何协议映射器或角色范围映射。

12.6.3. 使用客户端链接客户端范围

客户端范围和客户端之间的链接是在客户端的 Client Scopes 选项卡中配置。客户端范围和客户端之间链接的两种方法有两种。

默认客户端范围
此设置适用于 OpenID Connect 和 SAML 客户端。在为客户端发布 OpenID Connect 令牌或 SAML 断言时,会应用默认客户端范围。客户端将继承客户端范围中定义的协议映射和角色范围映射。对于 OpenID Connect 协议,无论 OpenID Connect 授权请求中的 scope 参数的值是什么,都始终应用映射器和角色范围映射。
可选的客户端范围
此设置仅适用于 OpenID Connect 客户端。可选的客户端范围会在为此客户端发布令牌时应用,但只有当 OpenID Connect 授权请求中的 scope 参数请求时才应用。

12.6.3.1. Example

在本例中,假设客户端有链接到默认客户端范围的 配置文件和 电子邮件,以及作为可选客户端范围链接的 电话号码和 地址。在向 OpenID Connect 授权端点发送请求时,客户端使用 scope 参数的值。

scope=openid phone

scope 参数包含字符串,范围值按空格划分。值 openid 是用于所有 OpenID Connect 请求的元数据值。令牌将包含来自默认客户端范围配置文件和 电子邮件映射程序 和角色范围映射,以及范围参数请求的可选客户端范围。

12.6.4. 评估客户端范围

Mappers 选项卡包含协议映射器和 Scope 选项卡,其中包含为此客户端声明的角色范围映射。它们不包含从客户端范围继承的映射器和范围映射。可以看到有效的协议映射器(这是客户端中定义的协议映射器,以及从链接的客户端范围继承)以及为客户端生成令牌时使用的有效角色范围映射。

流程

  1. 点客户端的 Client Scopes 选项卡。
  2. 打开子选项卡 Evaluate
  3. 选择您要应用的可选客户端范围。

这也将显示 scope 参数的值。此参数需要从应用程序发送到红帽构建的 Keycloak OpenID Connect 授权端点。

评估客户端范围

client scopes evaluate

注意

要从应用程序发送 scope 参数的自定义值,请参阅 servlet 适配器 的参数转发部分,或 javascript 适配器部分

所有示例是为特定用户生成并为特定客户端发出的示例,并指定了 scope 参数的值。示例包括所有使用的声明和角色映射。

12.6.5. 客户端范围权限

在向用户发布令牌时,客户端范围仅在允许用户使用它时才适用。

当客户端范围没有定义任何角色范围映射时,每个用户被允许使用此客户端范围。但是,当客户端范围定义了角色范围映射时,用户必须是至少一个角色的成员。用户角色和客户端范围的角色之间必须有一个交集。复合角色被计算为评估此交集。

如果不允许用户使用客户端范围,则在生成令牌时使用协议映射器或角色范围映射。客户端范围不会出现在令牌中的 scope 值中。

12.6.6. 域默认客户端范围

使用 Realm Default Client Scopes 定义一组客户端范围,这些范围会自动链接到新创建的客户端。

流程

  1. 点客户端的 Client Scopes 选项卡。
  2. Default Client Scopes

在这里,选择您要添加为 默认客户端范围的客户端范围 到新创建的客户端和 可选客户端范围

默认客户端范围

client scopes default

创建客户端时,您可以根据需要取消链接默认客户端范围。这与删除 默认角色类似

12.6.7. 解释范围

客户端范围
客户端范围是红帽构建的 Keycloak 中的实体,这些 Keycloak 在域级别配置,并可链接到客户端。当请求发送到红帽构建的 Keycloak 授权端点时,客户端范围会根据名称引用,其范围是 scope 参数的值。如需了解更多详细信息,请参阅 客户端范围链接 部分。
角色范围映射
这在客户端或客户端范围的 Scope 选项卡中提供。使用 Role 范围映射 来限制访问令牌中可以使用的角色。如需了解更多详细信息 ,请参阅角色范围映射部分
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.