无法启用Keycloak只读用户属性的问题

5
我尝试按照文档 https://www.keycloak.org/docs/latest/server_admin/ 启用Keycloak中的只读用户属性,但是文档中的配置实际上并不能防止用户更改其属性。
我使用来自docker hub的常规Docker镜像的 Keycloak 15.0.0 版本。创建了一个 .cli 文件并将其添加到我的 Docker 镜像中,然后进行构建。
FROM jboss/keycloak:15.0.0
ADD RESTRICT_USER_ATTRIBUTES.cli /opt/jboss/startup-scripts/

以下是RESTRICT_USER_ATTRIBUTES.cli文件的内容:

embed-server --server-config=standalone-ha.xml --std-out=echo

batch

/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=[myUserAttribute])

run-batch

stop-embedded-server

.cli文件会根据日志进行处理。 我可以进入docker实例并使用jboss-cli.sh检查配置。 但最终用户可以使用Postman或其他工具自由编辑myUserAttribute。

我在这里做错了什么?

2个回答

4

我刚刚遇到了这个问题,而且似乎文档已经过时了。他们很可能在15.0.0版本中更改了提供程序的名称。

尝试将你的cli脚本更改为:

# ...

/subsystem=keycloak-server/spi=userProfile/:add
/subsystem=keycloak-server/spi=userProfile/provider=declarative-user-profile/:add(properties={},enabled=true)
/subsystem=keycloak-server/spi=userProfile/provider=declarative-user-profile/:map-put(name=properties,key=read-only-attributes,value=[myUserAttribute])

# ...


谢谢!我们遇到了同样的问题。我们完全同意,文档已经过时了。"declarative-user-profile"是正确的,而"legacy-user-profile"不再正确。 - Stefan Brendle
我正在使用Keycloak 16.1.1,我不得不给它一个字符串而不是列表:map-put(name=properties,key=read-only-attributes,value=myUserAttribute) - Alex

0
针对 Keycloak > 20.0.3,请查看我修复文档的 PR。

可以通过环境变量在容器运行时进行配置。 例如在 Dockerfile

ENV KC_SPI_USER_PROFILE_DECLARATIVE_USER_PROFILE_READ_ONLY_ATTRIBUTES=sm_*

或者通过参数传递给kc.sh

--spi-user-profile-declarative-user-profile-read-only-attributes=sm_*

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接