Skip to content

Commit cb9fd09

Browse files
committed
Change AuthenticationWebFilter's constructor
Fixes gh-7872
1 parent 7550907 commit cb9fd09

File tree

4 files changed

+21
-20
lines changed

4 files changed

+21
-20
lines changed

config/src/main/java/org/springframework/security/config/web/server/ServerHttpSecurity.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,6 @@
3131
import java.util.function.Function;
3232
import java.util.function.Supplier;
3333

34-
import org.springframework.security.oauth2.client.web.server.ServerAuthorizationRequestRepository;
35-
import org.springframework.security.oauth2.client.web.server.WebSessionOAuth2ServerAuthorizationRequestRepository;
3634
import reactor.core.publisher.Mono;
3735
import reactor.util.context.Context;
3836

@@ -44,7 +42,6 @@
4442
import org.springframework.core.convert.converter.Converter;
4543
import org.springframework.http.HttpMethod;
4644
import org.springframework.http.MediaType;
47-
import org.springframework.http.server.reactive.ServerHttpRequest;
4845
import org.springframework.security.authentication.AbstractAuthenticationToken;
4946
import org.springframework.security.authentication.DelegatingReactiveAuthenticationManager;
5047
import org.springframework.security.authentication.ReactiveAuthenticationManager;
@@ -1581,7 +1578,7 @@ public class OAuth2ResourceServerSpec {
15811578

15821579
private JwtSpec jwt;
15831580
private OpaqueTokenSpec opaqueToken;
1584-
private ReactiveAuthenticationManagerResolver<ServerHttpRequest> authenticationManagerResolver;
1581+
private ReactiveAuthenticationManagerResolver<ServerWebExchange> authenticationManagerResolver;
15851582

15861583
/**
15871584
* Configures the {@link ServerAccessDeniedHandler} to use for requests authenticating with
@@ -1631,10 +1628,10 @@ public OAuth2ResourceServerSpec bearerTokenConverter(ServerAuthenticationConvert
16311628
*
16321629
* @param authenticationManagerResolver the {@link ReactiveAuthenticationManagerResolver}
16331630
* @return the {@link OAuth2ResourceServerSpec} for additional configuration
1634-
* @since 5.2
1631+
* @since 5.3
16351632
*/
16361633
public OAuth2ResourceServerSpec authenticationManagerResolver(
1637-
ReactiveAuthenticationManagerResolver<ServerHttpRequest> authenticationManagerResolver) {
1634+
ReactiveAuthenticationManagerResolver<ServerWebExchange> authenticationManagerResolver) {
16381635
Assert.notNull(authenticationManagerResolver, "authenticationManagerResolver cannot be null");
16391636
this.authenticationManagerResolver = authenticationManagerResolver;
16401637
return this;

config/src/test/java/org/springframework/security/config/web/server/OAuth2ResourceServerSpecTests.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@
4949
import org.springframework.core.convert.converter.Converter;
5050
import org.springframework.http.HttpStatus;
5151
import org.springframework.http.MediaType;
52-
import org.springframework.http.server.reactive.ServerHttpRequest;
5352
import org.springframework.security.authentication.AbstractAuthenticationToken;
5453
import org.springframework.security.authentication.ReactiveAuthenticationManager;
5554
import org.springframework.security.authentication.ReactiveAuthenticationManagerResolver;
@@ -76,6 +75,7 @@
7675
import org.springframework.web.context.support.GenericWebApplicationContext;
7776
import org.springframework.web.reactive.DispatcherHandler;
7877
import org.springframework.web.reactive.config.EnableWebFlux;
78+
import org.springframework.web.server.ServerWebExchange;
7979

8080
import static org.assertj.core.api.Assertions.assertThat;
8181
import static org.assertj.core.api.Assertions.assertThatCode;
@@ -280,13 +280,13 @@ public void getWhenUsingCustomAuthenticationManagerInLambdaThenUsesItAccordingly
280280
public void getWhenUsingCustomAuthenticationManagerResolverThenUsesItAccordingly() {
281281
this.spring.register(CustomAuthenticationManagerResolverConfig.class).autowire();
282282

283-
ReactiveAuthenticationManagerResolver<ServerHttpRequest> authenticationManagerResolver =
283+
ReactiveAuthenticationManagerResolver<ServerWebExchange> authenticationManagerResolver =
284284
this.spring.getContext().getBean(ReactiveAuthenticationManagerResolver.class);
285285

286286
ReactiveAuthenticationManager authenticationManager =
287287
this.spring.getContext().getBean(ReactiveAuthenticationManager.class);
288288

289-
when(authenticationManagerResolver.resolve(any(ServerHttpRequest.class)))
289+
when(authenticationManagerResolver.resolve(any(ServerWebExchange.class)))
290290
.thenReturn(Mono.just(authenticationManager));
291291
when(authenticationManager.authenticate(any(Authentication.class)))
292292
.thenReturn(Mono.error(new OAuth2AuthenticationException(new OAuth2Error("mock-failure"))));
@@ -697,7 +697,7 @@ SecurityWebFilterChain springSecurity(ServerHttpSecurity http) {
697697
}
698698

699699
@Bean
700-
ReactiveAuthenticationManagerResolver<ServerHttpRequest> authenticationManagerResolver() {
700+
ReactiveAuthenticationManagerResolver<ServerWebExchange> authenticationManagerResolver() {
701701
return mock(ReactiveAuthenticationManagerResolver.class);
702702
}
703703

web/src/main/java/org/springframework/security/web/server/authentication/AuthenticationWebFilter.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717

1818
import java.util.function.Function;
1919

20-
import org.springframework.http.server.reactive.ServerHttpRequest;
20+
import reactor.core.publisher.Mono;
21+
2122
import org.springframework.security.authentication.ReactiveAuthenticationManager;
2223
import org.springframework.security.authentication.ReactiveAuthenticationManagerResolver;
2324
import org.springframework.security.core.Authentication;
@@ -34,8 +35,6 @@
3435
import org.springframework.web.server.WebFilter;
3536
import org.springframework.web.server.WebFilterChain;
3637

37-
import reactor.core.publisher.Mono;
38-
3938
/**
4039
* A {@link WebFilter} that performs authentication of a particular request. An outline of the logic:
4140
*
@@ -69,7 +68,7 @@
6968
* @since 5.0
7069
*/
7170
public class AuthenticationWebFilter implements WebFilter {
72-
private final ReactiveAuthenticationManagerResolver<ServerHttpRequest> authenticationManagerResolver;
71+
private final ReactiveAuthenticationManagerResolver<ServerWebExchange> authenticationManagerResolver;
7372

7473
private ServerAuthenticationSuccessHandler authenticationSuccessHandler = new WebFilterChainServerAuthenticationSuccessHandler();
7574

@@ -93,9 +92,9 @@ public AuthenticationWebFilter(ReactiveAuthenticationManager authenticationManag
9392
/**
9493
* Creates an instance
9594
* @param authenticationManagerResolver the authentication manager resolver to use
96-
* @since 5.2
95+
* @since 5.3
9796
*/
98-
public AuthenticationWebFilter(ReactiveAuthenticationManagerResolver<ServerHttpRequest> authenticationManagerResolver) {
97+
public AuthenticationWebFilter(ReactiveAuthenticationManagerResolver<ServerWebExchange> authenticationManagerResolver) {
9998
Assert.notNull(authenticationManagerResolver, "authenticationResolverManager cannot be null");
10099
this.authenticationManagerResolver = authenticationManagerResolver;
101100
}
@@ -113,7 +112,7 @@ private Mono<Void> authenticate(ServerWebExchange exchange,
113112
WebFilterChain chain, Authentication token) {
114113
WebFilterExchange webFilterExchange = new WebFilterExchange(exchange, chain);
115114

116-
return this.authenticationManagerResolver.resolve(exchange.getRequest())
115+
return this.authenticationManagerResolver.resolve(exchange)
117116
.flatMap(authenticationManager -> authenticationManager.authenticate(token))
118117
.switchIfEmpty(Mono.defer(() -> Mono.error(new IllegalStateException("No provider found for " + token.getClass()))))
119118
.flatMap(authentication -> onAuthenticationSuccess(authentication, webFilterExchange))

web/src/test/java/org/springframework/security/web/server/authentication/AuthenticationWebFilterTests.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import org.mockito.junit.MockitoJUnitRunner;
2424
import reactor.core.publisher.Mono;
2525

26-
import org.springframework.http.server.reactive.ServerHttpRequest;
2726
import org.springframework.security.authentication.BadCredentialsException;
2827
import org.springframework.security.authentication.ReactiveAuthenticationManager;
2928
import org.springframework.security.authentication.ReactiveAuthenticationManagerResolver;
@@ -34,9 +33,15 @@
3433
import org.springframework.security.web.server.util.matcher.ServerWebExchangeMatcher;
3534
import org.springframework.test.web.reactive.server.EntityExchangeResult;
3635
import org.springframework.test.web.reactive.server.WebTestClient;
36+
import org.springframework.web.server.ServerWebExchange;
3737

3838
import static org.assertj.core.api.Assertions.assertThat;
39-
import static org.mockito.Mockito.*;
39+
import static org.mockito.Mockito.any;
40+
import static org.mockito.Mockito.eq;
41+
import static org.mockito.Mockito.never;
42+
import static org.mockito.Mockito.verify;
43+
import static org.mockito.Mockito.verifyZeroInteractions;
44+
import static org.mockito.Mockito.when;
4045

4146
/**
4247
* @author Rob Winch
@@ -56,7 +61,7 @@ public class AuthenticationWebFilterTests {
5661
@Mock
5762
private ServerSecurityContextRepository securityContextRepository;
5863
@Mock
59-
private ReactiveAuthenticationManagerResolver<ServerHttpRequest> authenticationManagerResolver;
64+
private ReactiveAuthenticationManagerResolver<ServerWebExchange> authenticationManagerResolver;
6065

6166
private AuthenticationWebFilter filter;
6267

0 commit comments

Comments
 (0)