From 35d9348ab67b6dc3c8e90a2a479f75fcd0af9228 Mon Sep 17 00:00:00 2001 From: David Stilwell Date: Wed, 18 Mar 2020 10:02:50 -0400 Subject: Springboot integration with AAF Changes made: pom.xml updates, App.java add Beans for realm and filterchain Issue-ID: CCSDK-2178 Change-Id: I29aa242ceff6a2f840b93a8d18ca5385190ca6d2 Signed-off-by: David Stilwell --- .../onap/ccsdk/sli/core/sliapi/springboot/App.java | 37 ++++++++++++++++++++ .../src/main/resources/shiro-users.properties | 3 ++ .../ccsdk/sli/core/sliapi/springboot/AppTest.java | 39 ++++++++++++++++++++++ 3 files changed, 79 insertions(+) create mode 100644 sliapi/springboot/src/main/resources/shiro-users.properties create mode 100644 sliapi/springboot/src/test/java/org/onap/ccsdk/sli/core/sliapi/springboot/AppTest.java (limited to 'sliapi/springboot/src') diff --git a/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/App.java b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/App.java index ed3ee044..2892430b 100644 --- a/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/App.java +++ b/sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/App.java @@ -24,6 +24,13 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan; import springfox.documentation.swagger2.annotations.EnableSwagger2; +import org.apache.shiro.realm.Realm; +import org.apache.shiro.realm.text.PropertiesRealm; +import org.apache.shiro.realm.text.TextConfigurationRealm; +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; @SpringBootApplication @EnableSwagger2 @@ -34,4 +41,34 @@ public class App { public static void main(String[] args) throws Exception { SpringApplication.run(App.class, args); } + + @Bean + public Realm realm() { + + // 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"))) { + PropertiesRealm realm = new PropertiesRealm(); + return realm; + } else { + AAFRealm realm = new AAFRealm(); + return realm; + } + + } + + @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 { + chainDefinition.addPathDefinition("/**", "authcBasic, rest[org.onap.sdnc:odl-api]"); + } + + return chainDefinition; + } + } diff --git a/sliapi/springboot/src/main/resources/shiro-users.properties b/sliapi/springboot/src/main/resources/shiro-users.properties new file mode 100644 index 00000000..df4b1ae7 --- /dev/null +++ b/sliapi/springboot/src/main/resources/shiro-users.properties @@ -0,0 +1,3 @@ +user.admin = Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U,service +role.service = odl-api:* + diff --git a/sliapi/springboot/src/test/java/org/onap/ccsdk/sli/core/sliapi/springboot/AppTest.java b/sliapi/springboot/src/test/java/org/onap/ccsdk/sli/core/sliapi/springboot/AppTest.java new file mode 100644 index 00000000..c5f452cb --- /dev/null +++ b/sliapi/springboot/src/test/java/org/onap/ccsdk/sli/core/sliapi/springboot/AppTest.java @@ -0,0 +1,39 @@ +package org.onap.ccsdk.sli.core.sliapi.springboot; + +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 org.onap.aaf.cadi.shiro.AAFRealm; + +import java.util.Map; + +import static org.junit.Assert.*; + +public class AppTest { + + App app; + + @Before + public void setUp() throws Exception { + app = new App(); + } + + @Test + public void realm() { + Realm realm = app.realm(); + assertTrue(realm instanceof PropertiesRealm); + + + } + + @Test + public void shiroFilterChainDefinition() { + ShiroFilterChainDefinition chainDefinition = app.shiroFilterChainDefinition(); + Map chainMap = chainDefinition.getFilterChainMap(); + assertEquals("anon", chainMap.get("/**")); + + + } +} \ No newline at end of file -- cgit 1.2.3-korg