如何从 Keycloak JWT 访问令牌中删除属性?

How to remove attributes from the Keycloak JWT access token?

默认情况下,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"
}

我们可以使用协议映射器来添加自定义字段,但是是否可以删除不需要的字段?例如我不想 acr, email_verified, azp, 等等...

正确配置映射器和客户端范围。每个作用域都有自己的一组配置协议映射器,可以添加额外的声明。例如。 email 默认范围:

请记住:范围也可以是默认的,因此它们将被隐式执行,而无需在身份验证请求中明确定义: