15.4. 只读用户属性


存储在红帽构建的 Keycloak 中的典型用户具有与其用户配置集相关的各种属性。此类属性包括 email、firstName 或 lastName。但是,用户也可以有属性,它们不是典型的配置集数据,而不是元数据。元数据属性通常为用户只读,而典型的用户从红帽构建的 Keycloak 用户界面或帐户 REST API 中更新这些属性。在使用 Admin REST API 创建或更新用户时,一些属性甚至应该对管理员进行只读。

元数据属性通常是来自这些组中的属性:

  • 与用户存储提供程序相关的各种链接或元数据。例如,如果 LDAP 集成,LDAP_ID 属性包含 LDAP 服务器中的用户的 ID。
  • 数据存储调配的元数据。例如,从 LDAP 置备的 createdTimestamp 应该始终由用户或管理员只读。
  • 与各种验证器相关的元数据。例如,KERBEROS_PRINCIPAL 属性可以包含特定用户的 kerberos 主体名称。同样的属性 usercertificate 可以包含与将用户与 X.509 证书数据绑定相关的元数据,该证书通常在启用 X.509 证书身份验证时使用。
  • 与由 application/clients 的用户识别器相关的元数据。例如 saml.persistent.name.id.for.my_app 可以包含 SAML NameID,它将供客户端应用程序 my_app 用作用户的标识符。
  • 与授权策略相关的元数据,用于基于属性的访问控制(ABAC)。这些属性的值可用于授权决策。因此,务必要确保用户无法由用户更新这些属性。

从长期的角度来看,红帽构建的 Keycloak 将具有正确的用户配置文件 SPI,这将允许精细配置每个用户属性。目前,此功能还没有完全可用。因此,Red Hat build of Keycloak 具有用户属性的内部列表,这些属性对于用户是只读的,管理员在服务器级别上配置只读。

这是只读属性的列表,由红帽构建的 Keycloak 默认供应商和功能在内部使用,因此始终是只读的:

  • 对于用户: KERBEROS_PRINCIPAL,LDAP_ID,LDAP_ENTRY_DN,CREATED_TIMESTAMP,createTimestamp,modifyTimestamp,userCertificate,saml.persistent.name.id. 用于 ENABLED , ENABLED,EMAIL_VERIFIED
  • 对于管理员: KERBEROS_PRINCIPAL,LDAP_ID,LDAP_ENTRY_DN,CREATED_TIMESTAMP,createTimestamp,modifyTimestamp

系统管理员有向此列表添加额外属性的方法。配置目前在服务器级别可用。

您可以使用 spi-user-profile-declarative-user-profile-read-only-attributes'spi-user-profile-declarative-user-profile-admin-read-only-attributes 选项来添加此配置。例如:

kc.[sh|bat] start --spi-user-profile-declarative-user-profile-read-only-attributes=foo,bar*
Copy to Clipboard Toggle word wrap

在本例中,用户和管理员将无法更新属性 foo。用户将无法编辑以 bar 开头的任何属性。例如 barbarrier。配置不区分大小写,因此 FOOBarRier 等属性也会被拒绝。通配符字符仅在属性名称末尾被支持,因此管理员可以有效地拒绝以指定字符开头的所有属性。属性中 中间的 192.168.1.0/24 被视为普通字符。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat