1 /*******************************************************************************
2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 * ============LICENSE_END=========================================================
19 * ECOMP is a trademark and service mark of AT&T Intellectual Property.
21 *******************************************************************************/
22 package com.att.nsa.dmaap.util;
24 import java.io.IOException;
26 import javax.servlet.FilterChain;
27 import javax.servlet.ServletException;
28 import javax.servlet.ServletRequest;
29 import javax.servlet.ServletResponse;
30 import javax.servlet.http.HttpServletRequest;
32 //import com.att.eelf.configuration.EELFLogger;
33 //import com.att.eelf.configuration.EELFManager;
35 import org.slf4j.Logger;
36 import org.slf4j.LoggerFactory;
37 import org.springframework.stereotype.Component;
39 import com.att.cadi.filter.CadiFilter;
40 import javax.servlet.FilterConfig;
43 * This is a Servlet Filter class overriding the AjscCadiFilter
46 public class DMaaPAuthFilter extends CadiFilter {
48 // private Logger log = Logger.getLogger(DMaaPAuthFilter.class.toString());
50 // private static final EELFLogger log =
51 // EELFManager.getInstance().getLogger(DMaaPAuthFilter.class);
52 private Logger log = LoggerFactory.getLogger(DMaaPAuthFilter.class);
54 final Boolean enabled = "authentication-scheme-1".equalsIgnoreCase(System.getProperty("CadiAuthN"));
57 * This method will disable Cadi Authentication if cambria headers are
58 * present in the request else continue with Cadi Authentication
60 public void init(FilterConfig filterConfig) throws ServletException {
64 super.init(filterConfig);
66 } catch (Exception ex) {
67 log.error("Ajsc Cadi Filter Exception" + ex);
73 public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
74 throws IOException, ServletException {
76 log.info("inside servlet filter Cambria Auth Headers checking before doing other Authentication");
77 HttpServletRequest request = (HttpServletRequest) req;
79 boolean forceAAF = Boolean.valueOf(System.getProperty("forceAAF"));
81 null != request.getHeader("Authorization") ||
82 (null != request.getHeader("AppName") &&
83 request.getHeader("AppName").equalsIgnoreCase("invenio") &&
84 null != request.getHeader("cookie"))) {
87 request.getMethod().equalsIgnoreCase("head") ||
88 request.getHeader("DME2HealthCheck") != null) {
90 chain.doFilter(req, res);
94 super.doFilter(req, res, chain);
99 System.setProperty("CadiAuthN", "authentication-scheme-2");
100 chain.doFilter(req, res);
107 public void log(Exception e, Object... elements) {
108 // TODO Auto-generated method stub
109 // super.log(e, elements);
110 // System.out.println(convertArrayToString(elements));
111 log.error(convertArrayToString(elements), e);
116 public void log(Level level, Object... elements) {
118 // System.out.println(willWrite().compareTo(level) );
119 if (willWrite().compareTo(level) <= 0) {
122 log.debug(convertArrayToString(elements));
125 log.info(convertArrayToString(elements));
128 log.error(convertArrayToString(elements));
131 log.info(convertArrayToString(elements));
134 log.info(convertArrayToString(elements));
137 log.warn(convertArrayToString(elements));
141 log.warn(convertArrayToString(elements));
149 private String convertArrayToString(Object[] elements) {
151 StringBuilder strBuilder = new StringBuilder();
152 for (int i = 0; i < elements.length; i++) {
153 if (elements[i] instanceof String)
154 strBuilder.append((String) elements[i]);
155 else if (elements[i] instanceof Integer)
156 strBuilder.append((Integer) elements[i]);
158 strBuilder.append(elements[i]);
160 String newString = strBuilder.toString();