Keycloak 15.0.0配置只读用户属性不生效,问题出在哪?
配置不生效的3个常见原因及修复方案
1. 配置文件不匹配
Keycloak 15官方镜像默认启动加载的是standalone.xml,你在CLI脚本中指定修改的是standalone-ha.xml,只有启动容器时明确指定集群模式才会加载该配置,你写的规则实际没有写入生效配置。
修复方式二选一:
- 把CLI脚本第一行的
--server-config=standalone-ha.xml改成--server-config=standalone.xml - 启动容器时添加参数指定加载ha配置:
docker run [你的其他启动参数] jboss/keycloak:15.0.0 -c standalone-ha.xml
2. 只读规则默认不限制管理员操作
你配置的read-only-attributes参数默认仅拦截普通用户通过自服务接口修改自身属性的请求,如果你用Postman调用接口时使用的是带管理员权限的Token,默认不会被拦截。
如果需要同时限制管理员修改该属性,在你的CLI脚本中额外添加一行配置:
/subsystem=keycloak-server/spi=userProfile/provider=legacy-user-profile/:map-put(name=properties,key=read-only-attributes-for-admin,value=[myUserAttribute])
3. 用户配置文件功能未全局启用
Keycloak 15中用户配置文件属于预览功能,需要添加启动参数显式开启才能生效:
docker run [你的其他启动参数] -e JAVA_OPTS_APPEND="-Dkeycloak.profile.feature.user_profile=enabled" jboss/keycloak:15.0.0
验证方法
修改配置后重建镜像启动容器,使用普通用户的Access Token调用自服务更新接口PUT /auth/realms/{你的域}/account,如果返回属性不可编辑的报错则配置生效。
内容的提问来源于stack exchange,提问作者Robin
相关产品推荐
相关产品推荐

