我已经设置了基本的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进行身份验证。
是否有任何关于如何在会话之间持久化承载令牌的提示(或者如果不存在,则刷新令牌)?