搜索

12.4. OIDC 令牌和 SAML 断言映射

download PDF

接收 ID 令牌、访问令牌或 SAML 断言的应用程序可能需要不同的角色和用户元数据。

您可以使用红帽构建的 Keycloak 进行以下操作:

  • 硬编码角色、声明和自定义属性。
  • 将用户元数据拉取到令牌或断言中。
  • 重命名角色。

您可以在管理控制台的 Mappers 选项卡中执行这些操作。

Mappers 标签页

mappers oidc

新客户端没有内置映射程序,但可以从客户端范围继承一些映射程序。如需了解更多详细信息,请参阅 客户端范围部分

协议映射器将项目(如电子邮件地址)映射到身份和访问令牌中的特定声明。映射器的功能应该从其名称中自我解释。您可以通过单击 Add Builtin 来添加预先配置的映射程序。

每个映射程序都有一组通用设置。根据映射程序类型,提供了其他设置。点 mapper 旁边的 Edit 来访问配置屏幕来调整这些设置。

映射器配置

mapper config

将鼠标悬停在工具提示上,可以查看每个选项的详情。

您可以使用大多数 OIDC 映射器来控制声明的放置位置。您可以通过调整 Add to ID 令牌和 Add to access token ,从 id 和 access tokens 中包括或排除声明。

您可以按照以下方法添加映射程序类型:

流程

  1. 转至 Mappers 选项卡。
  2. 单击 Configure a new mapper

    添加映射器

    add mapper

  3. 从列表框中选择一个 映射程序类型

12.4.1. 优先级顺序

映射程序实施具有 优先级顺序优先级顺序 不是映射程序的配置属性。它是映射程序的 concrete 实现的属性。

Mappers 按照映射程序列表中的顺序进行排序。令牌或断言中的更改会按照首先应用最低的顺序应用。因此,依赖于其他实现的实现会按照必要顺序进行处理。

例如,要计算令牌中包含的角色:

  1. 基于这些角色解决受众。
  2. 处理使用令牌中已提供的角色和受众的 JavaScript 脚本。

12.4.2. OIDC 用户会话备注映射程序

用户会话详情使用映射程序定义,并在客户端上启用功能时自动包含。点 Add builtin,使其包含会话详情。

模拟的用户会话提供以下详情:

  • IMPERSONATOR_ID :模拟用户的 ID。
  • IMPERSONATOR_USERNAME :模拟用户的用户名。

服务帐户会话提供以下详情:

  • clientId :服务帐户的客户端 ID。
  • client_id :服务帐户的客户端 ID。
  • clientAddress :服务帐户验证设备的远程主机 IP。
  • clientHost :服务帐户验证的设备的远程主机名。

12.4.3. 脚本映射器

通过运行用户定义的 JavaScript 代码,使用 Script Mapper 将声明映射到令牌。有关向服务器部署脚本的更多详细信息,请参阅 JavaScript Providers

当脚本部署时,您可以从可用映射器列表中选择部署的脚本。

12.4.4. 使用轻量级访问令牌

红帽构建的 Keycloak 中的访问令牌包含敏感信息,包括个人 Identifiable 信息(PII)。因此,如果资源服务器不希望将此类信息披露给客户端等第三方实体,红帽构建的 Keycloak 支持从访问令牌中删除 PII 的轻量级访问令牌。另外,当资源服务器从访问令牌中删除了 PII 时,它可以通过向 Keycloak 的令牌内省端点的红帽构建发送访问令牌来获取 PII。

无法从轻量级访问令牌中删除的信息
协议映射器可以控制哪些信息被放入访问令牌中,而轻量级访问令牌则使用协议映射器。因此,不能从轻量级访问中删除以下信息。
exp,iat,auth_time,jti,iss,sub,typ,azp,nonce,session_state,sid,scope cnf
在红帽构建的 Keycloak 中使用轻量级访问令牌
通过将 use-lightweight-access-token executor 应用到客户端,客户端可以接收轻量级访问令牌,而不是访问令牌。???轻量级访问令牌包含一个由协议映射器控制的声明,其设置 设为轻量级访问令牌(默认为 OFF)被打开。另外,通过将其设置 Add 切换到 协议映射器的令牌内省,客户端可以通过将访问令牌发送到红帽构建的 Keycloak 令牌内省端点来获取声明。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.