Spring Boot 2.0 OAuth2客户端-跨会话获取承载令牌

时间:2019-02-21 18:01:52

标签: spring spring-boot oauth-2.0 microservices spring-security-oauth2

我已经设置了基本的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将始终为null。在这种情况下,身份验证也无法正常工作。

我正在使用org.springframework.security:spring-security-oauth2-jose库并通过Google进行身份验证。

是否有任何关于如何在会话之间持久化承载令牌的提示(或者如果不存在,则刷新令牌)?

0 个答案:

没有答案