Commit 39ed1572 authored by Madhura Bhave's avatar Madhura Bhave

Configure oauth2client in Reactive OAuth2 client auto-config

Closes gh-18385
parent 15eeedb5
...@@ -86,6 +86,7 @@ class ReactiveOAuth2ClientConfigurations { ...@@ -86,6 +86,7 @@ class ReactiveOAuth2ClientConfigurations {
SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) { SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
http.authorizeExchange().anyExchange().authenticated(); http.authorizeExchange().anyExchange().authenticated();
http.oauth2Login(); http.oauth2Login();
http.oauth2Client();
return http.build(); return http.build();
} }
......
...@@ -18,7 +18,6 @@ package org.springframework.boot.autoconfigure.security.oauth2.client.reactive; ...@@ -18,7 +18,6 @@ package org.springframework.boot.autoconfigure.security.oauth2.client.reactive;
import java.time.Duration; import java.time.Duration;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
...@@ -46,6 +45,7 @@ import org.springframework.security.oauth2.client.registration.ClientRegistratio ...@@ -46,6 +45,7 @@ import org.springframework.security.oauth2.client.registration.ClientRegistratio
import org.springframework.security.oauth2.client.registration.InMemoryReactiveClientRegistrationRepository; import org.springframework.security.oauth2.client.registration.InMemoryReactiveClientRegistrationRepository;
import org.springframework.security.oauth2.client.registration.ReactiveClientRegistrationRepository; import org.springframework.security.oauth2.client.registration.ReactiveClientRegistrationRepository;
import org.springframework.security.oauth2.client.web.server.AuthenticatedPrincipalServerOAuth2AuthorizedClientRepository; import org.springframework.security.oauth2.client.web.server.AuthenticatedPrincipalServerOAuth2AuthorizedClientRepository;
import org.springframework.security.oauth2.client.web.server.OAuth2AuthorizationCodeGrantWebFilter;
import org.springframework.security.oauth2.client.web.server.ServerOAuth2AuthorizedClientRepository; import org.springframework.security.oauth2.client.web.server.ServerOAuth2AuthorizedClientRepository;
import org.springframework.security.oauth2.client.web.server.authentication.OAuth2LoginAuthenticationWebFilter; import org.springframework.security.oauth2.client.web.server.authentication.OAuth2LoginAuthenticationWebFilter;
import org.springframework.security.oauth2.core.AuthorizationGrantType; import org.springframework.security.oauth2.core.AuthorizationGrantType;
...@@ -153,8 +153,10 @@ class ReactiveOAuth2ClientAutoConfigurationTests { ...@@ -153,8 +153,10 @@ class ReactiveOAuth2ClientAutoConfigurationTests {
.withConfiguration(AutoConfigurations.of(ReactiveOAuth2ClientAutoConfiguration.class)) .withConfiguration(AutoConfigurations.of(ReactiveOAuth2ClientAutoConfiguration.class))
.withUserConfiguration(ReactiveOAuth2AuthorizedClientServiceConfiguration.class, .withUserConfiguration(ReactiveOAuth2AuthorizedClientServiceConfiguration.class,
ServerHttpSecurityConfiguration.class) ServerHttpSecurityConfiguration.class)
.run((context) -> assertThat(getFilters(context, OAuth2LoginAuthenticationWebFilter.class)) .run((context) -> {
.isNotNull()); assertThat(hasFilter(context, OAuth2LoginAuthenticationWebFilter.class)).isTrue();
assertThat(hasFilter(context, OAuth2AuthorizationCodeGrantWebFilter.class)).isTrue();
});
} }
@Test @Test
...@@ -181,12 +183,11 @@ class ReactiveOAuth2ClientAutoConfigurationTests { ...@@ -181,12 +183,11 @@ class ReactiveOAuth2ClientAutoConfigurationTests {
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
private List<WebFilter> getFilters(AssertableReactiveWebApplicationContext context, private boolean hasFilter(AssertableReactiveWebApplicationContext context, Class<? extends WebFilter> filter) {
Class<? extends WebFilter> filter) {
SecurityWebFilterChain filterChain = (SecurityWebFilterChain) context SecurityWebFilterChain filterChain = (SecurityWebFilterChain) context
.getBean(BeanIds.SPRING_SECURITY_FILTER_CHAIN); .getBean(BeanIds.SPRING_SECURITY_FILTER_CHAIN);
List<WebFilter> filters = (List<WebFilter>) ReflectionTestUtils.getField(filterChain, "filters"); List<WebFilter> filters = (List<WebFilter>) ReflectionTestUtils.getField(filterChain, "filters");
return filters.stream().filter(filter::isInstance).collect(Collectors.toList()); return filters.stream().anyMatch(filter::isInstance);
} }
@Configuration(proxyBeanMethods = false) @Configuration(proxyBeanMethods = false)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment