Untitled

From Little Duck, 7 Years ago, written in Plain Text, viewed 2 times.
URL https://paste.blessuren.de/view/bdef1f90 Embed
Download Paste or View Raw
  1. package net.hellmann.platform.authproxy.proxy.filter;
  2.  
  3. import com.netflix.zuul.ZuulFilter;
  4. import com.netflix.zuul.context.RequestContext;
  5. import org.slf4j.Logger;
  6. import org.slf4j.LoggerFactory;
  7. import org.springframework.stereotype.Component;
  8.  
  9. import javax.servlet.http.HttpServletRequest;
  10. import java.util.Arrays;
  11. import java.util.HashMap;
  12. import java.util.List;
  13. import java.util.Map;
  14.  
  15. import static net.hellmann.platform.authproxy.proxy.header.Header.*;
  16. import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.PRE_TYPE;
  17.  
  18. ;
  19.  
  20. @Component
  21. public class RemoveDangerousHeader extends ZuulFilter {
  22.  
  23.     private static final Logger LOGGER = LoggerFactory.getLogger(RemoveDangerousHeader.class);
  24.  
  25.  
  26.     private final static List<String> IGNORED_HEADER = Arrays.asList("x-auth-secret", "x-auth-cn",
  27.             HELLMANN_USER, HELLMANN_REQUEST_ID, SERVICE_TO_SERVICE,
  28.             HELLMANN_USER_HEADER, HELLMANN_USER_HEADER_SIG,
  29.             PERMISSIONS_FOR_USER, PERMISSIONS_FOR_USER_SIG, SECRET_KEY);
  30.  
  31.     @Override
  32.     public String filterType() {
  33.         return PRE_TYPE;
  34.     }
  35.  
  36.     @Override
  37.     public int filterOrder() {
  38.         // RUN EARLY BEFORE ROUTE FILTER ADD ALL SECURITY HEADER
  39.         return 1000;
  40.     }
  41.  
  42.  
  43.     @Override
  44.     public boolean shouldFilter() {
  45.         RequestContext context = RequestContext.getCurrentContext();
  46.         return context.getThrowable() == null
  47.                 && (context.getZuulRequestHeaders() != null && !context.getZuulRequestHeaders().isEmpty());
  48.     }
  49.  
  50.     @Override
  51.     public Object run() {
  52.         RequestContext context = RequestContext.getCurrentContext();
  53.  
  54.         HttpServletRequest request = context.getRequest();
  55.  
  56.  
  57.  
  58.         Map<String, String> filteredResponseHeaders = new HashMap<>();
  59.         Map<String, String> zuulRequestHeaders = context.getZuulRequestHeaders();
  60.         if (zuulRequestHeaders != null) {
  61.             for (String headerKey : zuulRequestHeaders.keySet()) {
  62.                 if (!IGNORED_HEADER.contains(headerKey)) {
  63.                     filteredResponseHeaders.put(headerKey, zuulRequestHeaders.get(headerKey));
  64.                 } else {
  65.                     LOGGER.info("Remove outside header " + headerKey + " value : " + zuulRequestHeaders.get(headerKey));
  66.                 }
  67.             }
  68.         }
  69.         context.remove("zuulRequestHeaders");
  70.         context.put("zuulRequestHeaders", filteredResponseHeaders);
  71.         return null;
  72.     }
  73.  
  74.  
  75. }
  76.  

Reply to "Untitled"

Here you can reply to the paste above