Skip to content

Commit c1857c0

Browse files
committed
Fix Formatting
Issue gh-15771
1 parent 690e012 commit c1857c0

File tree

2 files changed

+136
-138
lines changed

2 files changed

+136
-138
lines changed

config/src/test/java/org/springframework/security/config/annotation/web/configurers/oauth2/client/OidcLogoutConfigurerTests.java

Lines changed: 64 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,6 @@
8585
import org.springframework.test.web.servlet.MockMvc;
8686
import org.springframework.test.web.servlet.MvcResult;
8787
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
88-
import org.springframework.util.StringUtils;
8988
import org.springframework.web.bind.annotation.GetMapping;
9089
import org.springframework.web.bind.annotation.PostMapping;
9190
import org.springframework.web.bind.annotation.RequestParam;
@@ -261,6 +260,22 @@ void logoutWhenCustomComponentsThenUses() throws Exception {
261260
verify(sessionRegistry).removeSessionInformation(any(OidcLogoutToken.class));
262261
}
263262

263+
@Test
264+
void logoutWhenProviderIssuerMissingThenThrowIllegalArgumentException() throws Exception {
265+
this.spring.register(WebServerConfig.class, OidcProviderConfig.class, ProviderIssuerMissingConfig.class)
266+
.autowire();
267+
String registrationId = this.clientRegistration.getRegistrationId();
268+
MockHttpSession session = login();
269+
String logoutToken = this.mvc.perform(get("/token/logout").session(session))
270+
.andExpect(status().isOk())
271+
.andReturn()
272+
.getResponse()
273+
.getContentAsString();
274+
assertThatIllegalArgumentException().isThrownBy(
275+
() -> this.mvc.perform(post(this.web.url("/logout/connect/back-channel/" + registrationId).toString())
276+
.param("logout_token", logoutToken)));
277+
}
278+
264279
private MockHttpSession login() throws Exception {
265280
MockMvcDispatcher dispatcher = (MockMvcDispatcher) this.web.getDispatcher();
266281
this.mvc.perform(get("/token/logout")).andExpect(status().isUnauthorized());
@@ -412,6 +427,54 @@ LogoutHandler logoutHandler() {
412427

413428
}
414429

430+
@Configuration
431+
static class ProviderIssuerMissingRegistrationConfig {
432+
433+
@Autowired(required = false)
434+
MockWebServer web;
435+
436+
@Bean
437+
ClientRegistration clientRegistration() {
438+
if (this.web == null) {
439+
return TestClientRegistrations.clientRegistration().issuerUri(null).build();
440+
}
441+
String issuer = this.web.url("/").toString();
442+
return TestClientRegistrations.clientRegistration()
443+
.issuerUri(null)
444+
.jwkSetUri(issuer + "jwks")
445+
.tokenUri(issuer + "token")
446+
.userInfoUri(issuer + "user")
447+
.scope("openid")
448+
.build();
449+
}
450+
451+
@Bean
452+
ClientRegistrationRepository clientRegistrationRepository(ClientRegistration clientRegistration) {
453+
return new InMemoryClientRegistrationRepository(clientRegistration);
454+
}
455+
456+
}
457+
458+
@Configuration
459+
@EnableWebSecurity
460+
@Import(ProviderIssuerMissingRegistrationConfig.class)
461+
static class ProviderIssuerMissingConfig {
462+
463+
@Bean
464+
@Order(1)
465+
SecurityFilterChain filters(HttpSecurity http) throws Exception {
466+
// @formatter:off
467+
http
468+
.authorizeHttpRequests((authorize) -> authorize.anyRequest().authenticated())
469+
.oauth2Login(Customizer.withDefaults())
470+
.oidcLogout((oidc) -> oidc.backChannel(Customizer.withDefaults()));
471+
// @formatter:on
472+
473+
return http.build();
474+
}
475+
476+
}
477+
415478
@Configuration
416479
@EnableWebSecurity
417480
@EnableWebMvc
@@ -650,69 +713,4 @@ private String getContentAsString(MockHttpServletResponse response) {
650713

651714
}
652715

653-
@Test
654-
void logoutWhenProviderIssuerMissingThenThrowIllegalArgumentException() throws Exception {
655-
this.spring.register(WebServerConfig.class, OidcProviderConfig.class, ProviderIssuerMissingConfig.class).autowire();
656-
String registrationId = this.clientRegistration.getRegistrationId();
657-
MockHttpSession session = login();
658-
String logoutToken = this.mvc.perform(get("/token/logout").session(session))
659-
.andExpect(status().isOk())
660-
.andReturn()
661-
.getResponse()
662-
.getContentAsString();
663-
assertThatIllegalArgumentException().isThrownBy(() -> {
664-
this.mvc
665-
.perform(post(this.web.url("/logout/connect/back-channel/" + registrationId).toString())
666-
.param("logout_token", logoutToken));
667-
});
668-
}
669-
670-
@Configuration
671-
static class ProviderIssuerMissingRegistrationConfig {
672-
673-
@Autowired(required = false)
674-
MockWebServer web;
675-
676-
@Bean
677-
ClientRegistration clientRegistration() {
678-
if (this.web == null) {
679-
return TestClientRegistrations.clientRegistration().issuerUri(null).build();
680-
}
681-
String issuer = this.web.url("/").toString();
682-
return TestClientRegistrations.clientRegistration()
683-
.issuerUri(null)
684-
.jwkSetUri(issuer + "jwks")
685-
.tokenUri(issuer + "token")
686-
.userInfoUri(issuer + "user")
687-
.scope("openid")
688-
.build();
689-
}
690-
691-
@Bean
692-
ClientRegistrationRepository clientRegistrationRepository(ClientRegistration clientRegistration) {
693-
return new InMemoryClientRegistrationRepository(clientRegistration);
694-
}
695-
696-
}
697-
698-
@Configuration
699-
@EnableWebSecurity
700-
@Import(ProviderIssuerMissingRegistrationConfig.class)
701-
static class ProviderIssuerMissingConfig {
702-
703-
@Bean
704-
@Order(1)
705-
SecurityFilterChain filters(HttpSecurity http) throws Exception {
706-
// @formatter:off
707-
http
708-
.authorizeHttpRequests((authorize) -> authorize.anyRequest().authenticated())
709-
.oauth2Login(Customizer.withDefaults())
710-
.oidcLogout((oidc) -> oidc.backChannel(Customizer.withDefaults()));
711-
// @formatter:on
712-
713-
return http.build();
714-
}
715-
716-
}
717-
718716
}

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

