Как обрабатывать токены обновления с истекающим сроком действия в шаблоне Spring Boot Rest. - PullRequest
2 голосов
/ 27 мая 2019

Я работаю над интеграцией стороннего API в мое весеннее загрузочное приложение.

Как работает аутентификация стороннего API:

  1. После первоначальной авторизации мне предоставляетсяс токеном обновления и токеном доступа, срок действия которого истекает через определенное время
  2. После истечения срока действия токена доступа я использую токен обновления, чтобы получить новый токен доступа И новый токен обновления

С помощьютекущий токен доступа. Я могу выполнять вызовы API.

Есть ли способ беспрепятственной обработки такого случая с помощью RestTemplate?

Я пытался обработать этот случай вручную, поэтому, если я вернул 401 обратноиз API я отправил запрос на обновление токена, переписал ключи, которые я получил, и повторил запрос, не очень уверенный, как обращаться с хранением ключей API в случае, если мне нужно перезапустить сервер.

1 Ответ

2 голосов
/ 27 мая 2019

Это легко сделать с помощью ClientHttpRequestInterceptor, в котором вы можете легко заменить заголовок запроса, если, например, 401 произошло:

@Override
public ClientHttpResponse intercept(
  HttpRequest request, 
  byte[] body, 
  ClientHttpRequestExecution execution) throws IOException {

    ClientHttpResponse response = execution.execute(request, body);
    if(response.getStatusCode() == HttpStatus.UNAUTHORIZED) {
       request.getHeaders().replace("Auth-Header", getNewToken());
       return execution.execute(request, body);
    }
    return response;
}

См. здесь для получения дальнейших указаний.

...