带有 keycloak 的最小 jwt 令牌负载

Minimal jwt token payload with keycloak

在我的公司,我们正在尝试使用 Keycloak 生成一个具有最小负载的 jwt 令牌,其中只有用户角色、电子邮件和令牌的到期时间。 我们需要使用这个最小负载,因为我们有性能限制我不想进一步解释。

可能吗?以及如何?

我们正在使用 Keycloak v7.0.0 并尝试使用映射器进行不同的操作以仅公开我们需要的内容,但没有成功。

编辑:通过删除默认范围内的所有内容,我仍然得到很多我不需要的东西

{
  "jti": "ac6f9ed1-e33b-4204-affc-c5992c600ead",
  "exp": 1571741519,
  "nbf": 0,
  "iat": 1571741219,
  "iss": "http://keycloak:8080/auth/realms/test",
  "sub": "c530d809-fabf-44a7-b186-1d095321edf7",
  "typ": "Bearer",
  "azp": "web_app",
  "auth_time": 0,
  "session_state": "83ce24ff-9e2f-4775-ae2c-066935b7ffa9",
  "acr": "1",
  "scope": "openid"
}

我想要一个看起来像这样的负载

{
 "exp": 1571741519,
 "email": "john@doe.com"
 "groups": ["ROLE_USER"]
}

我正在研究添加验证器 SPI

您应该从默认客户端范围中删除除角色和 role_list 之外的所有内容。

通过添加脚本映射器,我们可以从有效负载中删除大量信息。

token.setIssuer(null)

删除 iss 键

token.notBefore(null)

将 nbf 键设置为 0

您可以查看令牌 JavaDoc 以获取有关可以更改的内容的更多信息。