You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keycloak 26.1.2如何在组织声明中添加用户属性?

在Keycloak的Token组织声明中添加用户属性的实现方法

直接设置organization.department作为声明名无效,是因为Keycloak默认映射器不支持直接给嵌套对象的属性赋值,可通过以下两种方式实现:

方法一:使用Script Mapper(推荐,灵活适配嵌套结构)

  1. 登录Keycloak控制台,进入目标客户端,切换到「Mappers」标签页,点击「Create」。
  2. 选择Mapper Type为「Script Mapper」,设置参数:
    • Name:自定义名称(如Organization with Department)
    • Token Claim Name:organization
    • Claim JSON Type:Object
  3. 在「Script」编辑框中编写脚本,构建嵌套的组织对象:
    var orgObj = {};
    var orgaDetail = {};
    
    // 获取用户关联的组织ID(根据实际存储位置调整,比如用户属性、组属性)
    orgaDetail.id = user.getFirstAttribute('organization_id');
    // 获取用户的department属性
    orgaDetail.department = user.getFirstAttribute('department');
    
    orgObj.orga = orgaDetail;
    return orgObj;
    
  4. 保存映射器后,删除或禁用原来自动生成organization声明的映射器,避免重复冲突。

方法二:使用User Attribute Mapper(仅部分Keycloak新版本支持)

  1. 在客户端「Mappers」页面创建新映射器,选择Mapper Type为「User Attribute」。
  2. 设置参数:
    • Attribute Name:用户属性名称(如department)
    • Token Claim Name:organization.orga.department
    • Claim JSON Type:String
  3. 保存后测试Token,若嵌套路径不生效,说明版本不支持,建议改用方法一。

注意事项

  • 确保用户的department属性已在Keycloak用户管理界面正确添加并赋值。
  • 生成Token后,用JWT解析工具验证结构是否符合预期。

内容的提问来源于stack exchange,提问作者Revanth Shalon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 06:28:12