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

3
默认情况下,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等等...
1个回答

4

请正确配置映射器和客户端范围。每个范围都有其自己的一组已配置的协议映射器,这可能会添加其他声明。例如,默认情况下电子邮件范围:

enter image description here

记住:作用域也可以是默认的,因此它们将隐式执行,无需在授权请求中明确定义:

enter image description here


谢谢@Jan Garaj。我可以使用您提到的方法消除email_verified和其他一些字段。但是acr和azp仍然在令牌中。是否也可以将它们删除? - Sina Askarnejad
@sinaaskarnejad,acr/azp对你来说可能是不必要的声明,但它们在使用OIDC协议时具有技术含义。我猜你不能禁用它们。 - Jan Garaj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接