Spring Boot 2.0 OAuth2 Client - получение токена на предъявителя между сеансами - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть базовое приложение OAuth2:

@Configuration
@EnableOAuth2Sso
@Order(0)
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    public void configure(HttpSecurity http) throws Exception {
        http.csrf().disable().authorizeRequests()
                .antMatchers("/actuator/health", "/", "/noauth", "/login").permitAll()
                .anyRequest().authenticated().and()
                .oauth2Login().defaultSuccessUrl("/auth");
    }
}

Это хорошо работает для одного экземпляра, и я могу запросить OAuth2AuthorizedClient детали:

Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
OAuth2AuthenticationToken oauthToken = (OAuth2AuthenticationToken) authentication;
OAuth2AuthorizedClient client = clientService.loadAuthorizedClient(
    oauthToken.getAuthorizedClientRegistrationId(), oauthToken.getName());

// Gets an OAuth2 token
client.getAccessToken().getTokenValue()

Однако, если язапустите это в среде микросервисов (> 1 экземпляр), тогда client всегда будет нулевым.Аутентификация также не работает правильно в этом случае.

Я использую библиотеку org.springframework.security:spring-security-oauth2-jose и аутентифицируюсь с помощью Google.

Любые подсказки о том, как сохранить токен носителя между сеансами (или обновитьэто если его там нет)?

...