Keycloak v12客户端角色自定义属性如何配置为多值数组?
Keycloak v12.0.2角色自定义属性单键多值实现方案
结论
Keycloak v12.0.2版本底层原生支持单属性键对应多值数组,仅官方管理控制台的可视化配置页未提供多值输入入口,你可以通过Admin REST API实现需求,无需在应用侧自行拆分字符串。
具体操作步骤
- 第一步:获取目标角色的唯一标识
你可以直接从管理控制台打开角色编辑页时的地址栏中提取角色ID,也可以调用如下接口获取:GET /{realm}/clients/{client-uuid}/roles/{role-name} - 第二步:调用角色更新接口写入多值属性
调用PUT接口更新角色配置:PUT /{realm}/clients/{client-uuid}/roles/{role-name}
请求Body中attributes字段直接传入数组结构即可,示例:
配置完成后,后续令牌内省、用户信息接口返回的属性结构就会完全符合你的预期。{ "name": "你的角色名", "attributes": { "foo": ["bar", "baz"] } }
替代方案
如果不想调用API,也可以继续使用自定义分隔符的方案,建议选择||、##等业务场景中几乎不会用到的字符作为分隔符,避免拆分时和属性内容冲突。该方案适合需要运营人员直接在控制台配置属性的场景。
补充说明:Keycloak自18.0.0版本开始,官方管理控制台的属性配置页新增了多值属性的可视化输入入口,升级到对应版本后可直接在控制台完成配置,无需调用API。
内容的提问来源于stack exchange,提问作者MCMLXXXII
相关产品推荐
相关产品推荐

