diff --git a/src/main/java/se/su/dsv/oauth2/EmbeddedConfiguration.java b/src/main/java/se/su/dsv/oauth2/EmbeddedConfiguration.java index 95b8dfe..a0719bc 100644 --- a/src/main/java/se/su/dsv/oauth2/EmbeddedConfiguration.java +++ b/src/main/java/se/su/dsv/oauth2/EmbeddedConfiguration.java @@ -1,8 +1,11 @@ package se.su.dsv.oauth2; +import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; +import org.springframework.core.Ordered; +import org.springframework.web.filter.ForwardedHeaderFilter; import se.su.dsv.oauth2.admin.repository.ClientRepository; import se.su.dsv.oauth2.admin.repository.ClientRow; @@ -15,6 +18,16 @@ import java.util.Optional; @Configuration @Profile("embedded") public class EmbeddedConfiguration { + /** + * This filter takes the `X-Forwarded-*` headers and updates the request to reflect the original HTTP request. + */ + @Bean + public FilterRegistrationBean<ForwardedHeaderFilter> forwardedHeaderFilter() { + var filterRegistrationBean = new FilterRegistrationBean<>(new ForwardedHeaderFilter()); + filterRegistrationBean.setOrder(Ordered.HIGHEST_PRECEDENCE); + return filterRegistrationBean; + } + @Bean public ClientRepository clientRepository() { ArrayList<ClientRow> clients = new ArrayList<>();