Как добавить дополнительную информацию в ответ `/ oauth / token`? - PullRequest
0 голосов
/ 24 февраля 2020

Я использую spring-security-oauth2 - 2.3.5.RELEASE, и я хотел добавить дополнительную информацию в ответ токена доступа для аутентификации. Я проверил много вопросов и ответов на них в StackOverflow, но ни один из них не помог мне получить дополнительную информацию вместе с AccessToken. То, что я сделал, это:

Реализация пользовательского токена Enhancer

public class CustomTokenEnhancer implements TokenEnhancer {
    @Override
    public OAuth2AccessToken enhance(OAuth2AccessToken oAuth2AccessToken, OAuth2Authentication oAuth2Authentication) {
        final Map<String, Object> additionalInfo = new HashMap<>();
        DefaultOAuth2AccessToken defaultOAuth2AccessToken = (DefaultOAuth2AccessToken) oAuth2AccessToken;
        additionalInfo.put("checkProperty", null);
        defaultOAuth2AccessToken.setAdditionalInformation(additionalInfo);
        return defaultOAuth2AccessToken;
    }
}

Расширенная авторизацияServerConfigurerAdapter

public class AuthServerOAuth2Config extends AuthorizationServerConfigurerAdapter

Обновлен endpoints и добавлен Token Enhancer

 @Override
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) {
        logger.info("AuthorizationServerEndpointsConfigurer {}", endpoints);
        final TokenEnhancerChain tokenEnhancerChain = new TokenEnhancerChain();
        tokenEnhancerChain.setTokenEnhancers(Arrays.asList(customTokenEnhancer()));
        endpoints
                .tokenStore(tokenStore())
                .tokenEnhancer(tokenEnhancerChain)
                .accessTokenConverter(accessTokenConverter())
                .authenticationManager(authenticationManager);
                .userDetailsService(userDetailsService);
    }

Написаны необходимые компоненты

   @Bean
    public DefaultAccessTokenConverter accessTokenConverter() {
        return new DefaultAccessTokenConverter();
    }

    @Bean
    TokenEnhancer customTokenEnhancer() {
        return new CustomTokenEnhancer();
    }

Я не знаю, чего не хватает в этом реализации, но я не могу вставить это checkProperty в ответ.

Пожалуйста, помогите мне здесь выяснить, где я делаю неправильно или чего не хватает.

PS: У меня есть доступ к AuthServer, я могу внести изменения в него, если это необходимо. Кроме того, я отлаживал весь процесс, но он не достиг точек останова в Token Enhancer.

...