如何在Keycloak生成的JWT Token中添加Realm ID
在Keycloak 19.0.1中把Realm ID添加到JWT Token的方法
因为Keycloak 19.0.1没有自带Realm ID的预定义映射器,你可以通过自定义脚本映射器来实现,步骤如下:
- 登录Keycloak管理控制台,切换到你需要配置的Realm。
- 如果你想复用这个映射器给多个客户端,先去「客户端范围」页面创建一个新的客户端范围(比如命名为
realm-id-scope);如果只给单个客户端用,直接进入目标客户端的配置页面。 - 进入对应客户端范围/客户端的「映射器」标签页,点击「创建」按钮。
- 在映射器配置页面:
- 映射器类型选择「Script Mapper」。
- 填写名称,比如「Realm ID 映射器」。
- 脚本类型选择「Token Mapper」。
- 在脚本框中输入以下代码,把Realm ID添加到JWT的
realm_id字段(字段名可以根据你的需求修改):var realmId = realm.getId(); token.setClaim("realm_id", realmId); - 在「Token类型」部分勾选你需要添加该字段的Token类型(比如「Access Token」和「ID Token」)。
- 保存配置后,把客户端范围关联到目标客户端(如果用了客户端范围的话),之后生成的JWT里就会包含Realm ID字段了。
另外需要注意:如果你的Keycloak实例禁用了脚本功能,需要先开启。可以在Realm设置的「Features」标签里找到「Script Mapper」并勾选启用,或者在配置文件中设置spi-scripting-enabled=true(具体取决于你的部署方式)。
内容的提问来源于stack exchange,提问作者Fadi
相关产品推荐
相关产品推荐

