* Copyright (C) 2018 AT&T Intellectual Property. All rights
* reserved.
* ================================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
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;
import javax.servlet.http.HttpServletResponse;
import org.apache.camel.component.servlet.CamelHttpTransportServlet;
-import org.onap.clamp.clds.service.SecureServicePermission;
+import org.onap.clamp.authorization.SecureServicePermission;
import org.springframework.context.ApplicationContext;
import org.springframework.http.HttpStatus;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
*/
private static final long serialVersionUID = -4198841134910211542L;
- protected static final EELFLogger logger = EELFManager.getInstance().getLogger(ClampServlet.class);
- public static final String PERM_INSTANCE = "clamp.config.security.permission.instance";
- public static final String PERM_CL = "clamp.config.security.permission.type.cl";
- public static final String PERM_TEMPLATE = "clamp.config.security.permission.type.template";
- public static final String PERM_VF = "clamp.config.security.permission.type.filter.vf";
- public static final String PERM_MANAGE = "clamp.config.security.permission.type.cl.manage";
- public static final String PERM_TOSCA = "clamp.config.security.permission.type.tosca";
- public static final String AUTHENTICATION_CLASS = "clamp.config.security.authentication.class";
+ private static final EELFLogger logger = EELFManager.getInstance().getLogger(ClampServlet.class);
+ private static final String PERM_INSTANCE = "clamp.config.security.permission.instance";
+ private static final String PERM_CL = "clamp.config.security.permission.type.cl";
+ private static final String PERM_TEMPLATE = "clamp.config.security.permission.type.template";
+ private static final String PERM_VF = "clamp.config.security.permission.type.filter.vf";
+ private static final String PERM_MANAGE = "clamp.config.security.permission.type.cl.manage";
+ private static final String PERM_TOSCA = "clamp.config.security.permission.type.tosca";
+ private static final String AUTHENTICATION_CLASS = "clamp.config.security.authentication.class";
+ private static final String READ = "read";
+ private static final String UPDATE = "update";
+
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() {
if (permissionList == null) {
permissionList = new ArrayList<>();
ApplicationContext applicationContext = WebApplicationContextUtils
- .getWebApplicationContext(getServletContext());
+ .getWebApplicationContext(getServletContext());
String cldsPermissionInstance = applicationContext.getEnvironment().getProperty(PERM_INSTANCE);
permissionList.add(SecureServicePermission.create(applicationContext.getEnvironment().getProperty(PERM_CL),
- cldsPermissionInstance, "read"));
+ cldsPermissionInstance, READ));
permissionList.add(SecureServicePermission.create(applicationContext.getEnvironment().getProperty(PERM_CL),
- cldsPermissionInstance, "update"));
+ cldsPermissionInstance, UPDATE));
permissionList.add(SecureServicePermission.create(
- applicationContext.getEnvironment().getProperty(PERM_TEMPLATE), cldsPermissionInstance, "read"));
+ applicationContext.getEnvironment().getProperty(PERM_TEMPLATE), cldsPermissionInstance, READ));
permissionList.add(SecureServicePermission.create(
- applicationContext.getEnvironment().getProperty(PERM_TEMPLATE), cldsPermissionInstance, "update"));
+ applicationContext.getEnvironment().getProperty(PERM_TEMPLATE), cldsPermissionInstance, UPDATE));
permissionList.add(SecureServicePermission.create(applicationContext.getEnvironment().getProperty(PERM_VF),
- cldsPermissionInstance, "*"));
+ cldsPermissionInstance, "*"));
permissionList.add(SecureServicePermission
- .create(applicationContext.getEnvironment().getProperty(PERM_MANAGE), cldsPermissionInstance, "*"));
+ .create(applicationContext.getEnvironment().getProperty(PERM_MANAGE), cldsPermissionInstance, "*"));
permissionList.add(SecureServicePermission
- .create(applicationContext.getEnvironment().getProperty(PERM_TOSCA), cldsPermissionInstance, "read"));
+ .create(applicationContext.getEnvironment().getProperty(PERM_TOSCA), cldsPermissionInstance, READ));
permissionList.add(SecureServicePermission
- .create(applicationContext.getEnvironment().getProperty(PERM_TOSCA), cldsPermissionInstance, "update"));
+ .create(applicationContext.getEnvironment().getProperty(PERM_TOSCA),
+ cldsPermissionInstance, UPDATE));
}
return permissionList;
}
* to isUserInRole will invoke a http call to AAF server.
*/
@Override
- protected void doService(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
+ 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<>();
grantedAuths.add(new SimpleGrantedAuthority(permString));
}
}
- Authentication auth = new UsernamePasswordAuthenticationToken(new User(principal.getName(), "", grantedAuths), "",
- grantedAuths);
+ Authentication auth = new UsernamePasswordAuthenticationToken(new User(principal.getName(), "",
+ grantedAuths), "", grantedAuths);
SecurityContextHolder.getContext().setAuthentication(auth);
}
try {
logger.error("Exception caught when executing HTTP sendError in servlet", e);
}
}
-
}
-}
\ No newline at end of file
+}