16.4. 只读用户属性


存储在 Red Hat Single Sign-On 中的典型用户都有各种与用户配置文件相关的属性。这些属性包括电子邮件、firstName 或 lastname。但是,用户也可能具有属性,它们不是典型配置集数据,而是元数据。元数据属性通常是用户的只读,且典型的用户绝不应该有从 Red Hat Single Sign-On 用户界面或帐户 REST API 更新这些属性的方法。使用 Admin REST API 创建或更新用户时,管理员应当甚至是只读属性。

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

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

从长期角度来看,Red Hat Single Sign-On 将具有适当的用户配置集 SPI,这将允许对每个用户属性进行精细配置。目前,这个功能还没有完全可用。因此,Red Hat Single Sign-On 具有用户的内部用户属性列表,这些属性是只读的,适用于在服务器级别配置的管理员。

这是只读属性的列表,这些属性由 Red Hat Single Sign-On 默认供应商及功能在内部使用,因此始终是只读的:

  • 用户: 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

系统管理员可以向此列表中添加其他属性。配置目前在服务器级别可用。您可以将此配置添加到 standalone (-*.xml 文件中到 Red Hat Single Sign-On server subsystem 的配置中:

<spi name="userProfile">
    <provider name="legacy-user-profile" enabled="true">
        <properties>
            <property name="read-only-attributes" value="[&quot;foo&quot;,&quot;bar*&quot;]"/>
            <property name="admin-read-only-attributes" value="[&quot;foo&quot;]"/>
        </properties>
    </provider>
</spi>
Copy to Clipboard Toggle word wrap

可使用 JBoss CLI 命令配置相同的方法:

/subsystem=keycloak-server/spi=userProfile/:add
/subsystem=keycloak-server/spi=userProfile/provider=legacy-user-profile/:add(properties={},enabled=true)
/subsystem=keycloak-server/spi=userProfile/provider=legacy-user-profile/:map-put(name=properties,key=read-only-attributes,value=[foo,bar*])
/subsystem=keycloak-server/spi=userProfile/provider=legacy-user-profile/:map-put(name=properties,key=admin-read-only-attributes,value=[foo])
Copy to Clipboard Toggle word wrap

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

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat