搜索

15.4. 只读用户属性

download PDF

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

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

  • 与用户存储供应商相关的各种链接或元数据。例如,如果是 LDAP 集成,LDAP_ID 属性包含 LDAP 服务器中用户的 ID。
  • User Storage 置备的元数据。例如,从 LDAP 置备的 createdTimestamp 应该始终是用户或管理员只读的。
  • 与各种验证器相关的元数据。例如,KERBEROS_PRINCIPAL 属性可以包含特定用户的 kerberos 主体名称。同样的属性 usercertificate 可以包含与从 X.509 证书绑定数据相关的元数据,这通常在启用 X.509 证书验证时使用。
  • 应用程序/客户端与用户识别器相关的元数据。例如,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.for <.> , 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*

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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.