如何从 Keycloak JWT 访问令牌中删除属性?
Posted
技术标签:
【中文标题】如何从 Keycloak JWT 访问令牌中删除属性?【英文标题】:How to remove attributes from the Keycloak JWT access token? 【发布时间】:2021-11-23 15:55:02 【问题描述】:默认情况下,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】:正确配置映射器和客户端范围。每个范围都有自己的一组已配置协议映射器,这可能会添加额外的声明。例如。 email
默认作用域:
请记住:范围也可以是默认值,因此它们将被隐式执行,而无需在身份验证请求中明确定义:
【讨论】:
谢谢@Jan Garaj。我可以使用您提到的方法消除 email_verified 和其他一些字段。但是acr和azp仍然是象征性的。是否也可以删除它们? @sinaaskarnejad acr/azp 对您来说可能是不必要的声明,但它们对于使用的 OIDC 协议具有技术意义。我猜你不能禁用它们。以上是关于如何从 Keycloak JWT 访问令牌中删除属性?的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 Java/Kotlin API 从 KeyCloak 请求 JWT 令牌