Добавление токена авторизации внутри @Bean RestTemplate
У меня есть @Bean RestTemplate, которому я в Interceptors хочу добавить токен от Spotify
@Bean()
public RestTemplate restTemplate(OAuth2AuthorizedClientService clientService) {
RestTemplate restTemplate = new RestTemplate();
String accessToken = authentication(clientService);
if (accessToken != null) {
restTemplate.getInterceptors().add(getBearerTokenInterceptor(accessToken));
} else {
restTemplate.getInterceptors().add(getNoTokenInterceptor());
}
return restTemplate;
}
Метод authentication:
public String authentication(OAuth2AuthorizedClientService clientService){
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication.getClass().isAssignableFrom(OAuth2AuthenticationToken.class)) {
OAuth2AuthenticationToken oauthToken = (OAuth2AuthenticationToken) authentication;
if (oauthToken.getAuthorizedClientRegistrationId().equals("spotify")) {
OAuth2AuthorizedClient client = clientService.loadAuthorizedClient(oauthToken.getAuthorizedClientRegistrationId(), oauthToken.getName());
if (client == null) {
clientService.removeAuthorizedClient(oauthToken.getAuthorizedClientRegistrationId(), oauthToken.getName());
} else {
return client.getAccessToken().getTokenValue();
}
}
}
return null;
}
Но при вызове SecurityContextHolder.getContext().getAuthentication() я получаю null. Очевидно, потому что при создании бина RestTemplate пользователь еще не авторизован. Как мне инжектнуть внутрь бина RestTemplate токен после успешной авторизации?