Use CadiFilter instead of shiro

Microservices should use CadiFilter rather than shiro to integrate
with AAF

Change-Id: I95b9a844b7ac868f864134de7345013001357352
Issue-ID: SDNC-1523
Signed-off-by: Dan Timoney <dtimoney@att.com>
(cherry picked from commit a90eecf70419ec4acba6f5a8425300eef7f45290)
diff --git a/ms/sliboot/pom.xml b/ms/sliboot/pom.xml
index 7ae99ae..afbc5c1 100644
--- a/ms/sliboot/pom.xml
+++ b/ms/sliboot/pom.xml
@@ -18,8 +18,7 @@
 
     <properties>
         <start-class>org.onap.ccsdk.apps.ms.sliboot.SlibootApp</start-class>
-        <shiro.version>1.5.0</shiro.version>
-        <aaf-shiro-bundle.version>2.1.13</aaf-shiro-bundle.version>
+        <aaf.cadi.version>2.1.21</aaf.cadi.version>
         <base.image.name>onap/ccsdk-alpine-j11-image</base.image.name>
         <base.image.version>1.1.1</base.image.version>
         <image.name>onap/ccsdk-sliboot-alpine-image</image.name>
@@ -40,17 +39,16 @@
             <groupId>io.swagger</groupId>
             <artifactId>swagger-annotations</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.apache.shiro</groupId>
-            <artifactId>shiro-spring-boot-web-starter</artifactId>
-            <version>${shiro.version}</version>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-web</artifactId>
             <exclusions>
                 <exclusion>
                     <groupId>org.springframework.boot</groupId>
                     <artifactId>spring-boot-starter-logging</artifactId>
                 </exclusion>
             </exclusions>
-        </dependency>
+		</dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-log4j2</artifactId>
@@ -60,12 +58,6 @@
             <artifactId>spring-boot-starter-validation</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.onap.aaf.cadi</groupId>
-            <artifactId>aaf-cadi-shiro</artifactId>
-            <version>${aaf-shiro-bundle.version}</version>
-        </dependency>
-
-        <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>
             <scope>test</scope>
@@ -85,6 +77,34 @@
             <version>2.9.2</version>
         </dependency>
         <dependency>
