Добавление токена авторизации внутри @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 токен после успешной авторизации?


Ответы (0 шт):