mirror of
https://github.com/spring-projects/spring-security.git
synced 2025-03-01 10:59:16 +00:00
Fix Formatting
Issue gh-15771
This commit is contained in:
parent
690e012fb1
commit
c1857c0308
@ -85,7 +85,6 @@ import org.springframework.security.web.authentication.logout.LogoutHandler;
|
|||||||
import org.springframework.test.web.servlet.MockMvc;
|
import org.springframework.test.web.servlet.MockMvc;
|
||||||
import org.springframework.test.web.servlet.MvcResult;
|
import org.springframework.test.web.servlet.MvcResult;
|
||||||
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
|
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
|
||||||
import org.springframework.util.StringUtils;
|
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
@ -261,6 +260,22 @@ public class OidcLogoutConfigurerTests {
|
|||||||
verify(sessionRegistry).removeSessionInformation(any(OidcLogoutToken.class));
|
verify(sessionRegistry).removeSessionInformation(any(OidcLogoutToken.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void logoutWhenProviderIssuerMissingThenThrowIllegalArgumentException() throws Exception {
|
||||||
|
this.spring.register(WebServerConfig.class, OidcProviderConfig.class, ProviderIssuerMissingConfig.class)
|
||||||
|
.autowire();
|
||||||
|
String registrationId = this.clientRegistration.getRegistrationId();
|
||||||
|
MockHttpSession session = login();
|
||||||
|
String logoutToken = this.mvc.perform(get("/token/logout").session(session))
|
||||||
|
.andExpect(status().isOk())
|
||||||
|
.andReturn()
|
||||||
|
.getResponse()
|
||||||
|
.getContentAsString();
|
||||||
|
assertThatIllegalArgumentException().isThrownBy(
|
||||||
|
() -> this.mvc.perform(post(this.web.url("/logout/connect/back-channel/" + registrationId).toString())
|
||||||
|
.param("logout_token", logoutToken)));
|
||||||
|
}
|
||||||
|
|
||||||
private MockHttpSession login() throws Exception {
|
private MockHttpSession login() throws Exception {
|
||||||
MockMvcDispatcher dispatcher = (MockMvcDispatcher) this.web.getDispatcher();
|
MockMvcDispatcher dispatcher = (MockMvcDispatcher) this.web.getDispatcher();
|
||||||
this.mvc.perform(get("/token/logout")).andExpect(status().isUnauthorized());
|
this.mvc.perform(get("/token/logout")).andExpect(status().isUnauthorized());
|
||||||
@ -412,6 +427,54 @@ public class OidcLogoutConfigurerTests {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
static class ProviderIssuerMissingRegistrationConfig {
|
||||||
|
|
||||||
|
@Autowired(required = false)
|
||||||
|
MockWebServer web;
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
ClientRegistration clientRegistration() {
|
||||||
|
if (this.web == null) {
|
||||||
|
return TestClientRegistrations.clientRegistration().issuerUri(null).build();
|
||||||
|
}
|
||||||
|
String issuer = this.web.url("/").toString();
|
||||||
|
return TestClientRegistrations.clientRegistration()
|
||||||
|
.issuerUri(null)
|
||||||
|
.jwkSetUri(issuer + "jwks")
|
||||||
|
.tokenUri(issuer + "token")
|
||||||
|
.userInfoUri(issuer + "user")
|
||||||
|
.scope("openid")
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
ClientRegistrationRepository clientRegistrationRepository(ClientRegistration clientRegistration) {
|
||||||
|
return new InMemoryClientRegistrationRepository(clientRegistration);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
@EnableWebSecurity
|
||||||
|
@Import(ProviderIssuerMissingRegistrationConfig.class)
|
||||||
|
static class ProviderIssuerMissingConfig {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
@Order(1)
|
||||||
|
SecurityFilterChain filters(HttpSecurity http) throws Exception {
|
||||||
|
// @formatter:off
|
||||||
|
http
|
||||||
|
.authorizeHttpRequests((authorize) -> authorize.anyRequest().authenticated())
|
||||||
|
.oauth2Login(Customizer.withDefaults())
|
||||||
|
.oidcLogout((oidc) -> oidc.backChannel(Customizer.withDefaults()));
|
||||||
|
// @formatter:on
|
||||||
|
|
||||||
|
return http.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
@EnableWebSecurity
|
@EnableWebSecurity
|
||||||
@EnableWebMvc
|
@EnableWebMvc
|
||||||
@ -650,69 +713,4 @@ public class OidcLogoutConfigurerTests {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
void logoutWhenProviderIssuerMissingThenThrowIllegalArgumentException() throws Exception {
|
|
||||||
this.spring.register(WebServerConfig.class, OidcProviderConfig.class, ProviderIssuerMissingConfig.class).autowire();
|
|
||||||
String registrationId = this.clientRegistration.getRegistrationId();
|
|
||||||
MockHttpSession session = login();
|
|
||||||
String logoutToken = this.mvc.perform(get("/token/logout").session(session))
|
|
||||||
.andExpect(status().isOk())
|
|
||||||
.andReturn()
|
|
||||||
.getResponse()
|
|
||||||
.getContentAsString();
|
|
||||||
assertThatIllegalArgumentException().isThrownBy(() -> {
|
|
||||||
this.mvc
|
|
||||||
.perform(post(this.web.url("/logout/connect/back-channel/" + registrationId).toString())
|
|
||||||
.param("logout_token", logoutToken));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
static class ProviderIssuerMissingRegistrationConfig {
|
|
||||||
|
|
||||||
@Autowired(required = false)
|
|
||||||
MockWebServer web;
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
ClientRegistration clientRegistration() {
|
|
||||||
if (this.web == null) {
|
|
||||||
return TestClientRegistrations.clientRegistration().issuerUri(null).build();
|
|
||||||
}
|
|
||||||
String issuer = this.web.url("/").toString();
|
|
||||||
return TestClientRegistrations.clientRegistration()
|
|
||||||
.issuerUri(null)
|
|
||||||
.jwkSetUri(issuer + "jwks")
|
|
||||||
.tokenUri(issuer + "token")
|
|
||||||
.userInfoUri(issuer + "user")
|
|
||||||
.scope("openid")
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
ClientRegistrationRepository clientRegistrationRepository(ClientRegistration clientRegistration) {
|
|
||||||
return new InMemoryClientRegistrationRepository(clientRegistration);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
@EnableWebSecurity
|
|
||||||
@Import(ProviderIssuerMissingRegistrationConfig.class)
|
|
||||||
static class ProviderIssuerMissingConfig {
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
@Order(1)
|
|
||||||
SecurityFilterChain filters(HttpSecurity http) throws Exception {
|
|
||||||
// @formatter:off
|
|
||||||
http
|
|
||||||
.authorizeHttpRequests((authorize) -> authorize.anyRequest().authenticated())
|
|
||||||
.oauth2Login(Customizer.withDefaults())
|
|
||||||
.oidcLogout((oidc) -> oidc.backChannel(Customizer.withDefaults()));
|
|
||||||
// @formatter:on
|
|
||||||
|
|
||||||
return http.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -86,7 +86,6 @@ import org.springframework.security.web.server.util.matcher.ServerWebExchangeMat
|
|||||||
import org.springframework.test.web.reactive.server.FluxExchangeResult;
|
import org.springframework.test.web.reactive.server.FluxExchangeResult;
|
||||||
import org.springframework.test.web.reactive.server.WebTestClient;
|
import org.springframework.test.web.reactive.server.WebTestClient;
|
||||||
import org.springframework.test.web.reactive.server.WebTestClientConfigurer;
|
import org.springframework.test.web.reactive.server.WebTestClientConfigurer;
|
||||||
import org.springframework.util.StringUtils;
|
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
@ -324,6 +323,30 @@ public class OidcLogoutSpecTests {
|
|||||||
verify(sessionRegistry, atLeastOnce()).removeSessionInformation(any(OidcLogoutToken.class));
|
verify(sessionRegistry, atLeastOnce()).removeSessionInformation(any(OidcLogoutToken.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void logoutWhenProviderIssuerMissingThen5xxServerError() {
|
||||||
|
this.spring.register(WebServerConfig.class, OidcProviderConfig.class, ProviderIssuerMissingConfig.class)
|
||||||
|
.autowire();
|
||||||
|
String registrationId = this.clientRegistration.getRegistrationId();
|
||||||
|
String session = login();
|
||||||
|
String logoutToken = this.test.mutateWith(session(session))
|
||||||
|
.get()
|
||||||
|
.uri("/token/logout")
|
||||||
|
.exchange()
|
||||||
|
.expectStatus()
|
||||||
|
.isOk()
|
||||||
|
.returnResult(String.class)
|
||||||
|
.getResponseBody()
|
||||||
|
.blockFirst();
|
||||||
|
this.test.post()
|
||||||
|
.uri(this.web.url("/logout/connect/back-channel/" + registrationId).toString())
|
||||||
|
.body(BodyInserters.fromFormData("logout_token", logoutToken))
|
||||||
|
.exchange()
|
||||||
|
.expectStatus()
|
||||||
|
.is5xxServerError();
|
||||||
|
this.test.mutateWith(session(session)).get().uri("/token/logout").exchange().expectStatus().isOk();
|
||||||
|
}
|
||||||
|
|
||||||
private String login() {
|
private String login() {
|
||||||
this.test.get().uri("/token/logout").exchange().expectStatus().isUnauthorized();
|
this.test.get().uri("/token/logout").exchange().expectStatus().isUnauthorized();
|
||||||
String registrationId = this.clientRegistration.getRegistrationId();
|
String registrationId = this.clientRegistration.getRegistrationId();
|
||||||
@ -500,6 +523,54 @@ public class OidcLogoutSpecTests {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
static class ProviderIssuerMissingRegistrationConfig {
|
||||||
|
|
||||||
|
@Autowired(required = false)
|
||||||
|
MockWebServer web;
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
ClientRegistration clientRegistration() {
|
||||||
|
if (this.web == null) {
|
||||||
|
return TestClientRegistrations.clientRegistration().issuerUri(null).build();
|
||||||
|
}
|
||||||
|
String issuer = this.web.url("/").toString();
|
||||||
|
return TestClientRegistrations.clientRegistration()
|
||||||
|
.issuerUri(null)
|
||||||
|
.jwkSetUri(issuer + "jwks")
|
||||||
|
.tokenUri(issuer + "token")
|
||||||
|
.userInfoUri(issuer + "user")
|
||||||
|
.scope("openid")
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
ReactiveClientRegistrationRepository clientRegistrationRepository(ClientRegistration clientRegistration) {
|
||||||
|
return new InMemoryReactiveClientRegistrationRepository(clientRegistration);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
@EnableWebFluxSecurity
|
||||||
|
@Import(ProviderIssuerMissingRegistrationConfig.class)
|
||||||
|
static class ProviderIssuerMissingConfig {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
@Order(1)
|
||||||
|
SecurityWebFilterChain filters(ServerHttpSecurity http) throws Exception {
|
||||||
|
// @formatter:off
|
||||||
|
http
|
||||||
|
.authorizeExchange((authorize) -> authorize.anyExchange().authenticated())
|
||||||
|
.oauth2Login(Customizer.withDefaults())
|
||||||
|
.oidcLogout((oidc) -> oidc.backChannel(Customizer.withDefaults()));
|
||||||
|
// @formatter:on
|
||||||
|
|
||||||
|
return http.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
@EnableWebFluxSecurity
|
@EnableWebFluxSecurity
|
||||||
@EnableWebFlux
|
@EnableWebFlux
|
||||||
@ -741,75 +812,4 @@ public class OidcLogoutSpecTests {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
void logoutWhenProviderIssuerMissingThen5xxServerError() {
|
|
||||||
this.spring.register(WebServerConfig.class, OidcProviderConfig.class, ProviderIssuerMissingConfig.class).autowire();
|
|
||||||
String registrationId = this.clientRegistration.getRegistrationId();
|
|
||||||
String session = login();
|
|
||||||
String logoutToken = this.test.mutateWith(session(session))
|
|
||||||
.get()
|
|
||||||
.uri("/token/logout")
|
|
||||||
.exchange()
|
|
||||||
.expectStatus()
|
|
||||||
.isOk()
|
|
||||||
.returnResult(String.class)
|
|
||||||
.getResponseBody()
|
|
||||||
.blockFirst();
|
|
||||||
this.test.post()
|
|
||||||
.uri(this.web.url("/logout/connect/back-channel/" + registrationId).toString())
|
|
||||||
.body(BodyInserters.fromFormData("logout_token", logoutToken))
|
|
||||||
.exchange()
|
|
||||||
.expectStatus()
|
|
||||||
.is5xxServerError();
|
|
||||||
this.test.mutateWith(session(session)).get().uri("/token/logout").exchange().expectStatus().isOk();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
static class ProviderIssuerMissingRegistrationConfig {
|
|
||||||
|
|
||||||
@Autowired(required = false)
|
|
||||||
MockWebServer web;
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
ClientRegistration clientRegistration() {
|
|
||||||
if (this.web == null) {
|
|
||||||
return TestClientRegistrations.clientRegistration().issuerUri(null).build();
|
|
||||||
}
|
|
||||||
String issuer = this.web.url("/").toString();
|
|
||||||
return TestClientRegistrations.clientRegistration()
|
|
||||||
.issuerUri(null)
|
|
||||||
.jwkSetUri(issuer + "jwks")
|
|
||||||
.tokenUri(issuer + "token")
|
|
||||||
.userInfoUri(issuer + "user")
|
|
||||||
.scope("openid")
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
ReactiveClientRegistrationRepository clientRegistrationRepository(ClientRegistration clientRegistration) {
|
|
||||||
return new InMemoryReactiveClientRegistrationRepository(clientRegistration);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
@EnableWebFluxSecurity
|
|
||||||
@Import(ProviderIssuerMissingRegistrationConfig.class)
|
|
||||||
static class ProviderIssuerMissingConfig {
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
@Order(1)
|
|
||||||
SecurityWebFilterChain filters(ServerHttpSecurity http) throws Exception {
|
|
||||||
// @formatter:off
|
|
||||||
http
|
|
||||||
.authorizeExchange((authorize) -> authorize.anyExchange().authenticated())
|
|
||||||
.oauth2Login(Customizer.withDefaults())
|
|
||||||
.oidcLogout((oidc) -> oidc.backChannel(Customizer.withDefaults()));
|
|
||||||
// @formatter:on
|
|
||||||
|
|
||||||
return http.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user