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

如何在Keycloak的JWT中包含子组信息

解决JWT中包含子组信息的方法

针对你遇到的问题(用户分配到父组后,JWT未包含子组信息),可以按以下步骤调整Keycloak的配置:

  • 检查Group Membership映射器的关键配置

    1. 进入对应客户端的「Mappers」标签页,找到已添加的「Group Membership」映射器
    2. 勾选**「Full group path」**选项——这个选项默认关闭,关闭时仅返回用户直接归属的组;开启后会递归返回所有层级的父组、子组的完整路径
    3. 若不需要完整路径,可同时开启「Strip realm role prefix」(按需),或修改「Token Claim Name」自定义返回字段名
  • 确认组继承关系有效性

    1. 进入Keycloak的「Groups」页面,找到MainGroup,检查「Subgroups」列表是否正确包含Group_A和Group_B
    2. 确保用户是直接分配到MainGroup,且Keycloak默认的组继承逻辑未被自定义权限策略干扰(默认情况下父组成员会自动继承子组关联)
  • 自定义脚本映射器(按需实现更灵活的组信息输出)
    如果需要自定义组信息的格式(比如仅返回子组名称、过滤特定组),可以添加「Script Mapper」:

    1. 在客户端Mappers页面点击「Create」,选择「Script Mapper」类型
    2. 设置「Token Claim Name」(例如groups),并勾选要应用的Token类型(JWT)
    3. 在脚本编辑框中写入递归收集子组的逻辑:
      var groups = [];
      function collectAllGroups(group) {
          groups.push(group.name);
          if (group.subGroups && group.subGroups.length > 0) {
              group.subGroups.forEach(sub => collectAllGroups(sub));
          }
      }
      user.groups.forEach(g => collectAllGroups(g));
      token.setClaim("groups", groups);
      
    4. 保存配置后,重新生成JWT即可看到包含所有子组的信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 14:39:54