formatting
This commit is contained in:
@@ -32,7 +32,8 @@ import static org.springframework.cloud.gateway.support.GatewayToStringStyler.fi
|
||||
*
|
||||
* @author Spencer Gibb, Thirunavukkarasu Ravichandran
|
||||
*/
|
||||
public class SecureHeadersGatewayFilterFactory extends AbstractGatewayFilterFactory<SecureHeadersGatewayFilterFactory.Config> {
|
||||
public class SecureHeadersGatewayFilterFactory
|
||||
extends AbstractGatewayFilterFactory<SecureHeadersGatewayFilterFactory.Config> {
|
||||
|
||||
/**
|
||||
* Xss-Protection header name.
|
||||
@@ -97,7 +98,8 @@ public class SecureHeadersGatewayFilterFactory extends AbstractGatewayFilterFact
|
||||
}
|
||||
|
||||
if (isEnabled(disabled, STRICT_TRANSPORT_SECURITY_HEADER)) {
|
||||
headers.add(STRICT_TRANSPORT_SECURITY_HEADER, config.getStrictTransportSecurity());
|
||||
headers.add(STRICT_TRANSPORT_SECURITY_HEADER,
|
||||
config.getStrictTransportSecurity());
|
||||
}
|
||||
|
||||
if (isEnabled(disabled, X_FRAME_OPTIONS_HEADER)) {
|
||||
@@ -105,7 +107,8 @@ public class SecureHeadersGatewayFilterFactory extends AbstractGatewayFilterFact
|
||||
}
|
||||
|
||||
if (isEnabled(disabled, X_CONTENT_TYPE_OPTIONS_HEADER)) {
|
||||
headers.add(X_CONTENT_TYPE_OPTIONS_HEADER, config.getContentTypeOptions());
|
||||
headers.add(X_CONTENT_TYPE_OPTIONS_HEADER,
|
||||
config.getContentTypeOptions());
|
||||
}
|
||||
|
||||
if (isEnabled(disabled, REFERRER_POLICY_HEADER)) {
|
||||
@@ -113,7 +116,8 @@ public class SecureHeadersGatewayFilterFactory extends AbstractGatewayFilterFact
|
||||
}
|
||||
|
||||
if (isEnabled(disabled, CONTENT_SECURITY_POLICY_HEADER)) {
|
||||
headers.add(CONTENT_SECURITY_POLICY_HEADER, config.getContentSecurityPolicy());
|
||||
headers.add(CONTENT_SECURITY_POLICY_HEADER,
|
||||
config.getContentSecurityPolicy());
|
||||
}
|
||||
|
||||
if (isEnabled(disabled, X_DOWNLOAD_OPTIONS_HEADER)) {
|
||||
@@ -121,7 +125,8 @@ public class SecureHeadersGatewayFilterFactory extends AbstractGatewayFilterFact
|
||||
}
|
||||
|
||||
if (isEnabled(disabled, X_PERMITTED_CROSS_DOMAIN_POLICIES_HEADER)) {
|
||||
headers.add(X_PERMITTED_CROSS_DOMAIN_POLICIES_HEADER, config.getPermittedCrossDomainPolicies());
|
||||
headers.add(X_PERMITTED_CROSS_DOMAIN_POLICIES_HEADER,
|
||||
config.getPermittedCrossDomainPolicies());
|
||||
}
|
||||
|
||||
return chain.filter(exchange);
|
||||
@@ -197,7 +202,8 @@ public class SecureHeadersGatewayFilterFactory extends AbstractGatewayFilterFact
|
||||
}
|
||||
|
||||
if (config.permittedCrossDomainPolicies == null) {
|
||||
config.permittedCrossDomainPolicies = properties.getPermittedCrossDomainPolicies();
|
||||
config.permittedCrossDomainPolicies = properties
|
||||
.getPermittedCrossDomainPolicies();
|
||||
}
|
||||
return config;
|
||||
}
|
||||
@@ -267,4 +273,5 @@ public class SecureHeadersGatewayFilterFactory extends AbstractGatewayFilterFact
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -566,7 +566,8 @@ public class GatewayFilterSpec extends UriSpec {
|
||||
* @return a {@link GatewayFilterSpec} that can be used to apply additional filters
|
||||
*/
|
||||
public GatewayFilterSpec secureHeaders() {
|
||||
return filter(getBean(SecureHeadersGatewayFilterFactory.class).apply(config -> {}));
|
||||
return filter(getBean(SecureHeadersGatewayFilterFactory.class).apply(config -> {
|
||||
}));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -576,8 +577,10 @@ public class GatewayFilterSpec extends UriSpec {
|
||||
* @param configConsumer self define headers
|
||||
* @return a {@link GatewayFilterSpec} that can be used to apply additional filters
|
||||
*/
|
||||
public GatewayFilterSpec secureHeaders(Consumer<SecureHeadersGatewayFilterFactory.Config> configConsumer) {
|
||||
return filter(getBean(SecureHeadersGatewayFilterFactory.class).apply(configConsumer));
|
||||
public GatewayFilterSpec secureHeaders(
|
||||
Consumer<SecureHeadersGatewayFilterFactory.Config> configConsumer) {
|
||||
return filter(
|
||||
getBean(SecureHeadersGatewayFilterFactory.class).apply(configConsumer));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -273,9 +273,12 @@ public class ReactiveLoadBalancerClientFilterTests {
|
||||
ServiceInstance serviceInstance = new DefaultServiceInstance("myservice1",
|
||||
"myservice", "localhost", 8080, false);
|
||||
when(clientFactory.getInstance("myservice",
|
||||
ReactorServiceInstanceLoadBalancer.class)).thenReturn(
|
||||
new RoundRobinLoadBalancer(ServiceInstanceListSuppliers
|
||||
.toProvider("myservice", serviceInstance), "myservice", -1));
|
||||
ReactorServiceInstanceLoadBalancer.class))
|
||||
.thenReturn(
|
||||
new RoundRobinLoadBalancer(
|
||||
ServiceInstanceListSuppliers
|
||||
.toProvider("myservice", serviceInstance),
|
||||
"myservice", -1));
|
||||
when(chain.filter(exchange)).thenReturn(Mono.empty());
|
||||
|
||||
filter.filter(exchange, chain).block();
|
||||
|
||||
@@ -91,7 +91,8 @@ public class SecureHeadersGatewayFilterFactoryUnitTests {
|
||||
"content-security-policy", "x-download-options",
|
||||
"x-permitted-cross-domain-policies"));
|
||||
|
||||
SecureHeadersGatewayFilterFactory filterFactory = new SecureHeadersGatewayFilterFactory(properties);
|
||||
SecureHeadersGatewayFilterFactory filterFactory = new SecureHeadersGatewayFilterFactory(
|
||||
properties);
|
||||
filter = filterFactory.apply(new Config());
|
||||
|
||||
filter.filter(exchange, filterChain);
|
||||
@@ -118,26 +119,36 @@ public class SecureHeadersGatewayFilterFactoryUnitTests {
|
||||
filter.filter(exchange, filterChain);
|
||||
|
||||
ServerHttpResponse response = captor.getValue().getResponse();
|
||||
assertThat(response.getHeaders()).containsKeys(X_XSS_PROTECTION_HEADER, STRICT_TRANSPORT_SECURITY_HEADER,
|
||||
X_FRAME_OPTIONS_HEADER, X_CONTENT_TYPE_OPTIONS_HEADER, REFERRER_POLICY_HEADER,
|
||||
CONTENT_SECURITY_POLICY_HEADER, X_DOWNLOAD_OPTIONS_HEADER, X_PERMITTED_CROSS_DOMAIN_POLICIES_HEADER);
|
||||
assertThat(response.getHeaders()).containsKeys(X_XSS_PROTECTION_HEADER,
|
||||
STRICT_TRANSPORT_SECURITY_HEADER, X_FRAME_OPTIONS_HEADER,
|
||||
X_CONTENT_TYPE_OPTIONS_HEADER, REFERRER_POLICY_HEADER,
|
||||
CONTENT_SECURITY_POLICY_HEADER, X_DOWNLOAD_OPTIONS_HEADER,
|
||||
X_PERMITTED_CROSS_DOMAIN_POLICIES_HEADER);
|
||||
|
||||
assertThat(response.getHeaders().get(STRICT_TRANSPORT_SECURITY_HEADER)).containsOnly("max-age=65535");
|
||||
assertThat(response.getHeaders().get(REFERRER_POLICY_HEADER)).containsOnly("referrer");
|
||||
|
||||
assertThat(response.getHeaders().get(X_XSS_PROTECTION_HEADER)).containsOnly(properties.getXssProtectionHeader());
|
||||
assertThat(response.getHeaders().get(X_FRAME_OPTIONS_HEADER)).containsOnly(properties.getFrameOptions());
|
||||
assertThat(response.getHeaders().get(X_CONTENT_TYPE_OPTIONS_HEADER)).containsOnly(properties.getContentTypeOptions());
|
||||
assertThat(response.getHeaders().get(CONTENT_SECURITY_POLICY_HEADER)).containsOnly(properties.getContentSecurityPolicy());
|
||||
assertThat(response.getHeaders().get(X_DOWNLOAD_OPTIONS_HEADER)).containsOnly(properties.getDownloadOptions());
|
||||
assertThat(response.getHeaders().get(X_PERMITTED_CROSS_DOMAIN_POLICIES_HEADER)).containsOnly(properties.getPermittedCrossDomainPolicies());
|
||||
assertThat(response.getHeaders().get(STRICT_TRANSPORT_SECURITY_HEADER))
|
||||
.containsOnly("max-age=65535");
|
||||
assertThat(response.getHeaders().get(REFERRER_POLICY_HEADER))
|
||||
.containsOnly("referrer");
|
||||
|
||||
assertThat(response.getHeaders().get(X_XSS_PROTECTION_HEADER))
|
||||
.containsOnly(properties.getXssProtectionHeader());
|
||||
assertThat(response.getHeaders().get(X_FRAME_OPTIONS_HEADER))
|
||||
.containsOnly(properties.getFrameOptions());
|
||||
assertThat(response.getHeaders().get(X_CONTENT_TYPE_OPTIONS_HEADER))
|
||||
.containsOnly(properties.getContentTypeOptions());
|
||||
assertThat(response.getHeaders().get(CONTENT_SECURITY_POLICY_HEADER))
|
||||
.containsOnly(properties.getContentSecurityPolicy());
|
||||
assertThat(response.getHeaders().get(X_DOWNLOAD_OPTIONS_HEADER))
|
||||
.containsOnly(properties.getDownloadOptions());
|
||||
assertThat(response.getHeaders().get(X_PERMITTED_CROSS_DOMAIN_POLICIES_HEADER))
|
||||
.containsOnly(properties.getPermittedCrossDomainPolicies());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void toStringFormat() {
|
||||
GatewayFilter filter = new SecureHeadersGatewayFilterFactory(new SecureHeadersProperties()).apply(new Config());
|
||||
GatewayFilter filter = new SecureHeadersGatewayFilterFactory(
|
||||
new SecureHeadersProperties()).apply(new Config());
|
||||
Assertions.assertThat(filter.toString()).contains("SecureHeaders");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user