将 additional_information of oauth_client_details 的数据添加到 JWT

Add data from additional_information of oauth_client_details to JWT

我正在通过客户注册服务填写 oauth_client_details table。我在 additional_information 字段中以 JSON 格式放置一些数据。

insert into oauth_client_details(client_id, client_secret, ..., additional_information) values
    ('app-client-id', 'app-client-secret', ..., '{"special-id":"abc-123"}');

我想将该数据存储在 JWT 中,但找不到访问它的方法。我看到它在 JdbcClientDetailsService.loadClientByClientId 和相关的 RowMapper 中被加载和解析但是当我的令牌增强器被调用时数据不存在:

static class MyTokenEnhancer implements TokenEnhancer {
    @Override
    public OAuth2AccessToken enhance(OAuth2AccessToken accessToken, OAuth2Authentication authentication) {
        // accessToken.additionalInformation is an empty map here!
        return accessToken;
    }
}

流程中还有其他点可以让我访问 special-id 的值并将其注入 JWT 吗?

我只能通过在oauth_client_details中添加一个自定义字段来解决这个问题,在TokenEnhancer.enhance()中再次加载详细记录(Spring这次加载了6次记录,所以另一个无关紧要),然后像往常一样将我的自定义字段中的值添加到 JWT。

我本可以使用 additional_information 字段来存储我的自定义数据,但是我需要解析 JSON。我认为这样做没有意义。