From 9a0632b4cf6074129d52ab12b9be89b3e54c9746 Mon Sep 17 00:00:00 2001 From: Giancarlo Panichi Date: Mon, 12 Sep 2016 09:50:44 +0000 Subject: [PATCH] refs 4172: Dataminer interface enhancements Task-Url: https://support.d4science.org/issues/4172 Added Auth 2.0 git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/data-miner-manager@131277 82a268e6-3cf1-43bd-a215-b396298e98cf --- .classpath | 6 +- distro/changelog.xml | 8 ++- pom.xml | 2 +- .../server/DataMinerManagerServiceImpl.java | 3 - .../dataminermanager/server/SessionUtil.java | 71 +++++++++++-------- .../TestDataMinerService.java | 15 +++- 6 files changed, 67 insertions(+), 38 deletions(-) diff --git a/.classpath b/.classpath index 755fe5a..b267516 100644 --- a/.classpath +++ b/.classpath @@ -1,12 +1,12 @@ - + - + @@ -26,5 +26,5 @@ - + diff --git a/distro/changelog.xml b/distro/changelog.xml index 845b89f..1afb0d1 100644 --- a/distro/changelog.xml +++ b/distro/changelog.xml @@ -1,6 +1,12 @@ + + Updated to Auth 2.0 + Added Spatial data support [Ticket #4172] + Added Temporal data support [Ticket #4172] + + date="2016-07-01"> First release \ No newline at end of file diff --git a/pom.xml b/pom.xml index 95ff77c..adb7a0a 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ org.gcube.portlets.user data-miner-manager - 1.0.0-SNAPSHOT + 1.1.0-SNAPSHOT war data-miner-manager diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/server/DataMinerManagerServiceImpl.java b/src/main/java/org/gcube/portlets/user/dataminermanager/server/DataMinerManagerServiceImpl.java index dc450e4..3c2a4b1 100644 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/server/DataMinerManagerServiceImpl.java +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/server/DataMinerManagerServiceImpl.java @@ -1,13 +1,11 @@ package org.gcube.portlets.user.dataminermanager.server; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpSession; -import org.gcube.application.framework.accesslogger.library.impl.AccessLogger; import org.gcube.application.framework.core.session.ASLSession; import org.gcube.portlets.user.dataminermanager.client.bean.ComputationStatus; import org.gcube.portlets.user.dataminermanager.client.bean.Operator; @@ -44,7 +42,6 @@ import com.google.gwt.user.server.rpc.RemoteServiceServlet; @SuppressWarnings("serial") public class DataMinerManagerServiceImpl extends RemoteServiceServlet implements DataMinerPortletService { - public static AccessLogger accountinglog = AccessLogger.getAccessLogger(); private static Logger logger = LoggerFactory .getLogger(DataMinerManagerServiceImpl.class); diff --git a/src/main/java/org/gcube/portlets/user/dataminermanager/server/SessionUtil.java b/src/main/java/org/gcube/portlets/user/dataminermanager/server/SessionUtil.java index 794a536..df71c39 100644 --- a/src/main/java/org/gcube/portlets/user/dataminermanager/server/SessionUtil.java +++ b/src/main/java/org/gcube/portlets/user/dataminermanager/server/SessionUtil.java @@ -14,6 +14,7 @@ import javax.servlet.http.HttpSession; import org.apache.log4j.Logger; import org.gcube.application.framework.core.session.ASLSession; import org.gcube.application.framework.core.session.SessionManager; +import org.gcube.common.authorization.library.provider.UserInfo; import org.gcube.portal.custom.scopemanager.scopehelper.ScopeHelper; import org.gcube.portlets.user.dataminermanager.server.smservice.SClient; import org.gcube.portlets.user.dataminermanager.server.smservice.SClient4WPSBuilder; @@ -33,7 +34,7 @@ import org.gcube.portlets.user.dataminermanager.shared.exception.ServiceExceptio public class SessionUtil { private static final Logger logger = Logger.getLogger(SessionUtil.class); - + public static ASLSession getASLSession(HttpSession httpSession) throws ServiceException { String username = (String) httpSession @@ -67,61 +68,74 @@ public class SessionUtil { return aslSession; } - public static String getToken(ASLSession aslSession) { - String token=null; + public static String getToken(ASLSession aslSession) throws Exception { + String token = null; if (Constants.DEBUG_MODE) { List userRoles = new ArrayList<>(); userRoles.add(Constants.DEFAULT_ROLE); - /*if (aslSession.getUsername().compareTo("lucio.lelii") == 0) - userRoles.add("VRE-Manager");*/ - token = authorizationService().build().generate( - aslSession.getUsername(), userRoles); - + /* + * if (aslSession.getUsername().compareTo("lucio.lelii") == 0) + * userRoles.add("VRE-Manager"); + */ + try { + token = authorizationService().generateUserToken( + new UserInfo(aslSession.getUsername(), userRoles), + aslSession.getScope()); + } catch (Exception e) { + logger.error("Error generating the token for test: " + + e.getLocalizedMessage()); + e.printStackTrace(); + throw new Exception("Error generating the token for test: " + + e.getLocalizedMessage()); + } + } else { token = aslSession.getSecurityToken(); } logger.info("received token: " + token); return token; - - - } - + + } + public static SClient getSClient(ASLSession aslSession, HttpSession session) throws Exception { - if(aslSession==null){ + if (aslSession == null) { logger.error("ASLSession is null!"); throw new SessionExpiredServiceException("Session Expired!"); - } - SClient sClient; - - Object obj=session.getAttribute(Constants.SClientMap); - if(obj==null){ + } + SClient sClient; + + Object obj = session.getAttribute(Constants.SClientMap); + if (obj == null) { logger.info("Create new SClientMap"); - HashMap sClientMap=new HashMap<>(); + HashMap sClientMap = new HashMap<>(); logger.info("Create new SClient"); - ServiceCredential serviceCredential=new ServiceCredential(aslSession.getUsername(), aslSession.getScope(), + ServiceCredential serviceCredential = new ServiceCredential( + aslSession.getUsername(), aslSession.getScope(), SessionUtil.getToken(aslSession)); SClientBuilder sBuilder = new SClient4WPSBuilder(serviceCredential); SClientDirector director = new SClientDirector(); director.setSClientBuilder(sBuilder); director.constructSClient(); sClient = director.getSClient(); - + sClientMap.put(aslSession.getScope(), sClient); session.setAttribute(Constants.SClientMap, sClientMap); } else { if (obj instanceof HashMap) { @SuppressWarnings("unchecked") - HashMap sClientMap=(HashMap) obj; - if(sClientMap.containsKey(aslSession.getScope())){ + HashMap sClientMap = (HashMap) obj; + if (sClientMap.containsKey(aslSession.getScope())) { logger.info("Use SClient in session"); - sClient=sClientMap.get(aslSession.getScope()); + sClient = sClientMap.get(aslSession.getScope()); } else { logger.info("Create new SClient"); - ServiceCredential serviceCredential=new ServiceCredential(aslSession.getUsername(), aslSession.getScope(), + ServiceCredential serviceCredential = new ServiceCredential( + aslSession.getUsername(), aslSession.getScope(), SessionUtil.getToken(aslSession)); - SClientBuilder sBuilder = new SClient4WPSBuilder(serviceCredential); + SClientBuilder sBuilder = new SClient4WPSBuilder( + serviceCredential); SClientDirector director = new SClientDirector(); director.setSClientBuilder(sBuilder); @@ -130,10 +144,11 @@ public class SessionUtil { sClientMap.put(aslSession.getScope(), sClient); session.setAttribute(Constants.SClientMap, sClientMap); } - + } else { logger.error("Attention no SClientMap in Session!"); - throw new ServiceException("Sign Out, portlet is changed, a new session is required!"); + throw new ServiceException( + "Sign Out, portlet is changed, a new session is required!"); } } diff --git a/src/test/java/org/gcube/portlets/user/dataminermanager/TestDataMinerService.java b/src/test/java/org/gcube/portlets/user/dataminermanager/TestDataMinerService.java index ef01f01..9cef3a2 100644 --- a/src/test/java/org/gcube/portlets/user/dataminermanager/TestDataMinerService.java +++ b/src/test/java/org/gcube/portlets/user/dataminermanager/TestDataMinerService.java @@ -21,6 +21,7 @@ import junit.framework.TestCase; import org.apache.commons.codec.binary.Base64; import org.gcube.application.framework.core.session.ASLSession; import org.gcube.application.framework.core.session.SessionManager; +import org.gcube.common.authorization.library.provider.UserInfo; import org.gcube.portlets.user.dataminermanager.server.is.InformationSystemUtils; import org.gcube.portlets.user.dataminermanager.shared.Constants; import org.slf4j.Logger; @@ -61,8 +62,18 @@ public class TestDataMinerService extends TestCase { * if (aslSession.getUsername().compareTo("lucio.lelii") == 0) * userRoles.add("VRE-Manager"); */ - wpsToken = authorizationService().build().generate(wpsUser, - userRoles); + + try { + wpsToken = authorizationService().generateUserToken( + new UserInfo(aslSession.getUsername(), userRoles), + aslSession.getScope()); + } catch (Exception e) { + logger.error("Error generating the token for test: " + + e.getLocalizedMessage()); + e.printStackTrace(); + throw new Exception("Error generating the token for test: " + + e.getLocalizedMessage()); + } List serviceAddress = InformationSystemUtils .retrieveServiceAddress(