Issue-ID: PORTAL-474 93/73693/3
authorKotta, Shireesha (sk434m) <shireesha.kotta@att.com>
Tue, 27 Nov 2018 15:34:00 +0000 (10:34 -0500)
committerKotta, Shireesha (sk434m) <shireesha.kotta@att.com>
Tue, 27 Nov 2018 16:23:43 +0000 (11:23 -0500)
System to system authorization using CADI

Change-Id: I58047d4cda3f445a223c6a12e59924db6881553a
Signed-off-by: Kotta, Shireesha (sk434m) <shireesha.kotta@att.com>
ecomp-sdk/epsdk-fw/pom.xml
ecomp-sdk/epsdk-fw/src/main/java/org/onap/portalsdk/core/onboarding/crossapi/CadiAuthFilter.java

index 2a2e772..aaf0214 100644 (file)
@@ -77,7 +77,7 @@
        <dependency>
        <groupId>org.onap.aaf.authz</groupId>
        <artifactId>aaf-cadi-aaf</artifactId>
-       <version>2.1.7-SNAPSHOT</version>
+       <version>2.1.7</version>
        <exclusions>
                <exclusion>
                        <groupId>gso</groupId>
@@ -88,7 +88,7 @@
        <dependency>
                <groupId>org.onap.aaf.authz</groupId>
                <artifactId>aaf-cadi-core</artifactId>
-               <version>2.1.7-SNAPSHOT</version>
+               <version>2.1.7</version>
        </dependency>   
                <dependency>
                        <groupId>javax.servlet</groupId>
index 8bddef8..0fdc14d 100644 (file)
@@ -52,35 +52,65 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
 import org.onap.aaf.cadi.filter.CadiFilter;
+import org.onap.portalsdk.core.onboarding.util.AuthUtil;
 import org.onap.portalsdk.core.onboarding.util.PortalApiConstants;
 import org.onap.portalsdk.core.onboarding.util.PortalApiProperties;
 
 public class CadiAuthFilter extends CadiFilter {
 
-       private static String inlclude_url_endpoints ="";
+       private static String include_url_endpoints ="";
+       private static String exclude_url_endpoints = "";
        public static final String AUTHORIZATION = "Authorization";
        
        public void init(FilterConfig filterConfig) throws ServletException {
                super.init(filterConfig);
-               inlclude_url_endpoints = filterConfig.getInitParameter("inlclude_url_endpoints");
+               include_url_endpoints = filterConfig.getInitParameter("include_url_endpoints");
+               exclude_url_endpoints = filterConfig.getInitParameter("exclude_url_endpoints");
        }
 
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
                        throws IOException, ServletException {
                
-               if (inlclude_url_endpoints.equals("") || inlclude_url_endpoints == null || inlclude_url_endpoints.isEmpty()) {
+               if (include_url_endpoints.equals("") || include_url_endpoints == null || include_url_endpoints.isEmpty()) {
                        throw new NullPointerException("inlclude_url_endpoints is null");
                } else {
-                       String includeUrlEndPointString = inlclude_url_endpoints;
+                       String includeUrlEndPointString = include_url_endpoints;
+                       if (exclude_url_endpoints.equals("") || exclude_url_endpoints == null || exclude_url_endpoints.isEmpty()) {
+                               throw new NullPointerException("exculde_url_endpoints is null");
+                       }
+                       String excludeUrlEndPointString = exclude_url_endpoints;
+                       ArrayList<String> excludeUrlEndPointList = new ArrayList<String>(
+                                       Arrays.asList(excludeUrlEndPointString.split(",")));
                        ArrayList<String> includeUrlEndPointList = new ArrayList<String>(
                                        Arrays.asList(includeUrlEndPointString.split(",")));
-                       if (includeFilter(request, includeUrlEndPointList)) {
+                       if (excludeFilter(request, excludeUrlEndPointList))
+                               chain.doFilter(request, response);
+                       else if (includeFilter(request, includeUrlEndPointList))
                                super.doFilter(request, response, chain);
-                       } else 
+                       else
                                chain.doFilter(request, response);
                }
        }
 
+
+       private String getUrl(ServletRequest request) {
+               String path = "";
+               HttpServletRequest httpRequest = (HttpServletRequest) request;
+               path = httpRequest.getRequestURI().substring(httpRequest.getContextPath().length() + 1);
+               return path;
+       }
+
+       private boolean excludeFilter(ServletRequest request, ArrayList<String> excludeUrlEndPointList) {
+               boolean isUrlExcluded = false;
+               String Path = getUrl(request);
+
+               for (String str : excludeUrlEndPointList) {
+                       if (!isUrlExcluded)
+                               isUrlExcluded = AuthUtil.matchPattern(Path, str.substring(1));
+               }
+               return isUrlExcluded;
+       }
+
        private boolean includeFilter(ServletRequest request, ArrayList<String> includeapisList) {
                boolean isauthenticated = false;
                HttpServletRequest httpRequest = (HttpServletRequest) request;
@@ -89,10 +119,6 @@ public class CadiAuthFilter extends CadiFilter {
                        return isauthenticated;
                // TODO: refactor to have exclusion pattern
                String path = httpRequest.getRequestURI().substring(httpRequest.getContextPath().length() + 1);
-               if (path.contains("analytics")) {
-                       return isauthenticated;
-               }
-               
                for (String str : includeapisList) {
                        if (!isauthenticated)
                                isauthenticated = matchPattern(path, str);