diff --git a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/config/GatewayAutoConfiguration.java b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/config/GatewayAutoConfiguration.java index 637fb645..7fd53c0f 100644 --- a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/config/GatewayAutoConfiguration.java +++ b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/config/GatewayAutoConfiguration.java @@ -138,6 +138,7 @@ public class GatewayAutoConfiguration { } @Bean + @ConditionalOnMissingBean public PropertiesRouteDefinitionLocator propertiesRouteDefinitionLocator(GatewayProperties properties) { return new PropertiesRouteDefinitionLocator(properties); } diff --git a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/filter/factory/SecureHeadersProperties.java b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/filter/factory/SecureHeadersProperties.java index bf5226f8..71138683 100644 --- a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/filter/factory/SecureHeadersProperties.java +++ b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/filter/factory/SecureHeadersProperties.java @@ -24,7 +24,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties; */ @ConfigurationProperties("spring.cloud.gateway.filter.secure-headers") public class SecureHeadersProperties { - public static final String X_XSS_PROTECTION_HEADER_DEFAULT = "1; mode=block"; + public static final String X_XSS_PROTECTION_HEADER_DEFAULT = "1 ; mode=block"; public static final String STRICT_TRANSPORT_SECURITY_HEADER_DEFAULT = "max-age=631138519"; //; includeSubDomains preload") public static final String X_FRAME_OPTIONS_HEADER_DEFAULT = "DENY"; //SAMEORIGIN = ALLOW-FROM public static final String X_CONTENT_TYPE_OPTIONS_HEADER_DEFAULT = "nosniff"; diff --git a/spring-cloud-gateway-core/src/test/java/org/springframework/cloud/gateway/test/BaseWebClientTests.java b/spring-cloud-gateway-core/src/test/java/org/springframework/cloud/gateway/test/BaseWebClientTests.java index fdef37e5..58b819b9 100644 --- a/spring-cloud-gateway-core/src/test/java/org/springframework/cloud/gateway/test/BaseWebClientTests.java +++ b/spring-cloud-gateway-core/src/test/java/org/springframework/cloud/gateway/test/BaseWebClientTests.java @@ -34,12 +34,11 @@ import org.springframework.cloud.netflix.ribbon.RibbonClients; import org.springframework.cloud.netflix.ribbon.StaticServerList; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; import org.springframework.core.annotation.Order; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.http.codec.multipart.Part; -import org.springframework.security.config.web.server.HttpSecurity; -import org.springframework.security.web.server.SecurityWebFilterChain; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -85,6 +84,7 @@ public class BaseWebClientTests { @RibbonClient(name = "testservice", configuration = TestRibbonConfig.class), @RibbonClient(name = "myservice", configuration = TestRibbonConfig.class) }) + @Import(PermitAllSecurityConfiguration.class) protected static class DefaultTestConfig { private static final Log log = LogFactory.getLog(DefaultTestConfig.class); @@ -183,16 +183,6 @@ public class BaseWebClientTests { return chain.filter(exchange); }; } - - - @Bean - SecurityWebFilterChain springWebFilterChain(HttpSecurity http) throws Exception { - return http.authorizeExchange() - //.pathMatchers("/admin/**").hasRole("ADMIN") - .anyExchange().permitAll() - .and() - .build(); - } } protected static class TestRibbonConfig { diff --git a/spring-cloud-gateway-core/src/test/java/org/springframework/cloud/gateway/test/PermitAllSecurityConfiguration.java b/spring-cloud-gateway-core/src/test/java/org/springframework/cloud/gateway/test/PermitAllSecurityConfiguration.java new file mode 100644 index 00000000..b5675f1d --- /dev/null +++ b/spring-cloud-gateway-core/src/test/java/org/springframework/cloud/gateway/test/PermitAllSecurityConfiguration.java @@ -0,0 +1,17 @@ +package org.springframework.cloud.gateway.test; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.web.server.HttpSecurity; +import org.springframework.security.web.server.SecurityWebFilterChain; + +@Configuration +public class PermitAllSecurityConfiguration { + @Bean + SecurityWebFilterChain springWebFilterChain(HttpSecurity http) throws Exception { + return http.authorizeExchange() + .anyExchange().permitAll() + .and() + .build(); + } +} diff --git a/spring-cloud-gateway-core/src/test/java/org/springframework/cloud/gateway/test/websocket/WebSocketIntegrationTests.java b/spring-cloud-gateway-core/src/test/java/org/springframework/cloud/gateway/test/websocket/WebSocketIntegrationTests.java index c501b4b8..13268ddd 100644 --- a/spring-cloud-gateway-core/src/test/java/org/springframework/cloud/gateway/test/websocket/WebSocketIntegrationTests.java +++ b/spring-cloud-gateway-core/src/test/java/org/springframework/cloud/gateway/test/websocket/WebSocketIntegrationTests.java @@ -37,11 +37,13 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.cloud.gateway.route.RouteLocator; import org.springframework.cloud.gateway.route.Routes; +import org.springframework.cloud.gateway.test.PermitAllSecurityConfiguration; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.Lifecycle; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; import org.springframework.core.env.ConfigurableEnvironment; import org.springframework.http.HttpHeaders; import org.springframework.http.server.reactive.HttpHandler; @@ -292,6 +294,7 @@ public class WebSocketIntegrationTests { @Configuration @EnableAutoConfiguration + @Import(PermitAllSecurityConfiguration.class) protected static class GatewayConfig { @Value("${ws.server.port}")