12.6. 客户端范围
使用红帽单点登录在名为 客户端范围 的实体中定义共享客户端配置。客户端范围为 多个客户端配置 协议映射器 和角色范围映射。
客户端范围也支持 OAuth 2 范围 参数。客户端应用使用此参数来请求访问令牌中的声明或角色,具体取决于应用的要求。
要创建客户端范围,请按照以下步骤执行:
点击菜单中的 Client Scopes。
客户端范围列表
- 点 Create。
- 为您的客户端范围命名。
- 点 Save。
客户端范围 与常规客户端有类似的选项卡。您可以定义 协议映射器 和角色范围映射。这些映射可以被其他客户端继承,并配置为从这个客户端范围内继承这些映射。
12.6.1. 协议
创建客户端范围时,选择 协议。同一范围中的链接的客户端必须具有相同的协议。
每个 realm 在菜单中具有一组预定义的内置客户端范围。
- SAML 协议: role_list.此范围包含一个协议映射程序,用于 SAML 断言的角色列表。
OpenID Connect 协议: Several 客户端范围如下:
roles
这个范围没有在 OpenID Connect 规格中定义,它们不会自动添加到访问令牌中的 范围 声明中。此范围具有映射器,用于将用户的角色添加到访问令牌,并为至少具有一个客户端角色的客户端添加受众。这些映射器在 Audience 部分中 详细介绍。
web-origins
这个范围还没有在 OpenID Connect 规格中定义,且不会添加到声明访问令牌的范围中。此范围用于将允许的 Web 源添加到访问令牌 允许的声明中。
microprofile-jwt
此范围处理 MicroProfile/JWT Auth 规范 中定义的声明。此范围为 upn 声明定义了用户属性映射程序,以及 组 声明的域角色映射程序。这些映射程序可以更改,以便使用不同的属性来创建 MicroProfile/JWT 特定的声明。
offline_access
当客户端需要获取离线令牌时,会使用这个范围。有关离线令牌的更多详细信息,请参见 Offline Access 部分和 OpenID Connect 规格。
- 配置集
- address
- 电话
客户端范围、电子邮件、地址 和电话 在 OpenID Connect 规范 中定义。这些范围没有定义任何角色范围映射,但它们定义了协议映射。这些映射程序与 OpenID Connect 规范中定义的声明对应。
例如,当您打开 电话 客户端范围并打开 映射程序 标签时,您会看到与范围 电话 规范中定义的声明对应的协议映射程序。
客户端范围映射程序
当 电话 客户端范围连接到客户端时,客户端会自动继承 电话 客户端范围中定义的所有协议映射程序。为这个客户端发布的访问令牌包含用户的电话号码信息,假设该用户有定义的电话号码。
内置客户端范围包含规格中定义的协议映射程序。您可以自由编辑客户端范围,并创建、更新或删除任何协议映射程序或角色范围映射。
12.6.3. 使用客户端链接客户端范围
客户端范围和客户端之间的链接在客户端的客户端 范围 选项卡中配置。在客户端范围和客户端之间链接的两种方法如下:
- 默认客户端范围
- 此设置适用于 OpenID Connect 和 SAML 客户端。在为客户端发布 OpenID Connect 令牌或 SAML 断言时,会应用默认的客户端范围。客户端将继承客户端范围中定义的协议映射和角色范围映射。对于 OpenID Connect 协议,始终应用映射程序和角色范围映射,不论 OpenID Connect 授权请求中的范围参数使用的值是什么。
- 可选的客户端范围
- 此设置仅适用于 OpenID Connect 客户端。为这个客户端发出令牌时应用可选的客户端范围,但仅在 OpenID Connect 授权请求中的 scope 参数请求时才应用。
12.6.3.1. Example
在本例中,假设客户端有 配置集 和电子邮件 链接为默认客户端范围,以及连接为可选客户端范围的地址。 在向 OpenID Connect 授权端点发送请求时,客户端使用 scope 参数的值。
scope=openid phone
scope 参数包含字符串,范围值按空格分开。value openid 是用于所有 OpenID Connect 请求的 meta-value。令牌将包含来自默认客户端范围 配置集 和电子邮件 以及 电话 的 mappers 和角色范围映射,以及 scope 参数请求的可选客户端范围。
12.6.4. 评估客户端范围
mapper s 选项卡包含 protocol mappers,Scope 选项卡包含为此客户端声明的角色范围映射。它们不包含从客户端范围继承的 mappers 和范围映射。可以查看有效协议映射程序(即客户端本身中定义的协议映射程序以及从链接的客户端范围继承)以及为客户端生成令牌时使用的有效角色范围映射。
流程
- 点 客户端的客户端范围 选项卡。
- 打开"子选项卡 评估 "
- 选择您要应用的可选客户端范围。
这也会显示 scope 参数的值。此参数需要从应用程序发送到 Red Hat Single Sign-On OpenID Connect 授权端点。
评估客户端范围
要为应用程序发送 范围 参数的自定义值,请参阅 参数转发部分,用于 servlet 适配器或 javascript adapter 部分,以用于 javascript 适配器。
所有示例是为特定用户生成的,并为特定客户端发布,其值用于指定的 scope 参数。这个示例包括使用的所有声明和角色映射。
12.6.5. 客户端范围权限
向用户发出令牌时,仅当用户被允许使用令牌时,客户端范围才会生效。
当客户端范围没有定义任何角色范围映射时,允许每个用户使用此客户端范围。但是,当客户端范围定义了角色范围映射时,用户必须至少是其中一个角色的成员。用户角色和客户端范围的角色之间必须有一个交集。复合角色工厂用于评估此交集。
如果用户不允许使用客户端范围,则在生成令牌时不会使用协议映射程序或角色范围映射。客户端范围不会出现在令牌中的 范围 值中。
12.6.6. realm 默认客户端范围
使用 Realm Default Client Scopes 定义自动链接到新创建的客户端的客户端范围集。
流程
- 点 客户端的客户端范围 选项卡。
- 点 Default Client Scopes。
从这里,选择您要作为默认客户端范围添加到新创建的 客户端范围 和可选客户端 范围 的客户端范围。
默认客户端范围
创建客户端时,如果需要,可以取消链接默认的客户端范围。这与删除 默认角色类似。
12.6.7. 范围解释
- 客户端范围
- 客户端范围是 Red Hat Single Sign-On 中的实体,这些实体在 realm 级别配置,并可链接到客户端。当请求发送到 Red Hat Single Sign-On 授权端点时,客户端范围会引用,其值为 scope 参数。如需了解更多详细信息,请参阅 客户端范围链接 部分。
- 角色范围映射
- 这可以在客户端或客户端范围的 Scope 选项卡中提供。使用角色范围映射 来限制可在访问令牌中使用的角色。如需了解更多详细信息 ,请参阅角色范围映射部分。