У меня есть два приложения Spring: a Служба аутентификации и Бизнес-сервис.Spring, Oauth2: данные аутентификации потеряны после обновления токена
Когда пользователь вебсервис аутентификацию на Authentication Service, он получает access_token
и refresh_token
. Он может обновить свой access_token
, отправив refresh_token
на услугу. Сервис реализует AuthenticationProvider
, там детали аутентификации устанавливаются:
@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
UsernamePasswordAuthenticationToken newAuthentication = ...;
LinkedHashMap<String, Object> detailsMap = (LinkedHashMap<String, Object>) authentication.getDetails();
detailsMap.put(...);
newAuthentication.setDetails(detailsMap);
return newAuthentication;
}
Бизнес Сервис обеспечивается Oauth2
. Ее контроллер содержит
@Secured({ SOME_ROLE })
@RequestMapping(...)
public ResponseEntity<?> doSomething(OAuth2Authentication authentication) {
LinkedHashMap<String, String> detailsMap = (LinkedHashMap<String, String>) authentication
.getUserAuthentication().getDetails();
Если пользователь вебсервис аутентификацию на Authentication Service и называет Business Service, detailsMap
будет содержать информацию, указанную в authenticate()
. Но если он обновит токен и снова вызовет Business Service, detailsMap
будет null
.
Я хочу, чтобы detailsMap
был сохранен после того, как токен был обновлен. Как я могу это достичь?