1 package org.onap.vid.controller.filter;
3 import org.apache.commons.lang3.StringUtils;
4 import org.onap.vid.scheduler.SchedulerProperties;
5 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
6 import org.onap.portalsdk.core.util.SystemProperties;
7 import org.springframework.web.filter.GenericFilterBean;
8 import javax.servlet.FilterChain;
9 import javax.servlet.ServletException;
10 import javax.servlet.ServletRequest;
11 import javax.servlet.ServletResponse;
12 import javax.servlet.annotation.WebFilter;
13 import javax.servlet.http.HttpServletRequest;
14 import javax.servlet.http.HttpServletResponse;
15 import java.io.IOException;
18 * Created by amichai on 13/05/2018.
20 @WebFilter(urlPatterns = "/change-management/workflow/*")
21 public class ClientCredentialsFilter extends GenericFilterBean {
23 private final static EELFLoggerDelegate LOGGER = EELFLoggerDelegate.getLogger(ClientCredentialsFilter.class);
27 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
29 if (!(request instanceof HttpServletRequest) || !(response instanceof HttpServletResponse))
32 String expectedAuthorization = SystemProperties.getProperty(SchedulerProperties.SCHEDULER_BASIC_AUTH);
33 String actualAuthorization = ((HttpServletRequest)request).getHeader("Authorization");
35 if (verifyClientCredentials(actualAuthorization, expectedAuthorization)) {
36 LOGGER.warn(EELFLoggerDelegate.debugLogger,"Client credentials authenticated.");
37 chain.doFilter(request, response);
41 LOGGER.warn(EELFLoggerDelegate.debugLogger,"Client did not provide the expected credentials.");
42 ((HttpServletResponse) response).sendError(401);
45 public boolean verifyClientCredentials(String actualAuthorization, String expectedAuthorization)
47 if (StringUtils.isEmpty(expectedAuthorization))
49 LOGGER.warn(EELFLoggerDelegate.debugLogger,String.format("Expected Authorization is not configured (key: %s)", SchedulerProperties.SCHEDULER_BASIC_AUTH));
53 if (StringUtils.isEmpty(actualAuthorization))
55 LOGGER.warn(EELFLoggerDelegate.debugLogger,"Authorization header is missing.");
59 return actualAuthorization.equals(expectedAuthorization);