Register OAuth2AuthorizedClientRepository bean
This commit is contained in:
parent
b163120ece
commit
2dcf19938d
|
|
@ -25,6 +25,8 @@ import org.springframework.security.config.annotation.web.configuration.WebSecur
|
|||
import org.springframework.security.oauth2.client.InMemoryOAuth2AuthorizedClientService;
|
||||
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientService;
|
||||
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
|
||||
import org.springframework.security.oauth2.client.web.AuthenticatedPrincipalOAuth2AuthorizedClientRepository;
|
||||
import org.springframework.security.oauth2.client.web.OAuth2AuthorizedClientRepository;
|
||||
|
||||
/**
|
||||
* {@link WebSecurityConfigurerAdapter} to add OAuth client support.
|
||||
|
|
@ -44,6 +46,13 @@ class OAuth2WebSecurityConfiguration {
|
|||
return new InMemoryOAuth2AuthorizedClientService(clientRegistrationRepository);
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public OAuth2AuthorizedClientRepository authorizedClientRepository(
|
||||
OAuth2AuthorizedClientService authorizedClientService) {
|
||||
return new AuthenticatedPrincipalOAuth2AuthorizedClientRepository(authorizedClientService);
|
||||
}
|
||||
|
||||
@Configuration
|
||||
@ConditionalOnMissingBean(WebSecurityConfigurerAdapter.class)
|
||||
static class OAuth2WebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ import javax.servlet.Filter;
|
|||
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.boot.test.context.assertj.AssertableApplicationContext;
|
||||
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
|
||||
|
|
@ -38,7 +39,9 @@ import org.springframework.security.oauth2.client.OAuth2AuthorizedClientService;
|
|||
import org.springframework.security.oauth2.client.registration.ClientRegistration;
|
||||
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
|
||||
import org.springframework.security.oauth2.client.registration.InMemoryClientRegistrationRepository;
|
||||
import org.springframework.security.oauth2.client.web.AuthenticatedPrincipalOAuth2AuthorizedClientRepository;
|
||||
import org.springframework.security.oauth2.client.web.OAuth2AuthorizationRequestRedirectFilter;
|
||||
import org.springframework.security.oauth2.client.web.OAuth2AuthorizedClientRepository;
|
||||
import org.springframework.security.oauth2.client.web.OAuth2LoginAuthenticationFilter;
|
||||
import org.springframework.security.oauth2.core.AuthorizationGrantType;
|
||||
import org.springframework.security.web.FilterChainProxy;
|
||||
|
|
@ -90,6 +93,19 @@ public class OAuth2WebSecurityConfigurationTests {
|
|||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void configurationRegistersAuthorizedRepositoryServiceBean() {
|
||||
this.contextRunner.withUserConfiguration(ClientRepositoryConfiguration.class,
|
||||
OAuth2WebSecurityConfiguration.class).run((context) -> {
|
||||
OAuth2AuthorizedClientRepository bean = context
|
||||
.getBean(OAuth2AuthorizedClientRepository.class);
|
||||
OAuth2AuthorizedClientRepository authorizedClientService = (OAuth2AuthorizedClientRepository) ReflectionTestUtils
|
||||
.getField(getAuthCodeFilters(context).get(0),
|
||||
"authorizedClientRepository");
|
||||
assertThat(authorizedClientService).isEqualTo(bean);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void securityConfigurerBacksOffWhenOtherWebSecurityAdapterPresent() {
|
||||
this.contextRunner.withUserConfiguration(TestWebSecurityConfigurerConfig.class,
|
||||
|
|
@ -112,6 +128,21 @@ public class OAuth2WebSecurityConfigurationTests {
|
|||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void authorizedClientRepositoryBeanIsConditionalOnMissingBean() {
|
||||
this.contextRunner
|
||||
.withUserConfiguration(OAuth2AuthorizedClientServiceConfiguration.class,
|
||||
OAuth2WebSecurityConfiguration.class)
|
||||
.run((context) -> {
|
||||
OAuth2AuthorizedClientRepository bean = context
|
||||
.getBean(OAuth2AuthorizedClientRepository.class);
|
||||
OAuth2AuthorizedClientRepository authorizedClientService = (OAuth2AuthorizedClientRepository) ReflectionTestUtils
|
||||
.getField(getAuthCodeFilters(context).get(0),
|
||||
"authorizedClientRepository");
|
||||
assertThat(authorizedClientService).isEqualTo(bean);
|
||||
});
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private List<Filter> getAuthCodeFilters(AssertableApplicationContext context) {
|
||||
FilterChainProxy filterChain = (FilterChainProxy) context
|
||||
|
|
@ -210,6 +241,13 @@ public class OAuth2WebSecurityConfigurationTests {
|
|||
clientRegistrationRepository);
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
public OAuth2AuthorizedClientRepository testAuthorizedClientRepository(
|
||||
OAuth2AuthorizedClientService authorizedClientService) {
|
||||
return new AuthenticatedPrincipalOAuth2AuthorizedClientRepository(authorizedClientService);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue