Add support for oauth2Login().securityContextRepository(...)
Fixes gh-7222
This commit is contained in:
		
							parent
							
								
									bbefc491b2
								
							
						
					
					
						commit
						0410bac559
					
				| 
						 | 
				
			
			@ -972,6 +972,8 @@ public class ServerHttpSecurity {
 | 
			
		|||
 | 
			
		||||
		private ReactiveAuthenticationManager authenticationManager;
 | 
			
		||||
 | 
			
		||||
		private ServerSecurityContextRepository securityContextRepository = new WebSessionServerSecurityContextRepository();
 | 
			
		||||
 | 
			
		||||
		private ServerAuthenticationConverter authenticationConverter;
 | 
			
		||||
 | 
			
		||||
		private ServerOAuth2AuthorizationRequestResolver authorizationRequestResolver;
 | 
			
		||||
| 
						 | 
				
			
			@ -993,6 +995,19 @@ public class ServerHttpSecurity {
 | 
			
		|||
			return this;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		/**
 | 
			
		||||
		 * The {@link ServerSecurityContextRepository} used to save the {@code Authentication}. Defaults to
 | 
			
		||||
		 * {@link WebSessionServerSecurityContextRepository}.
 | 
			
		||||
		 *
 | 
			
		||||
		 * @since 5.2
 | 
			
		||||
		 * @param securityContextRepository the repository to use
 | 
			
		||||
		 * @return the {@link OAuth2LoginSpec} to continue configuring
 | 
			
		||||
		 */
 | 
			
		||||
		public OAuth2LoginSpec securityContextRepository(ServerSecurityContextRepository securityContextRepository) {
 | 
			
		||||
			this.securityContextRepository = securityContextRepository;
 | 
			
		||||
			return this;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		/**
 | 
			
		||||
		 * The {@link ServerAuthenticationSuccessHandler} used after authentication success. Defaults to
 | 
			
		||||
		 * {@link RedirectServerAuthenticationSuccessHandler} redirecting to "/".
 | 
			
		||||
| 
						 | 
				
			
			@ -1138,7 +1153,7 @@ public class ServerHttpSecurity {
 | 
			
		|||
 | 
			
		||||
			authenticationFilter.setAuthenticationSuccessHandler(this.authenticationSuccessHandler);
 | 
			
		||||
			authenticationFilter.setAuthenticationFailureHandler(this.authenticationFailureHandler);
 | 
			
		||||
			authenticationFilter.setSecurityContextRepository(new WebSessionServerSecurityContextRepository());
 | 
			
		||||
			authenticationFilter.setSecurityContextRepository(this.securityContextRepository);
 | 
			
		||||
 | 
			
		||||
			MediaTypeServerWebExchangeMatcher htmlMatcher = new MediaTypeServerWebExchangeMatcher(
 | 
			
		||||
					MediaType.TEXT_HTML);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -426,6 +426,9 @@ public class OAuth2LoginTests {
 | 
			
		|||
		ServerAuthenticationConverter converter = config.authenticationConverter;
 | 
			
		||||
		when(converter.convert(any())).thenReturn(Mono.just(token));
 | 
			
		||||
 | 
			
		||||
		ServerSecurityContextRepository securityContextRepository = config.securityContextRepository;
 | 
			
		||||
		when(securityContextRepository.save(any(), any())).thenReturn(Mono.empty());
 | 
			
		||||
 | 
			
		||||
		Map<String, Object> additionalParameters = new HashMap<>();
 | 
			
		||||
		additionalParameters.put(OidcParameterNames.ID_TOKEN, "id-token");
 | 
			
		||||
		OAuth2AccessTokenResponse accessTokenResponse = OAuth2AccessTokenResponse.withToken(accessToken.getTokenValue())
 | 
			
		||||
| 
						 | 
				
			
			@ -447,6 +450,7 @@ public class OAuth2LoginTests {
 | 
			
		|||
 | 
			
		||||
		verify(config.jwtDecoderFactory).createDecoder(any());
 | 
			
		||||
		verify(tokenResponseClient).getTokenResponse(any());
 | 
			
		||||
		verify(securityContextRepository).save(any(), any());
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Configuration
 | 
			
		||||
| 
						 | 
				
			
			@ -461,6 +465,8 @@ public class OAuth2LoginTests {
 | 
			
		|||
 | 
			
		||||
		ReactiveJwtDecoderFactory<ClientRegistration> jwtDecoderFactory = spy(new JwtDecoderFactory());
 | 
			
		||||
 | 
			
		||||
		ServerSecurityContextRepository securityContextRepository = mock(ServerSecurityContextRepository.class);
 | 
			
		||||
 | 
			
		||||
		@Bean
 | 
			
		||||
		public SecurityWebFilterChain springSecurityFilter(ServerHttpSecurity http) {
 | 
			
		||||
			// @formatter:off
 | 
			
		||||
| 
						 | 
				
			
			@ -470,7 +476,8 @@ public class OAuth2LoginTests {
 | 
			
		|||
					.and()
 | 
			
		||||
				.oauth2Login()
 | 
			
		||||
					.authenticationConverter(authenticationConverter)
 | 
			
		||||
					.authenticationManager(authenticationManager());
 | 
			
		||||
					.authenticationManager(authenticationManager())
 | 
			
		||||
					.securityContextRepository(securityContextRepository);
 | 
			
		||||
			return http.build();
 | 
			
		||||
			// @formatter:on
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue