@@ -268,7 +268,7 @@ public class ServerHttpSecurity {
268
268
269
269
private ReactiveAuthenticationManager authenticationManager ;
270
270
271
- private ServerSecurityContextRepository securityContextRepository = new WebSessionServerSecurityContextRepository () ;
271
+ private ServerSecurityContextRepository securityContextRepository ;
272
272
273
273
private ServerAuthenticationEntryPoint authenticationEntryPoint ;
274
274
@@ -346,7 +346,7 @@ private ServerWebExchangeMatcher getSecurityMatcher() {
346
346
}
347
347
348
348
/**
349
- * The strategy used with {@code ReactorContextWebFilter}. It does not impact how the {@code SecurityContext} is
349
+ * The strategy used with {@code ReactorContextWebFilter}. It does impact how the {@code SecurityContext} is
350
350
* saved which is configured on a per {@link AuthenticationWebFilter} basis.
351
351
* @param securityContextRepository the repository to use
352
352
* @return the {@link ServerHttpSecurity} to continue configuring
@@ -971,7 +971,7 @@ public class OAuth2LoginSpec {
971
971
972
972
private ReactiveAuthenticationManager authenticationManager ;
973
973
974
- private ServerSecurityContextRepository securityContextRepository = new WebSessionServerSecurityContextRepository () ;
974
+ private ServerSecurityContextRepository securityContextRepository ;
975
975
976
976
private ServerAuthenticationConverter authenticationConverter ;
977
977
@@ -2254,9 +2254,7 @@ public SecurityWebFilterChain build() {
2254
2254
this .headers .configure (this );
2255
2255
}
2256
2256
WebFilter securityContextRepositoryWebFilter = securityContextRepositoryWebFilter ();
2257
- if (securityContextRepositoryWebFilter != null ) {
2258
- this .webFilters .add (securityContextRepositoryWebFilter );
2259
- }
2257
+ this .webFilters .add (securityContextRepositoryWebFilter );
2260
2258
if (this .httpsRedirectSpec != null ) {
2261
2259
this .httpsRedirectSpec .configure (this );
2262
2260
}
@@ -2273,18 +2271,42 @@ public SecurityWebFilterChain build() {
2273
2271
if (this .httpBasic .authenticationManager == null ) {
2274
2272
this .httpBasic .authenticationManager (this .authenticationManager );
2275
2273
}
2274
+ if (this .httpBasic .securityContextRepository != null ) {
2275
+ this .httpBasic .securityContextRepository (this .httpBasic .securityContextRepository );
2276
+ }
2277
+ else if (this .securityContextRepository != null ) {
2278
+ this .httpBasic .securityContextRepository (this .securityContextRepository );
2279
+ }
2280
+ else {
2281
+ this .httpBasic .securityContextRepository (NoOpServerSecurityContextRepository .getInstance ());
2282
+ }
2276
2283
this .httpBasic .configure (this );
2277
2284
}
2278
2285
if (this .formLogin != null ) {
2279
2286
if (this .formLogin .authenticationManager == null ) {
2280
2287
this .formLogin .authenticationManager (this .authenticationManager );
2281
2288
}
2282
- if (this .securityContextRepository != null ) {
2289
+ if (this .formLogin .securityContextRepository != null ) {
2290
+ this .formLogin .securityContextRepository (this .formLogin .securityContextRepository );
2291
+ }
2292
+ else if (this .securityContextRepository != null ) {
2283
2293
this .formLogin .securityContextRepository (this .securityContextRepository );
2284
2294
}
2295
+ else {
2296
+ this .formLogin .securityContextRepository (new WebSessionServerSecurityContextRepository ());
2297
+ }
2285
2298
this .formLogin .configure (this );
2286
2299
}
2287
2300
if (this .oauth2Login != null ) {
2301
+ if (this .oauth2Login .securityContextRepository != null ) {
2302
+ this .oauth2Login .securityContextRepository (this .oauth2Login .securityContextRepository );
2303
+ }
2304
+ else if (this .securityContextRepository != null ) {
2305
+ this .oauth2Login .securityContextRepository (this .securityContextRepository );
2306
+ }
2307
+ else {
2308
+ this .oauth2Login .securityContextRepository (new WebSessionServerSecurityContextRepository ());
2309
+ }
2288
2310
this .oauth2Login .configure (this );
2289
2311
}
2290
2312
if (this .resourceServer != null ) {
@@ -2379,10 +2401,8 @@ public static ServerHttpSecurity http() {
2379
2401
}
2380
2402
2381
2403
private WebFilter securityContextRepositoryWebFilter () {
2382
- ServerSecurityContextRepository repository = this .securityContextRepository ;
2383
- if (repository == null ) {
2384
- return null ;
2385
- }
2404
+ ServerSecurityContextRepository repository = this .securityContextRepository == null ?
2405
+ new WebSessionServerSecurityContextRepository () : this .securityContextRepository ;
2386
2406
WebFilter result = new ReactorContextWebFilter (repository );
2387
2407
return new OrderedWebFilter (result , SecurityWebFiltersOrder .REACTOR_CONTEXT .getOrder ());
2388
2408
}
@@ -2774,7 +2794,7 @@ private RequestCacheSpec() {}
2774
2794
public class HttpBasicSpec {
2775
2795
private ReactiveAuthenticationManager authenticationManager ;
2776
2796
2777
- private ServerSecurityContextRepository securityContextRepository = NoOpServerSecurityContextRepository . getInstance () ;
2797
+ private ServerSecurityContextRepository securityContextRepository ;
2778
2798
2779
2799
private ServerAuthenticationEntryPoint entryPoint = new HttpBasicServerAuthenticationEntryPoint ();
2780
2800
@@ -2846,9 +2866,7 @@ protected void configure(ServerHttpSecurity http) {
2846
2866
this .authenticationManager );
2847
2867
authenticationFilter .setAuthenticationFailureHandler (new ServerAuthenticationEntryPointFailureHandler (this .entryPoint ));
2848
2868
authenticationFilter .setAuthenticationConverter (new ServerHttpBasicAuthenticationConverter ());
2849
- if (this .securityContextRepository != null ) {
2850
- authenticationFilter .setSecurityContextRepository (this .securityContextRepository );
2851
- }
2869
+ authenticationFilter .setSecurityContextRepository (this .securityContextRepository );
2852
2870
http .addFilterAt (authenticationFilter , SecurityWebFiltersOrder .HTTP_BASIC );
2853
2871
}
2854
2872
@@ -2869,7 +2887,7 @@ public class FormLoginSpec {
2869
2887
2870
2888
private ReactiveAuthenticationManager authenticationManager ;
2871
2889
2872
- private ServerSecurityContextRepository securityContextRepository = new WebSessionServerSecurityContextRepository () ;
2890
+ private ServerSecurityContextRepository securityContextRepository ;
2873
2891
2874
2892
private ServerAuthenticationEntryPoint authenticationEntryPoint ;
2875
2893
@@ -2966,7 +2984,7 @@ public FormLoginSpec authenticationFailureHandler(ServerAuthenticationFailureHan
2966
2984
2967
2985
/**
2968
2986
* The {@link ServerSecurityContextRepository} used to save the {@code Authentication}. Defaults to
2969
- * {@link NoOpServerSecurityContextRepository }. For the {@code SecurityContext} to be loaded on subsequent
2987
+ * {@link WebSessionServerSecurityContextRepository }. For the {@code SecurityContext} to be loaded on subsequent
2970
2988
* requests the {@link ReactorContextWebFilter} must be configured to be able to load the value (they are not
2971
2989
* implicitly linked).
2972
2990
*
0 commit comments