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

如何从Keycloak的JWT访问令牌中移除不需要的属性?

问题

默认情况下,Keycloak生成的令牌包含如下载荷:

{
  "jti": "71ac4939-03cb-4ce2-b072-08fa7e1b7f37",
  "exp": 1560239903,
  "nbf": 0,
  "iat": 1560239843,
  "iss": "http://localhost:8080/auth/realms/master",
  "sub": "d3ea1306-f0f9-4b25-b7c5-e64dfbdf949e",
  "typ": "Bearer",
  "azp": "admin-cli",
  "auth_time": 0,
  "session_state": "0162e8c3-25b3-4fd9-8416-e28bd27b61bd",
  "acr": "1",
  "scope": "email profile",
  "email_verified": false,
  "preferred_username": "admin"
}

我们可以使用protocol mapper添加自定义字段,但是否可以移除不需要的字段?例如不希望保留acr、email_verified、azp等字段。


解答

完全可以移除不需要的非核心字段,操作方法如下:

方法1:使用脚本映射器(全版本通用)

这是最灵活的方案,支持删除任意非核心字段:

  • 进入你要配置的Keycloak客户端详情页,切换到「Mapper」标签页,点击新建映射器
  • 「Mapper Type」选择「Script Mapper」,填写自定义映射器名称,勾选你要让配置生效的令牌类型(访问令牌/ID令牌按需勾选)
  • 在脚本输入框中填入以下逻辑,不需要的字段直接调用removeClaim方法删除即可:
// 删除示例字段
token.removeClaim('acr')
token.removeClaim('email_verified')
token.removeClaim('azp')
// 要删除其他字段继续追加对应语句即可
  • 保存配置后重新申请令牌,对应字段就会从载荷中消失。

方法2:禁用内置映射器(适合预置字段)

对于email_verified这类由内置映射器生成的字段,可以直接找到对应的映射器关闭开关即可:

  • 进入领域设置的「客户端作用域」,找到对应字段所属的作用域(比如email相关字段在email作用域下)
  • 进入对应作用域的Mapper列表,找到生成目标字段的映射器,直接禁用即可,或者取消「添加到访问令牌」「添加到ID令牌」的勾选。

注意:iss、exp、sub、iat这类属于JWT协议规定的必填核心字段,删除后会导致令牌无法被正常校验,不建议删除。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:18:03