Страницы

Поиск по вопросам

пятница, 27 декабря 2019 г.

Spring Security OAuth2

#java #spring #spring_security #oauth2


Есть сервис с авторизацией через OAuth2 (например, vk.com). Есть clientId и clientSecret.
Нужно написать демона, который будет делать какие-то запросы к API сервиса.

Возможно ли это сделать в фоновом режиме и автоматически получать access_token по
истечению срока? Например, многие сервисы после авторизации больше не запрашивают данные
пользователя.

UPD. Мне нужно сохранять access_token (например, в БД), а потом из обычного потока
работать с OAuth2RestTemplate.

public void run() {
    // access_token = получаем из БД сохраненный access_token.
    // создаем restTemplate из access_token
    while (true) {
        Map map = restTemplate.getForObject(..., Map.class);
    }
}

    


Ответы

Ответ 1



После долгих попыток рецепт получился следующим. Получаем access_token из базы данных в новом потоке; Оборачиваем его в DefaultOAuth2AccessToken; Создаем DefaultOAuth2ClientContext и добавляем в него DefaultOAuth2AccessToken; Создаем OAuth2RestTemplate с настройками и установленным контекстом. Выполняем запросы и ловим UserRedirectRequiredException. Исключение означает, что ключ больше не валидный и нужно запросить новый у пользователя через контроллер.

Комментариев нет:

Отправить комментарий