|
@@ -39,6 +39,10 @@ import org.mockito.Mock;
|
|
|
import org.mockito.junit.MockitoJUnitRunner;
|
|
|
|
|
|
import org.springframework.security.core.Authentication;
|
|
|
+import org.springframework.security.oauth2.client.registration.ReactiveClientRegistrationRepository;
|
|
|
+import org.springframework.security.oauth2.client.web.server.ServerAuthorizationRequestRepository;
|
|
|
+import org.springframework.security.oauth2.core.endpoint.OAuth2AuthorizationRequest;
|
|
|
+import org.springframework.security.oauth2.core.endpoint.TestOAuth2AuthorizationRequests;
|
|
|
import org.springframework.security.web.authentication.preauth.x509.X509PrincipalExtractor;
|
|
|
import org.springframework.security.web.server.authentication.ServerX509AuthenticationConverter;
|
|
|
import reactor.core.publisher.Mono;
|
|
@@ -475,6 +479,28 @@ public class ServerHttpSecurityTests {
|
|
|
verify(customServerCsrfTokenRepository).loadToken(any());
|
|
|
}
|
|
|
|
|
|
+ @Test
|
|
|
+ public void shouldConfigureAuthorizationRequestRepositoryForOAuth2Login() {
|
|
|
+ ServerAuthorizationRequestRepository<OAuth2AuthorizationRequest> authorizationRequestRepository = mock(ServerAuthorizationRequestRepository.class);
|
|
|
+ ReactiveClientRegistrationRepository clientRegistrationRepository = mock(ReactiveClientRegistrationRepository.class);
|
|
|
+
|
|
|
+ OAuth2AuthorizationRequest authorizationRequest = TestOAuth2AuthorizationRequests.request().build();
|
|
|
+
|
|
|
+ when(authorizationRequestRepository.removeAuthorizationRequest(any())).thenReturn(Mono.just(authorizationRequest));
|
|
|
+
|
|
|
+ SecurityWebFilterChain securityFilterChain = this.http
|
|
|
+ .oauth2Login()
|
|
|
+ .clientRegistrationRepository(clientRegistrationRepository)
|
|
|
+ .authorizationRequestRepository(authorizationRequestRepository)
|
|
|
+ .and()
|
|
|
+ .build();
|
|
|
+
|
|
|
+ WebTestClient client = WebTestClientBuilder.bindToWebFilters(securityFilterChain).build();
|
|
|
+ client.get().uri("/login/oauth2/code/registration-id").exchange();
|
|
|
+
|
|
|
+ verify(authorizationRequestRepository).removeAuthorizationRequest(any());
|
|
|
+ }
|
|
|
+
|
|
|
private boolean isX509Filter(WebFilter filter) {
|
|
|
try {
|
|
|
Object converter = ReflectionTestUtils.getField(filter, "authenticationConverter");
|