Skip to content

Commit a8c29fe

Browse files
committed
Fix #36461: allow to force redirects to use https (!78)
Reviewed-on: https://scm.openanalytics.eu/git/containerproxy/pulls/78
1 parent 52c62ab commit a8c29fe

1 file changed

Lines changed: 11 additions & 2 deletions

File tree

src/main/java/eu/openanalytics/containerproxy/ContainerProxyApplication.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@
6565
import org.springframework.web.filter.FormContentFilter;
6666
import org.springframework.web.servlet.LocaleResolver;
6767
import org.springframework.web.servlet.i18n.CookieLocaleResolver;
68-
import org.springframework.web.servlet.i18n.SessionLocaleResolver;
6968

7069
import javax.annotation.PostConstruct;
7170
import javax.inject.Inject;
@@ -80,7 +79,6 @@
8079
import java.util.Arrays;
8180
import java.util.HashSet;
8281
import java.util.List;
83-
import java.util.Locale;
8482
import java.util.Properties;
8583
import java.util.Set;
8684
import java.util.concurrent.Executor;
@@ -103,6 +101,8 @@ public class ContainerProxyApplication {
103101
private static final String SAME_SITE_COOKIE_DEFAULT_VALUE = "Lax";
104102
private static final String PROP_SERVER_SECURE_COOKIES = "server.secure-cookies";
105103
private static final Boolean SECURE_COOKIES_DEFAULT_VALUE = false;
104+
private static final String PROP_FORCE_HTTPS_IN_REDIRECTS = "proxy.force-https-in-redirects";
105+
private static final Boolean FORCE_HTTPS_IN_REDIRECTS_DEFAULT_VALUE = false;
106106
private static final Path TERMINATION_LOG_FILE = Path.of("/dev/termination-log");
107107
private static Boolean logAsJson = false;
108108
public static Boolean secureCookiesEnabled;
@@ -336,6 +336,15 @@ public UndertowServletWebServerFactory servletContainer() {
336336
info.setSessionManagerFactory(sessionManagerFactory);
337337
}
338338
info.setResourceManager(EMPTY_RESOURCE_MANAGER);
339+
if (environment.getProperty(PROP_FORCE_HTTPS_IN_REDIRECTS, Boolean.class, FORCE_HTTPS_IN_REDIRECTS_DEFAULT_VALUE)) {
340+
log.debug("Enforcing redirects to always use https.");
341+
info.addInitialHandlerChainWrapper(handler ->
342+
exchange -> {
343+
exchange.setRequestScheme("https");
344+
handler.handleRequest(exchange);
345+
}
346+
);
347+
}
339348
});
340349
try {
341350
factory.setAddress(InetAddress.getByName(environment.getProperty("proxy.bind-address", "0.0.0.0")));

0 commit comments

Comments
 (0)