Fix creds issue with AAF 08/113908/2
authorsebdet <sebastien.determe@intl.att.com>
Thu, 15 Oct 2020 09:40:17 +0000 (11:40 +0200)
committersebdet <sebastien.determe@intl.att.com>
Thu, 15 Oct 2020 11:07:49 +0000 (13:07 +0200)
Fix the permissions not returned by AAF due to wrong code the clamp servlet.

Issue-ID: CLAMP-956
Signed-off-by: sebdet <sebastien.determe@intl.att.com>
Change-Id: I06fac82fb04421f154b67b625e910853ade8583f
Signed-off-by: sebdet <sebastien.determe@intl.att.com>
src/main/docker/backend/Dockerfile
src/main/java/org/onap/clamp/clds/ClampServlet.java
src/main/resources/application-noaaf.properties
src/main/resources/application.properties
src/test/resources/application.properties
src/test/resources/https/https-test.properties
src/test/resources/robotframework/robotframework-test.properties

index ebc1d57..8712f19 100644 (file)
@@ -42,4 +42,4 @@ COPY --chown=onap:onap onap-clamp-backend/clamp.jar /opt/clamp/app.jar
 \r
 USER onap\r
 WORKDIR /opt/clamp/\r
-ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom", "-jar" ,"./app.jar"]
\ No newline at end of file
+ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-XX:MinRAMPercentage=50 -XX:MaxRAMPercentage=75","-jar" ,"./app.jar"]
\ No newline at end of file
index 5908201..c199727 100644 (file)
@@ -28,9 +28,11 @@ package org.onap.clamp.clds;
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
 
+import fj.data.Array;
 import java.io.IOException;
 import java.security.Principal;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 import javax.servlet.ServletException;
