Я использую 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.