Lines changed: 72 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,6 @@
8686
import org.springframework.test.web.reactive.server.FluxExchangeResult;
8787
import org.springframework.test.web.reactive.server.WebTestClient;
8888
import org.springframework.test.web.reactive.server.WebTestClientConfigurer;
89-
import org.springframework.util.StringUtils;
9089
import org.springframework.web.bind.annotation.GetMapping;
9190
import org.springframework.web.bind.annotation.PostMapping;
9291
import org.springframework.web.bind.annotation.RequestParam;
@@ -324,6 +323,30 @@ void logoutWhenCustomComponentsThenUses() {
324323
verify(sessionRegistry, atLeastOnce()).removeSessionInformation(any(OidcLogoutToken.class));
325324
}
326325

326+
@Test
327+
void logoutWhenProviderIssuerMissingThen5xxServerError() {
328+
this.spring.register(WebServerConfig.class, OidcProviderConfig.class, ProviderIssuerMissingConfig.class)
329+
.autowire();
330+
String registrationId = this.clientRegistration.getRegistrationId();
331+
String session = login();
332+
String logoutToken = this.test.mutateWith(session(session))
333+
.get()
334+
.uri("/token/logout")
335+
.exchange()
336+
.expectStatus()
337+
.isOk()
338+
.returnResult(String.class)
339+
.getResponseBody()
340+
.blockFirst();
341+
this.test.post()
342+
.uri(this.web.url("/logout/connect/back-channel/" + registrationId).toString())
343+
.body(BodyInserters.fromFormData("logout_token", logoutToken))
344+
.exchange()
345+
.expectStatus()
346+
.is5xxServerError();
347+
this.test.mutateWith(session(session)).get().uri("/token/logout").exchange().expectStatus().isOk();
348+
}
349+
327350
private String login() {
328351
this.test.get().uri("/token/logout").exchange().expectStatus().isUnauthorized();
329352
String registrationId = this.clientRegistration.getRegistrationId();
@@ -500,6 +523,54 @@ ServerLogoutHandler logoutHandler() {
500523

501524
}
502525

526+
@Configuration
527+
static class ProviderIssuerMissingRegistrationConfig {
528+
529+
@Autowired(required = false)
530+
MockWebServer web;
531+
532+
@Bean
533+
ClientRegistration clientRegistration() {
534+
if (this.web == null) {
535+
return TestClientRegistrations.clientRegistration().issuerUri(null).build();
536+
}
537+
String issuer = this.web.url("/").toString();
538+
return TestClientRegistrations.clientRegistration()
539+
.issuerUri(null)
540+
.jwkSetUri(issuer + "jwks")
541+
.tokenUri(issuer + "token")
542+
.userInfoUri(issuer + "user")
543+
.scope("openid")
544+
.build();
545+
}
546+
547+
@Bean
548+
ReactiveClientRegistrationRepository clientRegistrationRepository(ClientRegistration clientRegistration) {
549+
return new InMemoryReactiveClientRegistrationRepository(clientRegistration);
550+
}
551+
552+
}
553+
554+
@Configuration
555+
@EnableWebFluxSecurity
556+
@Import(ProviderIssuerMissingRegistrationConfig.class)
557+
static class ProviderIssuerMissingConfig {
558+
559+
@Bean
560+
@Order(1)
561+
SecurityWebFilterChain filters(ServerHttpSecurity http) throws Exception {
562+
// @formatter:off
563+
http
564+
.authorizeExchange((authorize) -> authorize.anyExchange().authenticated())
565+
.oauth2Login(Customizer.withDefaults())
566+
.oidcLogout((oidc) -> oidc.backChannel(Customizer.withDefaults()));
567+
// @formatter:on
568+
569+
return http.build();
570+
}
571+
572+
}
573+
503574
@Configuration
504575
@EnableWebFluxSecurity
505576
@EnableWebFlux
@@ -741,75 +812,4 @@ private MockResponse toMockResponse(FluxExchangeResult<String> result) {
741812

742813
}
743814

744-
@Test
745-
void logoutWhenProviderIssuerMissingThen5xxServerError() {
746-
this.spring.register(WebServerConfig.class, OidcProviderConfig.class, ProviderIssuerMissingConfig.class).autowire();
747-
String registrationId = this.clientRegistration.getRegistrationId();
748-
String session = login();
749-
String logoutToken = this.test.mutateWith(session(session))
750-
.get()
751-
.uri("/token/logout")
752-
.exchange()
753-
.expectStatus()
754-
.isOk()
755-
.returnResult(String.class)
756-
.getResponseBody()
757-
.blockFirst();
758-
this.test.post()
759-
.uri(this.web.url("/logout/connect/back-channel/" + registrationId).toString())
760-
.body(BodyInserters.fromFormData("logout_token", logoutToken))
761-
.exchange()
762-
.expectStatus()
763-
.is5xxServerError();
764-
this.test.mutateWith(session(session)).get().uri("/token/logout").exchange().expectStatus().isOk();
765-
}
766-
767-
@Configuration
768-
static class ProviderIssuerMissingRegistrationConfig {
769-
770-
@Autowired(required = false)
771-
MockWebServer web;
772-
773-
@Bean
774-
ClientRegistration clientRegistration() {
775-
if (this.web == null) {
776-
return TestClientRegistrations.clientRegistration().issuerUri(null).build();
777-
}
778-
String issuer = this.web.url("/").toString();
779-
return TestClientRegistrations.clientRegistration()
780-
.issuerUri(null)
781-
.jwkSetUri(issuer + "jwks")
782-
.tokenUri(issuer + "token")
783-
.userInfoUri(issuer + "user")
784-
.scope("openid")
785-
.build();
786-
}
787-
788-
@Bean
789-
ReactiveClientRegistrationRepository clientRegistrationRepository(ClientRegistration clientRegistration) {
790-
return new InMemoryReactiveClientRegistrationRepository(clientRegistration);
791-
}
792-
793-
}
794-
795-
@Configuration
796-
@EnableWebFluxSecurity
797-
@Import(ProviderIssuerMissingRegistrationConfig.class)
798-
static class ProviderIssuerMissingConfig {
799-
800-
@Bean
801-
@Order(1)
802-
SecurityWebFilterChain filters(ServerHttpSecurity http) throws Exception {
803-
// @formatter:off
804-
http
805-
.authorizeExchange((authorize) -> authorize.anyExchange().authenticated())
806-
.oauth2Login(Customizer.withDefaults())
807-
.oidcLogout((oidc) -> oidc.backChannel(Customizer.withDefaults()));
808-
// @formatter:on
809-
810-
return http.build();
811-
}
812-
813-
}
814-
815815
}

0 commit comments

Comments
 (0)