@@ -69,16 +71,11 @@ public class ClampServlet extends CamelHttpTransportServlet {
 
     private static List<SecureServicePermission> permissionList;
 
-    private synchronized Class loadDynamicAuthenticationClass() {
-        try {
-            String authenticationObject = WebApplicationContextUtils.getWebApplicationContext(getServletContext())
-                    .getEnvironment().getProperty(AUTHENTICATION_CLASS);
-            return Class.forName(authenticationObject);
-        } catch (ClassNotFoundException e) {
-            logger.error(
-                    "Exception caught when attempting to create associated class of config:" + AUTHENTICATION_CLASS, e);
-            return Object.class;
-        }
+    private synchronized String[] loadDynamicAuthenticationClasses() {
+        String[] authenticationObjects = WebApplicationContextUtils.getWebApplicationContext(getServletContext())
+                .getEnvironment().getProperty(AUTHENTICATION_CLASS).split(",");
+        Arrays.stream(authenticationObjects).forEach(className -> className.trim());
+        return authenticationObjects;
     }
 
     private synchronized List<SecureServicePermission> getPermissionList() {
@@ -115,7 +112,8 @@ public class ClampServlet extends CamelHttpTransportServlet {
     @Override
     protected void doService(HttpServletRequest request, HttpServletResponse response) {
         Principal principal = request.getUserPrincipal();
-        if (loadDynamicAuthenticationClass().isInstance(principal)) {
+        if (principal != null && Arrays.stream(loadDynamicAuthenticationClasses())
+                .anyMatch(className -> className.equals(principal.getName()))) {
             // When AAF is enabled, there is a need to provision the permissions to Spring
             // system
             List<GrantedAuthority> grantedAuths = new ArrayList<>();
index 423c73e..6b28cf7 100644 (file)
@@ -173,7 +173,7 @@ clamp.config.security.permission.type.template=org.onap.clamp.clds.template
 clamp.config.security.permission.type.tosca=org.onap.clamp.clds.tosca
 #This one indicates the type of instances (dev|prod|perf...), this must be set accordingly in clds-users.properties
 clamp.config.security.permission.instance=dev
-clamp.config.security.authentication.class=org.onap.aaf.cadi.principal.X509Principal
+clamp.config.security.authentication.class=org.onap.aaf.cadi.principal.X509Principal, org.onap.aaf.cadi.principal.CachedBasicPrincipal
 
 ## Tosca converter
 clamp.config.tosca.converter.json.schema.templates=classpath:/clds/tosca-converter/templates.json
index de32098..1b5a26d 100644 (file)
@@ -176,13 +176,13 @@ clamp.config.security.permission.type.template=org.onap.clamp.clds.template
 clamp.config.security.permission.type.tosca=org.onap.clamp.clds.tosca
 #This one indicates the type of instances (dev|prod|perf...), this must be set accordingly in clds-users.properties
 clamp.config.security.permission.instance=dev
-clamp.config.security.authentication.class=org.onap.aaf.cadi.principal.X509Principal
+clamp.config.security.authentication.class=org.onap.aaf.cadi.principal.X509Principal, org.onap.aaf.cadi.principal.CachedBasicPrincipal
 
 #AAF related parameters
 clamp.config.cadi.cadiLoglevel=DEBUG
 clamp.config.cadi.cadiLatitude=10
 clamp.config.cadi.cadiLongitude=10
-clamp.config.cadi.aafLocateUrl=https://aaf-locate:8095
+clamp.config.cadi.aafLocateUrl=https://aaf-locate:30251
 clamp.config.cadi.oauthTokenUrl= https://AAF_LOCATE_URL/locate/onap.org.osaaf.aaf.token:2.1/token
 clamp.config.cadi.oauthIntrospectUrll=https://AAF_LOCATE_URL/locate/onap.org.osaaf.aaf.introspect:2.1/introspect
 clamp.config.cadi.aafEnv=DEV
index a8ec7ad..5a668dc 100644 (file)
@@ -160,8 +160,7 @@ clamp.config.security.permission.type.template=permission-type-template
 clamp.config.security.permission.type.tosca=permission-type-tosca
 #This one indicates the type of instances (dev|prod|perf...), this must be set accordingly in clds-users.properties
 clamp.config.security.permission.instance=dev
-clamp.config.security.authentication.class=org.onap.aaf.cadi.principal.X509Principal
-
+clamp.config.security.authentication.class=org.onap.aaf.cadi.principal.X509Principal, org.onap.aaf.cadi.principal.CachedBasicPrincipal
 # Configuration settings for CDS
 clamp.config.cds.url=http4://localhost:${docker.http-cache.port.host}
 clamp.config.cds.userName=ccsdkapps
index 6f3a405..86e444e 100644 (file)
@@ -116,7 +116,7 @@ clamp.config.security.permission.type.template=org.onap.clamp.clds.template
 clamp.config.security.permission.type.tosca=org.onap.clamp.clds.tosca
 #This one indicates the type of instances (dev|prod|perf...), this must be set accordingly in clds-users.properties
 clamp.config.security.permission.instance=dev
-clamp.config.security.authentication.class=org.onap.aaf.cadi.principal.X509Principal
+clamp.config.security.authentication.class=org.onap.aaf.cadi.principal.X509Principal, org.onap.aaf.cadi.principal.CachedBasicPrincipal
 
 #AAF related parameters
 clamp.config.cadi.cadiLoglevel=DEBUG
index 4ec6573..665842b 100644 (file)
@@ -160,7 +160,7 @@ clamp.config.security.permission.type.template=permission-type-template
 clamp.config.security.permission.type.tosca=permission-type-tosca
 #This one indicates the type of instances (dev|prod|perf...), this must be set accordingly in clds-users.properties
 clamp.config.security.permission.instance=dev
-clamp.config.security.authentication.class=org.onap.aaf.cadi.principal.X509Principal
+clamp.config.security.authentication.class=org.onap.aaf.cadi.principal.X509Principal, org.onap.aaf.cadi.principal.CachedBasicPrincipal
 
 # Configuration settings for CDS
 clamp.config.cds.url=http4://localhost:${docker.http-cache.port.host}