Skip to content

Commit

Permalink
disabled security header addition filter 2
Browse files Browse the repository at this point in the history
  • Loading branch information
emmdurin committed Jul 4, 2023
1 parent e2719d2 commit 4069bd7
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,6 @@
import org.springframework.cloud.gateway.filter.GatewayFilter;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory;
import org.springframework.cloud.gateway.route.Route;
import org.springframework.cloud.gateway.support.ServerWebExchangeUtils;
import org.springframework.core.Ordered;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.web.server.ServerWebExchange;
Expand All @@ -38,6 +36,8 @@
public class AddSecHeadersGatewayFilterFactory
extends AbstractGatewayFilterFactory<AbstractGatewayFilterFactory.NameConfig> {

public static String DISABLE_SECURITY_HEADERS = AddSecHeadersGatewayFilterFactory.class.getName()
+ ".DISABLE_SECURITY_HEADERS";
private final List<HeaderContributor> providers;

public AddSecHeadersGatewayFilterFactory(List<HeaderContributor> providers) {
Expand All @@ -59,7 +59,7 @@ private static class AddSecHeadersGatewayFilter implements GatewayFilter, Ordere
private final @NonNull List<HeaderContributor> providers;

public @Override Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
if (!ProxyGatewayFilterFactory.isProxied(exchange)) {
if (exchange.getAttribute(DISABLE_SECURITY_HEADERS) == null) {
ServerHttpRequest.Builder requestBuilder = exchange.getRequest().mutate();

providers.stream()//
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,25 +5,16 @@
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.cloud.gateway.route.Route;
import org.springframework.cloud.gateway.support.ServerWebExchangeUtils;
import org.springframework.web.server.ServerWebExchange;

import java.net.URI;
import java.net.URISyntaxException;
import java.util.List;

public class ProxyGatewayFilterFactory extends AbstractGatewayFilterFactory<Object> {
private static String PROXY_ROUTE_NAME = "ProxyGatewayFilterRoute";
private static String PROXY_ROUTE_URI = "no://op";

public ProxyGatewayFilterFactory() {
super(Object.class);
}

public static boolean isProxied(ServerWebExchange exchange) {
Route route = exchange.getAttribute(ServerWebExchangeUtils.GATEWAY_ROUTE_ATTR);
return route.getId().equals(PROXY_ROUTE_NAME) && route.getUri().equals(PROXY_ROUTE_URI);
}

@Override
public GatewayFilter apply(final Object config) {
return (exchange, chain) -> {
Expand All @@ -34,9 +25,10 @@ public GatewayFilter apply(final Object config) {
try {
request = exchange.getRequest().mutate().uri(new URI(urls.get(0))).build();

Route newRoute = Route.async().id(PROXY_ROUTE_NAME).uri(new URI(urls.get(0)))
.order(route.getOrder()).asyncPredicate(route.getPredicate()).build();
Route newRoute = Route.async().id(route.getId()).uri(new URI(urls.get(0))).order(route.getOrder())
.asyncPredicate(route.getPredicate()).build();

exchange.getAttributes().put(AddSecHeadersGatewayFilterFactory.DISABLE_SECURITY_HEADERS, "true");
exchange.getAttributes().put(ServerWebExchangeUtils.GATEWAY_ROUTE_ATTR, newRoute);
return chain.filter(exchange.mutate().request(request).build());
} catch (URISyntaxException e) {
Expand Down

0 comments on commit 4069bd7

Please sign in to comment.