+            <groupId>org.onap.aaf.authz</groupId>
+            <artifactId>aaf-cadi-client</artifactId>
+            <version>${aaf.cadi.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.onap.aaf.authz</groupId>
+            <artifactId>aaf-cadi-core</artifactId>
+            <version>${aaf.cadi.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.onap.aaf.authz</groupId>
+            <artifactId>aaf-auth-client</artifactId>
+            <version>${aaf.cadi.version}</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.onap.aaf.authz</groupId>
+            <artifactId>aaf-misc-env</artifactId>
+            <version>${aaf.cadi.version}</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.onap.aaf.authz</groupId>
+            <artifactId>aaf-misc-rosetta</artifactId>
+            <version>${aaf.cadi.version}</version>
+            <scope>runtime</scope>
+        </dependency>
+        <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>services</artifactId>
             <version>${project.version}</version>
@@ -283,7 +303,6 @@
                 <artifactId>maven-surefire-plugin</artifactId>
                 <version>2.19.1</version>
                 <configuration>
-                    <forkMode>always</forkMode>
                     <environmentVariables>
                         <SDNC_CONFIG_DIR>${basedir}/src/test/resources</SDNC_CONFIG_DIR>
                         <SVCLOGIC_PROPERTIES>${basedir}/src/test/resources/svclogic.properties</SVCLOGIC_PROPERTIES>
diff --git a/ms/sliboot/src/main/java/org/onap/ccsdk/apps/ms/sliboot/SlibootApp.java b/ms/sliboot/src/main/java/org/onap/ccsdk/apps/ms/sliboot/SlibootApp.java
index 9805d00..5921ad8 100644
--- a/ms/sliboot/src/main/java/org/onap/ccsdk/apps/ms/sliboot/SlibootApp.java
+++ b/ms/sliboot/src/main/java/org/onap/ccsdk/apps/ms/sliboot/SlibootApp.java
@@ -24,18 +24,18 @@
 import org.slf4j.LoggerFactory;

 import org.springframework.boot.SpringApplication;

 import org.springframework.boot.autoconfigure.SpringBootApplication;

+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;

 import org.springframework.boot.autoconfigure.domain.EntityScan;

+import org.springframework.boot.web.servlet.FilterRegistrationBean;

 import org.springframework.context.annotation.ComponentScan;

+import org.springframework.core.annotation.Order;

 import org.springframework.data.jpa.repository.config.EnableJpaRepositories;

 import org.springframework.transaction.annotation.EnableTransactionManagement;

 

 import springfox.documentation.swagger2.annotations.EnableSwagger2;

-import org.apache.shiro.realm.Realm;

-import org.apache.shiro.realm.text.PropertiesRealm;

-import org.apache.shiro.spring.web.config.DefaultShiroFilterChainDefinition;

-import org.apache.shiro.spring.web.config.ShiroFilterChainDefinition;

 import org.springframework.context.annotation.Bean;

-import org.onap.aaf.cadi.shiro.AAFRealm;

+

+import org.onap.aaf.cadi.filter.CadiFilter;

 

 @SpringBootApplication(scanBasePackages={ "org.onap.ccsdk.apps.ms.sliboot.*", "org.onap.ccsdk.apps.services" })

 @EnableJpaRepositories("org.onap.ccsdk.apps.ms.sliboot.*")

@@ -51,34 +51,22 @@
   }

 

   @Bean

-  public Realm realm() {

+  @ConditionalOnProperty("cadi.properties.path")

+	@Order(1)

+	public FilterRegistrationBean<CadiFilter> cadiFilter() {

+		CadiFilter filter = new CadiFilter();

 

-    // If cadi prop files is not defined use local properties realm

-    // src/main/resources/shiro-users.properties

-    if ("none".equals(System.getProperty("cadi_prop_files", "none"))) {

-      log.info("cadi_prop_files undefined, AAF Realm will not be set");

-      PropertiesRealm realm = new PropertiesRealm();

-      return realm;

-    } else {

-      AAFRealm realm = new AAFRealm();

-      return realm;

-    }

+		FilterRegistrationBean<CadiFilter> registrationBean = new FilterRegistrationBean<>();

+		registrationBean.setFilter(filter);

+		if ("none".equals(System.getProperty("cadi_prop_files", "none"))) {

+            log.info("cadi_prop_files undefined, AAF CADI disabled");

+			registrationBean.addUrlPatterns("/xxxx/*");

+		} else {

+			registrationBean.addUrlPatterns("/*");

+			registrationBean.addInitParameter("cadi_prop_files", System.getProperty("cadi_prop_files"));

+		}

 

-  }

-

-  @Bean

-  public ShiroFilterChainDefinition shiroFilterChainDefinition() {

-    DefaultShiroFilterChainDefinition chainDefinition = new DefaultShiroFilterChainDefinition();

-

-    // if cadi prop files is not set disable authentication

-    if ("none".equals(System.getProperty("cadi_prop_files", "none"))) {

-      chainDefinition.addPathDefinition("/**", "anon");

-    } else {

-      log.info("Loaded property cadi_prop_files, AAF REALM set");

-      chainDefinition.addPathDefinition("/**", "authcBasic, rest[org.onap.sdnc.odl:odl-api]");

-    }

-

-    return chainDefinition;

-  }

+		return registrationBean;

+	} 

 

 }

diff --git a/ms/sliboot/src/test/java/org/onap/ccsdk/apps/ms/sliboot/AppTest.java b/ms/sliboot/src/test/java/org/onap/ccsdk/apps/ms/sliboot/AppTest.java
deleted file mode 100644
index 570953e..0000000
--- a/ms/sliboot/src/test/java/org/onap/ccsdk/apps/ms/sliboot/AppTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package org.onap.ccsdk.apps.ms.sliboot;
-
-import org.apache.shiro.realm.Realm;
-import org.apache.shiro.realm.text.PropertiesRealm;
-import org.apache.shiro.spring.web.config.ShiroFilterChainDefinition;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.util.Map;
-
-import static org.junit.Assert.*;
-
-public class AppTest {
-
-    SlibootApp app;
-
-    @Before
-    public void setUp() throws Exception {
-        app = new SlibootApp();
-        System.setProperty("serviceLogicProperties", "src/test/resources/svclogic.properties");
-    }
-
-    @Test
-    public void realm() {
-        Realm realm = app.realm();
-        assertTrue(realm instanceof PropertiesRealm);
-
-
-    }
-
-    @Test
-    public void shiroFilterChainDefinition() {
-        ShiroFilterChainDefinition chainDefinition = app.shiroFilterChainDefinition();
-        Map<String, String> chainMap = chainDefinition.getFilterChainMap();
-        assertEquals("anon", chainMap.get("/**"));
-
-
-    }
-}
\ No newline at end of file