summaryrefslogtreecommitdiffstats
path: root/sliapi
diff options
context:
space:
mode:
Diffstat (limited to 'sliapi')
-rw-r--r--sliapi/springboot/README.md8
-rw-r--r--sliapi/springboot/pom.xml13
-rw-r--r--sliapi/springboot/src/main/java/org/onap/ccsdk/sli/core/sliapi/springboot/App.java37
-rw-r--r--sliapi/springboot/src/main/resources/shiro-users.properties3
-rw-r--r--sliapi/springboot/src/test/java/org/onap/ccsdk/sli/core/sliapi/springboot/AppTest.java39
5 files changed, 96 insertions, 4 deletions
diff --git a/sliapi/springboot/README.md b/sliapi/springboot/README.md
index 3e47f341..38be1c2f 100644
--- a/sliapi/springboot/README.md
+++ b/sliapi/springboot/README.md
@@ -1,8 +1,12 @@
This directory contains a demo springboot implementation of the SLI-API healthcheck method.
-To start this server, run:
+To start this server with out AAF authentication, run:
mvn -DserviceLogicDirectory=src/main/resources spring-boot:run
+To start this server with AAF authentication, run:
+mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Dcadi_prop_files=/opt/onap/sdnc/data/properties/org.onap.sdnc.props -DserviceLogicDirectory=src/main/resources"
+
+
This will start a servlet on port 8080. To test to that servlet, post a blank
message to that port:
@@ -26,4 +30,4 @@ An example request
"mixed": "cAsE"
}
}
-``` \ No newline at end of file
+```
diff --git a/sliapi/springboot/pom.xml b/sliapi/springboot/pom.xml
index 8e889459..2a3fbcb0 100644
--- a/sliapi/springboot/pom.xml
+++ b/sliapi/springboot/pom.xml
@@ -18,6 +18,8 @@
<properties>
<start-class>org.onap.ccsdk.sli.core.sliapi.springboot.App</start-class>
+ <shiro.version>1.5.0</shiro.version>
+ <aaf-shiro-bundle.version>2.1.13</aaf-shiro-bundle.version>
</properties>
<dependencies>
@@ -26,8 +28,9 @@
<artifactId>swagger-annotations</artifactId>
</dependency>
<dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
+ <groupId>org.apache.shiro</groupId>
+ <artifactId>shiro-spring-boot-web-starter</artifactId>
+ <version>${shiro.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
@@ -40,6 +43,12 @@
<artifactId>spring-boot-starter-log4j2</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>
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<String, String> chainMap = chainDefinition.getFilterChainMap();
+ assertEquals("anon", chainMap.get("/**"));
+
+
+ }
+} \ No newline at end of file