From 0b93b160593fc7d7aa37c6e172e819567f3ee077 Mon Sep 17 00:00:00 2001 From: "k.triantafyllou" Date: Thu, 6 Jul 2023 15:06:18 +0300 Subject: [PATCH] Add filter to convert getRequestURL in AuthenticationFilter. --- .../oidc/OpenAIREAuthenticationFilter.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/main/java/eu/dnetlib/authentication/security/oidc/OpenAIREAuthenticationFilter.java b/src/main/java/eu/dnetlib/authentication/security/oidc/OpenAIREAuthenticationFilter.java index 33552c8..2d40da6 100644 --- a/src/main/java/eu/dnetlib/authentication/security/oidc/OpenAIREAuthenticationFilter.java +++ b/src/main/java/eu/dnetlib/authentication/security/oidc/OpenAIREAuthenticationFilter.java @@ -6,7 +6,12 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.mitre.openid.connect.client.OIDCAuthenticationFilter; +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequestWrapper; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @@ -20,6 +25,22 @@ public class OpenAIREAuthenticationFilter extends OIDCAuthenticationFilter { this.properties = properties; } + @Override + public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { + final HttpServletRequestWrapper wrapped = new HttpServletRequestWrapper((HttpServletRequest) req) { + @Override + public StringBuffer getRequestURL() { + final StringBuffer originalUrl = ((HttpServletRequest) getRequest()).getRequestURL(); + if(originalUrl.toString().contains(OIDCAuthenticationFilter.FILTER_PROCESSES_URL)) { + return new StringBuffer(properties.getOidc().getHome()); + } else { + return new StringBuffer(properties.getOidc().getRedirect()); + } + } + }; + super.doFilter(wrapped, res, chain); + } + @Override protected void handleAuthorizationRequest(HttpServletRequest request, HttpServletResponse response) throws IOException { Redirect.setRedirect(request, properties);