|
20 | 20 | import static org.mockito.BDDMockito.given;
|
21 | 21 | import static org.mockito.ArgumentMatchers.any;
|
22 | 22 | import static org.mockito.Mockito.mock;
|
23 |
| -import static org.mockito.Mockito.times; |
24 | 23 | import static org.mockito.Mockito.verify;
|
25 | 24 | import static org.mockito.Mockito.verifyZeroInteractions;
|
26 | 25 | import static org.mockito.Mockito.when;
|
27 | 26 | import static org.springframework.security.config.Customizer.withDefaults;
|
28 | 27 |
|
29 | 28 | import java.util.Arrays;
|
30 |
| -import java.util.Collections; |
31 | 29 | import java.util.List;
|
32 | 30 | import java.util.Objects;
|
33 | 31 | import java.util.Optional;
|
|
43 | 41 | import org.springframework.security.core.Authentication;
|
44 | 42 | import org.springframework.security.web.authentication.preauth.x509.X509PrincipalExtractor;
|
45 | 43 | import org.springframework.security.web.server.authentication.ServerX509AuthenticationConverter;
|
46 |
| -import org.springframework.web.server.handler.FilteringWebHandler; |
47 | 44 | import reactor.core.publisher.Mono;
|
48 | 45 | import reactor.test.publisher.TestPublisher;
|
49 | 46 |
|
50 | 47 | import org.springframework.security.authentication.ReactiveAuthenticationManager;
|
51 | 48 | import org.springframework.security.authentication.TestingAuthenticationToken;
|
52 | 49 | import org.springframework.security.config.annotation.web.reactive.ServerHttpSecurityConfigurationBuilder;
|
53 | 50 | import org.springframework.security.core.context.SecurityContext;
|
54 |
| -import org.springframework.security.oauth2.client.ClientAuthorizationRequiredException; |
55 |
| -import org.springframework.security.oauth2.client.registration.ClientRegistration; |
56 |
| -import org.springframework.security.oauth2.client.registration.ReactiveClientRegistrationRepository; |
57 |
| -import org.springframework.security.oauth2.client.registration.TestClientRegistrations; |
58 |
| -import org.springframework.security.oauth2.client.web.server.OAuth2AuthorizationRequestRedirectWebFilter; |
59 |
| -import org.springframework.security.oauth2.client.web.server.ServerAuthorizationRequestRepository; |
60 |
| -import org.springframework.security.oauth2.core.endpoint.OAuth2AuthorizationRequest; |
61 | 51 | import org.springframework.security.test.web.reactive.server.WebTestClientBuilder;
|
62 | 52 | import org.springframework.security.web.server.SecurityWebFilterChain;
|
63 | 53 | import org.springframework.security.web.server.WebFilterChainProxy;
|
64 |
| -import org.springframework.security.web.server.authentication.AnonymousAuthenticationWebFilterTests; |
65 |
| -import org.springframework.security.web.server.authentication.HttpBasicServerAuthenticationEntryPoint; |
66 | 54 | import org.springframework.security.web.server.authentication.logout.DelegatingServerLogoutHandler;
|
67 | 55 | import org.springframework.security.web.server.authentication.logout.LogoutWebFilter;
|
68 | 56 | import org.springframework.security.web.server.authentication.logout.SecurityContextServerLogoutHandler;
|
69 | 57 | import org.springframework.security.web.server.authentication.logout.ServerLogoutHandler;
|
70 |
| -import org.springframework.security.web.server.context.SecurityContextServerWebExchangeWebFilter; |
71 | 58 | import org.springframework.security.web.server.context.ServerSecurityContextRepository;
|
72 | 59 | import org.springframework.security.web.server.context.WebSessionServerSecurityContextRepository;
|
73 | 60 | import org.springframework.security.web.server.csrf.CsrfServerLogoutHandler;
|
74 | 61 | import org.springframework.security.web.server.csrf.CsrfWebFilter;
|
75 | 62 | import org.springframework.security.web.server.csrf.ServerCsrfTokenRepository;
|
76 |
| -import org.springframework.security.web.server.savedrequest.ServerRequestCache; |
77 | 63 | import org.springframework.test.util.ReflectionTestUtils;
|
78 | 64 | import org.springframework.test.web.reactive.server.EntityExchangeResult;
|
79 | 65 | import org.springframework.test.web.reactive.server.FluxExchangeResult;
|
|
82 | 68 | import org.springframework.web.bind.annotation.RestController;
|
83 | 69 | import org.springframework.web.server.ServerWebExchange;
|
84 | 70 | import org.springframework.web.server.WebFilter;
|
| 71 | +import org.springframework.security.web.server.context.SecurityContextServerWebExchangeWebFilter; |
85 | 72 | import org.springframework.web.server.WebFilterChain;
|
| 73 | +import org.springframework.security.web.server.authentication.AnonymousAuthenticationWebFilterTests; |
| 74 | +import org.springframework.security.web.server.authentication.HttpBasicServerAuthenticationEntryPoint; |
86 | 75 |
|
87 | 76 | /**
|
88 | 77 | * @author Rob Winch
|
@@ -486,71 +475,6 @@ public void postWhenCustomCsrfTokenRepositoryThenUsed() {
|
486 | 475 | verify(customServerCsrfTokenRepository).loadToken(any());
|
487 | 476 | }
|
488 | 477 |
|
489 |
| - @SuppressWarnings("UnassignedFluxMonoInstance") |
490 |
| - @Test |
491 |
| - public void configureOAuth2LoginUsingCustomCommonServerRequestCache() { |
492 |
| - ServerRequestCache requestCacheMock = mock(ServerRequestCache.class); |
493 |
| - when(requestCacheMock.saveRequest(any(ServerWebExchange.class))).thenReturn(Mono.empty()); |
494 |
| - |
495 |
| - ClientRegistration clientRegistration = TestClientRegistrations.clientRegistration().build(); |
496 |
| - String registrationId = clientRegistration.getRegistrationId(); |
497 |
| - |
498 |
| - ReactiveClientRegistrationRepository clientRegistrationRepositoryMock = |
499 |
| - mock(ReactiveClientRegistrationRepository.class); |
500 |
| - when(clientRegistrationRepositoryMock.findByRegistrationId(registrationId)) |
501 |
| - .thenReturn(Mono.just(clientRegistration)); |
502 |
| - |
503 |
| - SecurityWebFilterChain filterChain = http.requestCache().requestCache(requestCacheMock) |
504 |
| - .and().oauth2Login().clientRegistrationRepository(clientRegistrationRepositoryMock) |
505 |
| - .and().build(); |
506 |
| - |
507 |
| - Optional<OAuth2AuthorizationRequestRedirectWebFilter> redirectWebFilter = |
508 |
| - getWebFilter(filterChain, OAuth2AuthorizationRequestRedirectWebFilter.class); |
509 |
| - assertThat(redirectWebFilter.isPresent()).isTrue(); |
510 |
| - |
511 |
| - FilteringWebHandler webHandler = new FilteringWebHandler( |
512 |
| - e -> Mono.error(new ClientAuthorizationRequiredException(registrationId)), |
513 |
| - Collections.singletonList(redirectWebFilter.get()) |
514 |
| - ); |
515 |
| - WebTestClient client = WebTestClient.bindToWebHandler(webHandler).build(); |
516 |
| - client.get().uri("/foo/bar").exchange(); |
517 |
| - verify(requestCacheMock, times(1)).saveRequest(any(ServerWebExchange.class)); |
518 |
| - } |
519 |
| - |
520 |
| - @Test(expected = IllegalArgumentException.class) |
521 |
| - public void throwExceptionWhenNullPassedForOAuth2LoginAuthorizationRequestRepository() { |
522 |
| - http.oauth2Login().authorizationRequestRepository(null).and().build(); |
523 |
| - } |
524 |
| - |
525 |
| - @SuppressWarnings({"UnassignedFluxMonoInstance", "unchecked"}) |
526 |
| - @Test |
527 |
| - public void configureOAuth2LoginUsingCustomAuthorizationRequestRepository() { |
528 |
| - ClientRegistration clientRegistration = TestClientRegistrations.clientRegistration().build(); |
529 |
| - String registrationId = clientRegistration.getRegistrationId(); |
530 |
| - |
531 |
| - ReactiveClientRegistrationRepository clientRegistrationRepositoryMock = |
532 |
| - mock(ReactiveClientRegistrationRepository.class); |
533 |
| - when(clientRegistrationRepositoryMock.findByRegistrationId(registrationId)) |
534 |
| - .thenReturn(Mono.just(clientRegistration)); |
535 |
| - |
536 |
| - ServerAuthorizationRequestRepository requestRepositoryMock = mock(ServerAuthorizationRequestRepository.class); |
537 |
| - SecurityWebFilterChain filterChain = http.oauth2Login() |
538 |
| - .clientRegistrationRepository(clientRegistrationRepositoryMock) |
539 |
| - .authorizationRequestRepository(requestRepositoryMock) |
540 |
| - .and().build(); |
541 |
| - |
542 |
| - Optional<OAuth2AuthorizationRequestRedirectWebFilter> redirectWebFilter = |
543 |
| - getWebFilter(filterChain, OAuth2AuthorizationRequestRedirectWebFilter.class); |
544 |
| - assertThat(redirectWebFilter.isPresent()).isTrue(); |
545 |
| - |
546 |
| - WebTestClient client = WebTestClient.bindToController(new SubscriberContextController()) |
547 |
| - .webFilter(redirectWebFilter.get()) |
548 |
| - .build(); |
549 |
| - client.get().uri("/oauth2/authorization/" + registrationId).exchange(); |
550 |
| - verify(requestRepositoryMock, times(1)).saveAuthorizationRequest(any(OAuth2AuthorizationRequest.class), |
551 |
| - any(ServerWebExchange.class)); |
552 |
| - } |
553 |
| - |
554 | 478 | private boolean isX509Filter(WebFilter filter) {
|
555 | 479 | try {
|
556 | 480 | Object converter = ReflectionTestUtils.getField(filter, "authenticationConverter");
|
|
0 commit comments