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

如何通过pac4j库从Keycloak获取用户所属群组?

解决Keycloak群组信息获取问题

一、Keycloak客户端配置自定义映射器

默认情况下Keycloak不会自动将用户群组信息放入ID Token或Access Token,需要先在客户端配置映射器:

  • 登录Keycloak控制台,进入目标客户端
  • 切换到「Mappers」标签页,点击「Create」按钮
  • 填写映射器配置:
    • 名称:自定义名称,比如group-membership-mapper
    • 类型:选择「Group Membership」
    • Token Claim Name:设置为groups(或自定义名称,比如kc_groups,后续读取需对应)
    • 勾选「Add to ID token」和「Add to access token」
    • 按需勾选「Full group path」:需要完整群组路径则勾选,否则仅返回群组名称
    • 保存配置

二、pac4j端读取群组信息

配置完成后,用户登录后的ID Token/Access Token会包含群组数据,可通过OidcProfile实例读取:

// 从WebContext和SessionStore获取用户Profile
OidcProfile oidcProfile = (OidcProfile) WebContextUtils.getProfile(context, sessionStore);
// 根据之前设置的Token Claim Name读取群组列表
List<String> userGroups = oidcProfile.getAttribute("groups", List.class);

如果需要获取群组的额外属性(比如群组描述、自定义属性),可以在Keycloak中创建「Group Attribute」类型的映射器,指定要映射的群组属性和对应的Claim Name,之后同样通过oidcProfile.getAttribute()方法读取对应值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 00:07:04