You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by la...@apache.org on 2012/10/30 19:52:29 UTC

svn commit: r1403813 [1/2] - in /airavata/sandbox/airavata-rest-security: ./ modules/commons/airavata-registry-rest/ modules/commons/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/resources/ modules/commons/airavata-reg...

Author: lahiru
Date: Tue Oct 30 18:52:27 2012
New Revision: 1403813

URL: http://svn.apache.org/viewvc?rev=1403813&view=rev
Log:
Adding credential store changes

Added:
    airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/b.sh   (with props)
    airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/resources/CredentialStoreAPI.java
    airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/resources/credential-store/
    airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/resources/credential-store/client.xml
    airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/resources/credential-store/oauth-privkey.pk8
    airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/resources/credential-store/oauth-pubkey.pem
    airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/webapp/credential-store/
    airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/webapp/credential-store/error.jsp
    airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/webapp/credential-store/show-redirect.jsp
    airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/webapp/credential-store/success.jsp
    airavata/sandbox/airavata-rest-security/modules/credential-store/
    airavata/sandbox/airavata-rest-security/modules/credential-store/credential-store.iml
    airavata/sandbox/airavata-rest-security/modules/credential-store/pom.xml
    airavata/sandbox/airavata-rest-security/modules/credential-store/scripts/
    airavata/sandbox/airavata-rest-security/modules/credential-store/scripts/credential-store-h2.sql
    airavata/sandbox/airavata-rest-security/modules/credential-store/scripts/credential-store-mysql.sql
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/AuditInfo.java
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/CertificateCredential.java
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/CommunityUser.java
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/Credential.java
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/CredentialStore.java
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/CredentialStoreException.java
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/CredentialWriter.java
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/Mapping.java
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/impl/
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/impl/CertificateCredentialWriter.java
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/impl/CredentialStoreImpl.java
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/impl/db/
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/impl/db/CommunityUserDAO.java
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/impl/db/CredentialsDAO.java
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/impl/db/MappingDAO.java
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/impl/db/ParentDAO.java
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/servlet/
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/servlet/CredentialBootstrapper.java
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/servlet/CredentialStoreCallbackServlet.java
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/servlet/CredentialStoreOA4MPServer.java
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/servlet/CredentialStoreStartServlet.java
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/util/
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/util/DBUtil.java
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/util/Utility.java
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/test/
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/test/java/
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/test/java/org/
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/test/java/org/apache/
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/test/java/org/apache/airavata/
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/test/java/org/apache/airavata/credential/
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/test/java/org/apache/airavata/credential/store/
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/test/java/org/apache/airavata/credential/store/impl/
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/test/java/org/apache/airavata/credential/store/impl/db/
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/test/java/org/apache/airavata/credential/store/impl/db/CommunityUserDAOTest.java
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/test/java/org/apache/airavata/credential/store/impl/db/CredentialsDAOTest.java
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/test/java/org/apache/airavata/credential/store/impl/db/DAOBaseTestCase.java
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/test/java/org/apache/airavata/credential/store/impl/db/MappingDAOTest.java
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/test/resources/
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/test/resources/keystore.jks   (with props)
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/test/resources/testdb/
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/test/resources/testdb/test/
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/test/resources/testdb/test.h2.db   (with props)
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/test/resources/testdb/test.trace.db
    airavata/sandbox/airavata-rest-security/modules/credential-store/src/test/resources/testdb/test/test.trace.db
    airavata/sandbox/airavata-rest-security/modules/security/src/test/resources/disabled-authenticator.xml
Modified:
    airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/pom.xml
    airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/resources/RegistryApplication.java
    airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/security/HttpAuthenticatorFilter.java
    airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/utils/RegistryListener.java
    airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/resources/authenticators.xml
    airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/webapp/WEB-INF/web.xml
    airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/webapp/index.jsp
    airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/test/resources/testdb/test.h2.db
    airavata/sandbox/airavata-rest-security/modules/security/src/main/java/org/apache/airavata/security/configurations/AuthenticatorConfigurationReader.java
    airavata/sandbox/airavata-rest-security/modules/security/src/test/java/org/apache/airavata/security/configurations/AuthenticatorConfigurationReaderTest.java
    airavata/sandbox/airavata-rest-security/modules/security/src/test/resources/testdb/test.h2.db
    airavata/sandbox/airavata-rest-security/pom.xml

Added: airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/b.sh
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/b.sh?rev=1403813&view=auto
==============================================================================
--- airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/b.sh (added)
+++ airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/b.sh Tue Oct 30 18:52:27 2012
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+cd ../../credential-store/;mvn -Dmaven.test.skip=true install;cd ../commons/airavata-registry-rest ;mvn clean install
+cp target/airavata-registry-rest-services.war /Users/thejaka/development/tools/apache-tomcat-6.0.35/webapps/
+#scp target/airavata-registry-rest-services.war amila@156.56.179.104:/home/amila/development/tools/apache-tomcat-7.0.29/webapps/

Propchange: airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/b.sh
------------------------------------------------------------------------------
    svn:executable = *

Modified: airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/pom.xml
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/pom.xml?rev=1403813&r1=1403812&r2=1403813&view=diff
==============================================================================
--- airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/pom.xml (original)
+++ airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/pom.xml Tue Oct 30 18:52:27 2012
@@ -67,6 +67,11 @@
             <artifactId>commons-codec</artifactId>
             <version>1.6</version>
         </dependency>
+        <dependency>
+            <groupId>edu.uiuc.ncsa.myproxy</groupId>
+            <artifactId>oa4mp-client-oauth1</artifactId>
+            <version>1.0.5</version>
+        </dependency>
 		<dependency>
 			<groupId>com.sun.jersey</groupId>
 			<artifactId>jersey-servlet</artifactId>
@@ -128,6 +133,12 @@
 			<artifactId>airavata-client-api</artifactId>
 			<version>${airavata.version}</version>
 		</dependency-->
+
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>credential-store</artifactId>
+            <version>0.5-incubating-SNAPSHOT</version>
+        </dependency>
         <dependency>
 			<groupId>org.apache.airavata</groupId>
 			<artifactId>airavata-registry-api</artifactId>
@@ -150,21 +161,21 @@
 			<artifactId>slf4j-api</artifactId>
 			<version>${org.slf4j.version}</version>
 		</dependency>
-		<dependency>
+		<!--dependency>
 			<groupId>org.slf4j</groupId>
 			<artifactId>slf4j-simple</artifactId>
 			<version>${org.slf4j.version}</version>
-		</dependency>
-		<dependency>
+		</dependency-->
+		<!--dependency>
 			<groupId>org.slf4j</groupId>
 			<artifactId>jcl-over-slf4j</artifactId>
 			<version>${org.slf4j.version}</version>
-		</dependency>
-		<dependency>
+		</dependency-->
+		<!--dependency>
 			<groupId>org.slf4j</groupId>
 			<artifactId>slf4j-log4j12</artifactId>
 			<version>${org.slf4j.version}</version>
-		</dependency>
+		</dependency-->
 		<dependency>
 			<groupId>log4j</groupId>
 			<artifactId>log4j</artifactId>
@@ -189,7 +200,7 @@
 		<cargo.debug.address>8000</cargo.debug.address>
 		<!-- if you want to start remote debugging session suspended override on
 			command line with -Dcargo.debug.suspend=y -->
-		<cargo.debug.suspend>n</cargo.debug.suspend>
+		<cargo.debug.suspend>y</cargo.debug.suspend>
 		<javaagent />
 	</properties>
 	  <repositories>

Added: airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/resources/CredentialStoreAPI.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/resources/CredentialStoreAPI.java?rev=1403813&view=auto
==============================================================================
--- airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/resources/CredentialStoreAPI.java (added)
+++ airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/resources/CredentialStoreAPI.java Tue Oct 30 18:52:27 2012
@@ -0,0 +1,106 @@
+package org.apache.airavata.services.registry.rest.resources;
+
+import org.apache.airavata.credential.store.AuditInfo;
+import org.apache.airavata.credential.store.CredentialStore;
+import org.apache.airavata.credential.store.CredentialStoreException;
+import org.apache.airavata.services.registry.rest.utils.RegistryListener;
+
+import javax.servlet.ServletContext;
+import javax.ws.rs.*;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.Response;
+
+/**
+ * API to access the credential store.
+ * Provides methods to manage credential store and to query information in credential store.
+ * Though we will not provide methods to retrieve credentials.
+ * We will trust the portal to execute following operations and we will also assume
+ * portal interface will implement appropriate authentication and authorization.
+ */
+
+@Path("/credentialStore")
+public class CredentialStoreAPI {
+
+    @Context
+    ServletContext context;
+
+    @Path("/get/portalUser")
+    @GET
+    @Produces("text/plain")
+    public Response getAssociatingPortalUser(@QueryParam("gatewayName")String gatewayName,
+                                                @QueryParam("communityUserName")String communityUser) {
+        try {
+            String result = getCredentialStore().getPortalUser(gatewayName, communityUser);
+            return getOKResponse(result);
+
+        } catch (CredentialStoreException e) {
+            return getErrorResponse(e);
+        }
+    }
+
+    @Path("/get/portalUser")
+    @GET
+    @Produces("text/plain")
+    public Response getAuditInfo(@QueryParam("gatewayName")String gatewayName,
+                                             @QueryParam("communityUserName")String communityUser) {
+        try {
+            AuditInfo auditInfo = getCredentialStore().getAuditInfo(gatewayName, communityUser);
+            return getOKResponse(auditInfo);
+
+        } catch (CredentialStoreException e) {
+            return getErrorResponse(e);
+        }
+    }
+
+    @Path("/delete/credential")
+    @POST
+    @Produces("text/plain")
+    public Response removeCredentials(@QueryParam("gatewayName")String gatewayName,
+                                      @QueryParam("communityUserName")String communityUser) {
+        try {
+            getCredentialStore().removeCredentials(gatewayName, communityUser);
+            return getOKResponse("success");
+        } catch (CredentialStoreException e) {
+            return getErrorResponse(e);
+        }
+    }
+
+    @Path("/update/email")
+    @POST
+    @Produces("text/plain")
+    public Response updateCommunityUserEmail(@QueryParam("gatewayName")String gatewayName,
+                                      @QueryParam("communityUserName")String communityUser,
+                                      @QueryParam("email")String email) {
+        try {
+            getCredentialStore().updateCommunityUserEmail(gatewayName, communityUser, email);
+            return getOKResponse("success");
+        } catch (CredentialStoreException e) {
+            return getErrorResponse(e);
+        }
+    }
+
+
+    private CredentialStore getCredentialStore() {
+        return (CredentialStore) context.getAttribute(RegistryListener.CREDENTIAL_STORE);
+    }
+
+    private Response getOKResponse(String result) {
+        Response.ResponseBuilder builder = Response.status(Response.Status.OK);
+        builder.entity(result);
+        return builder.build();
+    }
+
+    private Response getOKResponse(AuditInfo result) {
+        Response.ResponseBuilder builder = Response.status(Response.Status.OK);
+        builder.entity(result);
+        return builder.build();
+    }
+
+    private Response getErrorResponse(CredentialStoreException exception) {
+        Response.ResponseBuilder builder = Response.status(Response.Status.BAD_REQUEST);
+        builder.entity(exception.getMessage());
+        return builder.build();
+    }
+
+
+}

Modified: airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/resources/RegistryApplication.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/resources/RegistryApplication.java?rev=1403813&r1=1403812&r2=1403813&view=diff
==============================================================================
--- airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/resources/RegistryApplication.java (original)
+++ airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/resources/RegistryApplication.java Tue Oct 30 18:52:27 2012
@@ -10,6 +10,7 @@ public class RegistryApplication extends
         final Set<Class<?>> classes = new HashSet<Class<?>>();
         // register root resource
         classes.add(RegistryResource.class);
+        classes.add(CredentialStoreAPI.class);
         return classes;
     }
 

Modified: airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/security/HttpAuthenticatorFilter.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/security/HttpAuthenticatorFilter.java?rev=1403813&r1=1403812&r2=1403813&view=diff
==============================================================================
--- airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/security/HttpAuthenticatorFilter.java (original)
+++ airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/security/HttpAuthenticatorFilter.java Tue Oct 30 18:52:27 2012
@@ -11,10 +11,8 @@ import javax.servlet.*;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.xml.parsers.ParserConfigurationException;
-import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
-import java.net.URISyntaxException;
 import java.util.Calendar;
 import java.util.List;
 
@@ -83,6 +81,12 @@ public class HttpAuthenticatorFilter imp
     @Override
     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
 
+        // Firs check whether authenticators are disabled
+        if (! AuthenticatorConfigurationReader.isAuthenticationEnabled()) {
+            filterChain.doFilter(servletRequest, servletResponse);
+            return;
+        }
+
         HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
 
         Authenticator authenticator = getAuthenticator(httpServletRequest);

Modified: airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/utils/RegistryListener.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/utils/RegistryListener.java?rev=1403813&r1=1403812&r2=1403813&view=diff
==============================================================================
--- airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/utils/RegistryListener.java (original)
+++ airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/java/org/apache/airavata/services/registry/rest/utils/RegistryListener.java Tue Oct 30 18:52:27 2012
@@ -1,5 +1,8 @@
 package org.apache.airavata.services.registry.rest.utils;
 
+import org.apache.airavata.credential.store.CredentialStore;
+import org.apache.airavata.credential.store.impl.CredentialStoreImpl;
+import org.apache.airavata.credential.store.util.DBUtil;
 import org.apache.airavata.registry.api.AiravataRegistry;
 import org.apache.airavata.registry.api.Axis2Registry;
 import org.apache.airavata.registry.api.DataRegistry;
@@ -19,6 +22,8 @@ public class RegistryListener implements
     private static Axis2Registry axis2Registry;
     private static DataRegistry dataRegistry;
 
+    public static final String CREDENTIAL_STORE = "credentialStore";
+
 
     protected static Logger log = LoggerFactory.getLogger(RegistryListener.class);
 
@@ -45,11 +50,21 @@ public class RegistryListener implements
             servletContext.setAttribute("airavataRegistry", airavataRegistry);
             servletContext.setAttribute("axis2Registry", axis2Registry);
             servletContext.setAttribute("dataRegistry", dataRegistry);
+
+            initializeCredentialStoreAPI(servletContext);
+
         } catch (Exception e) {
             e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
         }
     }
 
+    private void initializeCredentialStoreAPI(ServletContext servletContext) throws Exception {
+
+        CredentialStore credentialStore = new CredentialStoreImpl(DBUtil.getDBUtil(servletContext));
+        servletContext.setAttribute(CREDENTIAL_STORE, credentialStore);
+
+    }
+
 
     public void contextDestroyed(ServletContextEvent servletContextEvent) {
 

Modified: airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/resources/authenticators.xml
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/resources/authenticators.xml?rev=1403813&r1=1403812&r2=1403813&view=diff
==============================================================================
--- airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/resources/authenticators.xml (original)
+++ airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/resources/authenticators.xml Tue Oct 30 18:52:27 2012
@@ -5,9 +5,11 @@ This file contains a sample authenticato
 configuration has to start with tag "authenticator". The name is the name given to the authenticator. The actual
 authenticator implementation is implemented in the class. There are configurations specific to authenticators.
 Those configurations are reside inside &lt;specificConfigurations&gt; tags.
+
+The "enabled parameter at root level will say whether authenticators are enabled or not.
 -->
 
-<authenticators>
+<authenticators enabled="true">
     <authenticator name="sessionAuthenticator" class="org.apache.airavata.services.registry.rest.security.session.SessionAuthenticator"
                    enabled="true" priority="6" userstore="org.apache.airavata.security.userstore.SessionDBUserStore">
         <specificConfigurations>
@@ -42,7 +44,7 @@ Those configurations are reside inside &
     </authenticator>
 
     <authenticator name="basicAccessAuthenticatorLdap" class="org.apache.airavata.services.registry.rest.security.basic.BasicAccessAuthenticator"
-                   enabled="true" priority="6" userstore="org.apache.airavata.security.userstore.LDAPUserStore">
+                   enabled="true" priority="8" userstore="org.apache.airavata.security.userstore.LDAPUserStore">
         <specificConfigurations>
             <ldap>
                 <!--

Added: airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/resources/credential-store/client.xml
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/resources/credential-store/client.xml?rev=1403813&view=auto
==============================================================================
--- airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/resources/credential-store/client.xml (added)
+++ airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/resources/credential-store/client.xml Tue Oct 30 18:52:27 2012
@@ -0,0 +1,13 @@
+<config>
+    <client name="sample">
+        <id>myproxy:oa4mp,2012:/client/24c45c2eb65d93231d02d423e94d0362</id>
+        <serviceUri>https://portal.xsede.org/oauth</serviceUri>
+        <!--callbackUri>https://156.56.179.104:8443/client/pages/client-success.jsp</callbackUri-->
+        <callbackUri>https://140.182.131.37:8443/airavata-registry-rest-services/callback</callbackUri>
+        <lifetime>864000</lifetime>
+        <!--publicKeyFile>/home/amila/development/tools/apache-tomcat-7.0.29/webapps/airavata-registry-rest-services/WEB-INF/classes/credential-store/oauth-pubkey.pem</publicKeyFile-->
+        <publicKeyFile>webapps/airavata-registry-rest-services/WEB-INF/classes/credential-store/oauth-pubkey.pem</publicKeyFile>
+        <!--privateKeyFile>/home/amila/development/tools/apache-tomcat-7.0.29/webapps/airavata-registry-rest-services/WEB-INF/classes/credential-store/oauth-privkey.pk8</privateKeyFile-->
+        <privateKeyFile>webapps/airavata-registry-rest-services/WEB-INF/classes/credential-store/oauth-privkey.pk8</privateKeyFile>
+    </client>
+</config>

Added: airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/resources/credential-store/oauth-privkey.pk8
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/resources/credential-store/oauth-privkey.pk8?rev=1403813&view=auto
==============================================================================
--- airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/resources/credential-store/oauth-privkey.pk8 (added)
+++ airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/resources/credential-store/oauth-privkey.pk8 Tue Oct 30 18:52:27 2012
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDJAc14swfpUZOb
+T9VFGIgSGfBBnfJXcf/Pa9s6igXQBevRohJ1FdQ9y3kaLDXngVh6/xIKAgfCu10O
+7o2ZNi7K5NS37LDYehw+fzrRlOVHLOkHQ/XVvJfMENPv8emMmAkiFK1WxeITKBC8
+GkrbQGy3k7kfo8om2op7Tc0wAUZOcOrd0VQE5yUeF7ODmg7YwYgILlNSHTrK9rmz
+5WvJRwAnouAWQZxir/+Zzb9ynMK/2AraOWaHHO7V41B/JU55lqLI8DZOrLk5ZAAN
+OXEMIFAoeSyRbQMDDJ0QzMjRovuz15IaEMpn83p4q7pAwPK7UkK3yO5bWP15qiM2
+daWVJv55AgMBAAECggEAEzcZ5lTvB63lt24tTBqpP1m9bvhjZ1qdgr2jynfRUG6Q
+eYzNyOWaUYH3BLp/OK9TvwZNOimxhjsVDU1euevFE15Gu4Jj8X3S32KYQ9rBBEnV
+yP0FLjaGKFrfd8ufcPJDxT9GxsnJ79zfpKu6xjTlb7MuekjVFVvE6z6nw9QLXYog
+bdjPFgPKWynl5ALNjenZMDFgCSIvdVcjgwdOLpDuPYdfD+JBZVFg+YCXaEQKkpXZ
+AHTuDO4Zq5JuUkHr3I+MwhCvIwgImQ/yfw0Vn+kj+WIrY6lyyO58NmAA7FXefPmC
+B0IKsdWFqXDzJMm15Kn4h4IeudR55UmRSIgk17N60QKBgQDuDlvxHBUUJI/7OkFB
+/bvqF8K+11PUpOIBxhgOw/76tgX4penYGmqVDDpYBO+ae+kKfASQIp91uOJc3JeH
+itm7k6HIzHqSJFSTXkRO3KxHgkyYo8o2IWXWYPhPt93edC3AKqOUMlrNXdyfuAPx
+Nh4xCvhgOZDxrQoNldzzjaHuHQKBgQDYKIcfiQuVsjc4Opu1fn57fagrPUfNOM/p
+u5chh+mOb2GhTzDa0I4OiWz05fSho/uakYgiXE/D0oIe4S9sCTMai+pjtp1jt6sg
+ZO7QLPhj6ct1VF6VYButHOwpKS70MFcdihYOIP49Gonw/P8Xu+HY0Qhc760rjwcI
+ga/4r5zTDQKBgAgERcZd2rvd61dbg90UDWL5v94rZDBSCSZkJGVC5nBM9vCDrddQ
+NGymh8R1DhiWuadXu9OaxuHxAvZ7m0K+Q0zU0OrxL+OCA7MexpAdUFPsKGYvhdzC
+zSomA9aza25VXUEObonMFFC8K3TZfpB98RBXvTuIVMA+worolBNDnsNlAoGBAI4B
+uhvGnfy/czWWk1sd+hxJBiU6AiTZ0QW9/uDBeHfhxqMB8peeceUs9Y7CT/+tSotW
+Vrg0Kxb8Ag4lZFE2jgM/rkHJ5AZx0JPcm2PaV2jUXJz9S5IY7LXDDYdRDg7Qfzrh
+z/GCTWR5Pew7WZ8PCKW3ViYwM3UtZrJ4+NGJFZ81AoGBAIPOt5Ge30dEGLh0UUBg
+y60MUR6jcUDmIl8x88h+O97qMjf5fsVshOR+GhFKSYQdibDo3HO+sRKS6pii9v5e
+IXZD0wUr2HznpGXrAn7CmHEM7ms0TBfy4IOkewrYAhlK/yilfkmjyS8tjLlRB2Kv
+xHv7LOgh04rFHhYdztDWPj3z
+-----END PRIVATE KEY-----

Added: airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/resources/credential-store/oauth-pubkey.pem
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/resources/credential-store/oauth-pubkey.pem?rev=1403813&view=auto
==============================================================================
--- airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/resources/credential-store/oauth-pubkey.pem (added)
+++ airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/resources/credential-store/oauth-pubkey.pem Tue Oct 30 18:52:27 2012
@@ -0,0 +1,9 @@
+-----BEGIN PUBLIC KEY-----
+MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyQHNeLMH6VGTm0/VRRiI
+EhnwQZ3yV3H/z2vbOooF0AXr0aISdRXUPct5Giw154FYev8SCgIHwrtdDu6NmTYu
+yuTUt+yw2HocPn860ZTlRyzpB0P11byXzBDT7/HpjJgJIhStVsXiEygQvBpK20Bs
+t5O5H6PKJtqKe03NMAFGTnDq3dFUBOclHhezg5oO2MGICC5TUh06yva5s+VryUcA
+J6LgFkGcYq//mc2/cpzCv9gK2jlmhxzu1eNQfyVOeZaiyPA2Tqy5OWQADTlxDCBQ
+KHkskW0DAwydEMzI0aL7s9eSGhDKZ/N6eKu6QMDyu1JCt8juW1j9eaojNnWllSb+
+eQIDAQAB
+-----END PUBLIC KEY-----

Modified: airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/webapp/WEB-INF/web.xml?rev=1403813&r1=1403812&r2=1403813&view=diff
==============================================================================
--- airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/webapp/WEB-INF/web.xml (original)
+++ airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/webapp/WEB-INF/web.xml Tue Oct 30 18:52:27 2012
@@ -1,14 +1,51 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- This web.xml file is not required when using Servlet 3.0 container,
      see implementation details http://jersey.java.net/nonav/documentation/latest/jax-rs.html#d4e194 -->
-<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
     <listener>
-      <listener-class>org.apache.airavata.services.registry.rest.utils.RegistryListener</listener-class>
+        <listener-class>org.apache.airavata.services.registry.rest.utils.RegistryListener</listener-class>
     </listener>
-     <!--context-param>
-      <param-name>authenticatorConfigurations</param-name>
-      <param-value>/WEB-INF/classes/authenticator.configurations.xml</param-value>
-    </context-param -->
+    <listener>
+        <listener-class>org.apache.airavata.credential.store.servlet.CredentialBootstrapper</listener-class>
+    </listener>
+
+    <context-param>
+        <param-name>oa4mp:client.config.file</param-name>
+        <param-value>webapps/airavata-registry-rest-services/WEB-INF/classes/credential-store/client.xml</param-value>
+        <!--param-value>
+            /home/amila/development/tools/apache-tomcat-7.0.29/webapps/airavata-registry-rest-services/WEB-INF/classes/credential-store/client.xml
+        </param-value-->
+
+    </context-param>
+
+
+    <!--context-param>
+     <param-name>authenticatorConfigurations</param-name>
+     <param-value>/WEB-INF/classes/authenticator.configurations.xml</param-value>
+   </context-param -->
+
+    <!-- Credential store parameters -->
+    <context-param>
+        <param-name>credential-store-jdbc-url</param-name>
+        <param-value>jdbc:mysql://localhost/airavata</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>credential-store-db-user</param-name>
+        <param-value>root</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>credential-store-db-password</param-name>
+        <param-value>root123</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>credential-store-db-driver</param-name>
+        <param-value>com.mysql.jdbc.Driver</param-value>
+    </context-param>
+
 
     <filter>
         <filter-name>AuthenticationFilter</filter-name>
@@ -34,10 +71,44 @@
     </servlet>
     <servlet-mapping>
         <servlet-name>Airavata Web Application</servlet-name>
-        <url-pattern>/*</url-pattern>
+        <url-pattern>/api/*</url-pattern>
     </servlet-mapping>
     <filter-mapping>
         <filter-name>AuthenticationFilter</filter-name>
-        <url-pattern>/*</url-pattern>
+        <url-pattern>/api/*</url-pattern>
     </filter-mapping>
+
+    <!-- Credential Store Configurations -->
+    <servlet>
+        <servlet-name>credential-store</servlet-name>
+        <!--internal name of the servlet-->
+        <servlet-class>org.apache.airavata.credential.store.servlet.CredentialStoreStartServlet</servlet-class>
+
+        <load-on-startup>1</load-on-startup>
+        <!--load as soon as tomcat starts?-->
+    </servlet>
+
+    <servlet-mapping>
+        <servlet-name>credential-store</servlet-name>
+        <!--the servlet-name above-->
+        <url-pattern>/credential-store</url-pattern>
+        <!--what needs to be in the url, so http://foo.org/client/simple-->
+    </servlet-mapping>
+
+    <servlet>
+        <servlet-name>callback</servlet-name>
+        <!--internal name of the servlet-->
+        <servlet-class>org.apache.airavata.credential.store.servlet.CredentialStoreCallbackServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+        <!--load as soon as tomcat starts?-->
+    </servlet>
+
+    <servlet-mapping>
+        <servlet-name>callback</servlet-name>
+        <!--the servlet-name above-->
+        <url-pattern>/callback</url-pattern>
+        <!--what needs to be in the url, so http://foo.org/client/simple-->
+    </servlet-mapping>
+
+
 </web-app>

Added: airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/webapp/credential-store/error.jsp
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/webapp/credential-store/error.jsp?rev=1403813&view=auto
==============================================================================
--- airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/webapp/credential-store/error.jsp (added)
+++ airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/webapp/credential-store/error.jsp Tue Oct 30 18:52:27 2012
@@ -0,0 +1,25 @@
+<script type="text/javascript">
+    function getUrlVars() {
+        var vars = {};
+        var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
+            vars[key] = value;
+        });
+        return vars;
+    }
+
+    var gatewayName = getUrlVars()["gatewayName"];
+    var portalUserName = getUrlVars()["portalUserName"];
+    var lifetime = getUrlVars()["lifetime"];
+
+    alert(gatewayName);
+    alert(portalUserName);
+    alert(lifetime);
+
+
+</script>
+<html>
+<body>
+<h1>Credential Store</h1>
+<p>An error occurred while processing</p>
+</body>
+</html>

Added: airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/webapp/credential-store/show-redirect.jsp
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/webapp/credential-store/show-redirect.jsp?rev=1403813&view=auto
==============================================================================
--- airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/webapp/credential-store/show-redirect.jsp (added)
+++ airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/webapp/credential-store/show-redirect.jsp Tue Oct 30 18:52:27 2012
@@ -0,0 +1,20 @@
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html>
+<head>
+    <script type="text/javascript">
+        <!--
+        function redirect(){
+            window.location = "${redirectUrl}"
+        }
+        //-->
+    </script>
+</head>
+<body onLoad="setTimeout('redirect()', 1000)">
+<h2>You will be now redirect to MyProxy portal !</h2>
+<p>
+    If your browser didn't redirect to MyProxy Portal within 1 minute click following link,
+    <br><br> <a href="${redirectUrl}">${redirectUrl}</a>
+</p>
+
+</body>
+</html>
\ No newline at end of file

Added: airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/webapp/credential-store/success.jsp
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/webapp/credential-store/success.jsp?rev=1403813&view=auto
==============================================================================
--- airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/webapp/credential-store/success.jsp (added)
+++ airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/webapp/credential-store/success.jsp Tue Oct 30 18:52:27 2012
@@ -0,0 +1,6 @@
+<html>
+<body>
+<h1>Credential Store</h1>
+<p>Certificate Successfully Stored !</p>
+</body>
+</html>
\ No newline at end of file

Modified: airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/webapp/index.jsp
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/webapp/index.jsp?rev=1403813&r1=1403812&r2=1403813&view=diff
==============================================================================
--- airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/webapp/index.jsp (original)
+++ airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/main/webapp/index.jsp Tue Oct 30 18:52:27 2012
@@ -1,8 +1,14 @@
 <html>
 <body>
-<h2>Jersey RESTful Web Application!</h2>
-<p><a href="webresources/myresource">Jersey resource</a>
-<p>Visit the <a href="http://jersey.java.net">Project Jersey website</a>
-for more information on Jersey!
+<h2>Sample Portal</h2>
+<p>This demonstrates how portal can use Credential Store to obtain community credentials ...</p>
+<form name="input" action="../airavata-registry-rest-services/credential-store" method="post">
+
+    Gateway Name   : <input type="text" name="gatewayName"><br>
+    Portal Username: <input type="text" name="portalUserName"><br>
+    Contact Email: <input type="text" name="email">
+
+    <input type="submit" value="Submit">
+</form>
 </body>
 </html>

Modified: airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/test/resources/testdb/test.h2.db
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-rest-security/modules/commons/airavata-registry-rest/src/test/resources/testdb/test.h2.db?rev=1403813&r1=1403812&r2=1403813&view=diff
==============================================================================
Binary files - no diff available.

Added: airavata/sandbox/airavata-rest-security/modules/credential-store/credential-store.iml
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-rest-security/modules/credential-store/credential-store.iml?rev=1403813&view=auto
==============================================================================
--- airavata/sandbox/airavata-rest-security/modules/credential-store/credential-store.iml (added)
+++ airavata/sandbox/airavata-rest-security/modules/credential-store/credential-store.iml Tue Oct 30 18:52:27 2012
@@ -0,0 +1,357 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module relativePaths="false" type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="false">
+    <output url="file://$MODULE_DIR$/target/classes" />
+    <output-test url="file://$MODULE_DIR$/target/test-classes" />
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/target/maven-shared-archive-resources" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/test/resources" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/target/maven-shared-archive-resources" isTestSource="true" />
+      <excludeFolder url="file://$MODULE_DIR$/target/classes" />
+      <excludeFolder url="file://$MODULE_DIR$/target/generated-sources" />
+      <excludeFolder url="file://$MODULE_DIR$/target/maven-archiver" />
+      <excludeFolder url="file://$MODULE_DIR$/target/surefire" />
+      <excludeFolder url="file://$MODULE_DIR$/target/surefire-reports" />
+      <excludeFolder url="file://$MODULE_DIR$/target/test-classes" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/org/apache/shiro/shiro-core/1.2.1/shiro-core-1.2.1.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/commons-beanutils/commons-beanutils/1.8.3/commons-beanutils-1.8.3.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/commons-dbcp/commons-dbcp/1.4/commons-dbcp-1.4.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/commons-pool/commons-pool/1.5.4/commons-pool-1.5.4.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/junit/junit/4.7/junit-4.7.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/com/h2database/h2/1.3.168/h2-1.3.168.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/log4j/log4j/1.2.16/log4j-1.2.16.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/edu/uiuc/ncsa/myproxy/oa4mp-client-oauth1/1.0.5/oa4mp-client-oauth1-1.0.5.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/edu/uiuc/ncsa/myproxy/oa4mp-client-api/1.0.5/oa4mp-client-api-1.0.5.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/edu/uiuc/ncsa/security/delegation/ncsa-security-delegation-client/1.0.5/ncsa-security-delegation-client-1.0.5.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/edu/uiuc/ncsa/security/ncsa-security-util/1.0.5/ncsa-security-util-1.0.5.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/edu/uiuc/ncsa/security/ncsa-security-core/1.0.5/ncsa-security-core-1.0.5.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/commons-configuration/commons-configuration/1.7/commons-configuration-1.7.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/commons-collections/commons-collections/3.2.1/commons-collections-3.2.1.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/commons-lang/commons-lang/2.6/commons-lang-2.6.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/commons-digester/commons-digester/1.8.1/commons-digester-1.8.1.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/commons-codec/commons-codec/1.4/commons-codec-1.4.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/javax/inject/javax.inject/1/javax.inject-1.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/commons-cli/commons-cli/1.2/commons-cli-1.2.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcprov-jdk16/1.46/bcprov-jdk16-1.46.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpcore/4.1/httpcore-4.1.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/org/apache/httpcomponents/httpclient/4.1/httpclient-4.1.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/edu/uiuc/ncsa/security/delegation/ncsa-security-delegation-common/1.0.5/ncsa-security-delegation-common-1.0.5.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/edu/uiuc/ncsa/security/ncsa-security-storage/1.0.5/ncsa-security-storage-1.0.5.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/edu/uiuc/ncsa/security/ncsa-security-servlet/1.0.5/ncsa-security-servlet-1.0.5.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/edu/uiuc/ncsa/myproxy/myproxy-logon/1.4.5/myproxy-logon-1.4.5.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/mysql/mysql-connector-java/5.1.21/mysql-connector-java-5.1.21.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/postgresql/postgresql/8.4-702.jdbc3/postgresql-8.4-702.jdbc3.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/edu/uiuc/ncsa/security/delegation/ncsa-security-oauth-1.0a/1.0.5/ncsa-security-oauth-1.0a-1.0.5.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/edu/uiuc/ncsa/security/delegation/ncsa-security-delegation-server/1.0.5/ncsa-security-delegation-server-1.0.5.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/net/oauth/core/oauth-httpclient4/20090617/oauth-httpclient4-20090617.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/net/oauth/core/oauth-consumer/20100527/oauth-consumer-20100527.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/net/oauth/core/oauth/20100527/oauth-20100527.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library>
+        <CLASSES>
+          <root url="jar://$MAVEN_REPOSITORY$/net/oauth/core/oauth-provider/20100527/oauth-provider-20100527.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+  </component>
+</module>
+

Added: airavata/sandbox/airavata-rest-security/modules/credential-store/pom.xml
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-rest-security/modules/credential-store/pom.xml?rev=1403813&view=auto
==============================================================================
--- airavata/sandbox/airavata-rest-security/modules/credential-store/pom.xml (added)
+++ airavata/sandbox/airavata-rest-security/modules/credential-store/pom.xml Tue Oct 30 18:52:27 2012
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file 
+    distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you 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 http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to 
+    in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF 
+    ANY ~ KIND, either express or implied. See the License for the specific language governing permissions and limitations under 
+    the License. -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <groupId>org.apache.airavata</groupId>
+        <artifactId>airavata</artifactId>
+        <version>0.5-incubating-SNAPSHOT</version>
+        <relativePath>../../pom.xml</relativePath>
+    </parent>
+
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>credential-store</artifactId>
+    <name>Airavata Security Implementation</name>
+    <description>Module to manage credentials</description>
+
+    <dependencies>
+
+        <dependency>
+            <groupId>edu.uiuc.ncsa.myproxy</groupId>
+            <artifactId>oa4mp-client-api</artifactId>
+            <version>1.0.5</version>
+        </dependency>
+        <dependency>
+            <groupId>edu.uiuc.ncsa.myproxy</groupId>
+            <artifactId>oa4mp-client-oauth1</artifactId>
+            <version>1.0.5</version>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>log4j</groupId>
+            <artifactId>log4j</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.7</version>
+        </dependency>
+        <!--dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-simple</artifactId>
+        </dependency -->
+        <dependency>
+            <groupId>org.apache.shiro</groupId>
+            <artifactId>shiro-core</artifactId>
+            <version>1.2.1</version>
+        </dependency>
+        <dependency>
+            <groupId>commons-dbcp</groupId>
+            <artifactId>commons-dbcp</artifactId>
+            <version>1.4</version>
+        </dependency>
+        <dependency>
+            <groupId>com.h2database</groupId>
+            <artifactId>h2</artifactId>
+            <version>1.3.168</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>servlet-api</artifactId>
+            <version>2.5</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <version>5.1.21</version>
+            <scope>test</scope>
+        </dependency>
+
+
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <version>${surefire.version}</version>
+                <configuration>
+		    <excludes>
+		     <exclude>**/DAOBaseTestCase.java</exclude>
+		     <exclude>**/MappingDAOTest.java</exclude>
+		    </excludes>
+                    <testSourceDirectory>${basedir}\src\test\java\</testSourceDirectory>
+                </configuration>
+            </plugin>
+        </plugins>
+        <testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>
+        <testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory>
+        <testResources>
+            <testResource>
+                <directory>${project.basedir}/src/test/resources</directory>
+            </testResource>
+        </testResources>
+    </build>
+</project>

Added: airavata/sandbox/airavata-rest-security/modules/credential-store/scripts/credential-store-h2.sql
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-rest-security/modules/credential-store/scripts/credential-store-h2.sql?rev=1403813&view=auto
==============================================================================
--- airavata/sandbox/airavata-rest-security/modules/credential-store/scripts/credential-store-h2.sql (added)
+++ airavata/sandbox/airavata-rest-security/modules/credential-store/scripts/credential-store-h2.sql Tue Oct 30 18:52:27 2012
@@ -0,0 +1,22 @@
+CREATE TABLE COMMUNITY_USER
+(
+	GATEWAY_NAME VARCHAR(256) NOT NULL,
+	COMMUNITY_USER_NAME VARCHAR(256) NOT NULL,
+	COMMUNITY_USER_EMAIL VARCHAR(256) NOT NULL,
+        PRIMARY KEY (GATEWAY_NAME, COMMUNITY_USER_NAME)
+);
+
+
+CREATE TABLE CREDENTIALS
+(
+	GATEWAY_NAME VARCHAR(256) NOT NULL,
+	COMMUNITY_USER_NAME VARCHAR(256) NOT NULL,
+	CREDENTIAL CLOB NOT NULL,
+	PRIVATE_KEY CLOB NOT NULL,
+	NOT_BEFORE VARCHAR(256) NOT NULL,
+	NOT_AFTER VARCHAR(256) NOT NULL,
+	LIFETIME MEDIUMINT NOT NULL,
+	REQUESTING_PORTAL_USER_NAME VARCHAR(256) NOT NULL,
+	REQUESTED_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
+        PRIMARY KEY (GATEWAY_NAME, COMMUNITY_USER_NAME)
+);
\ No newline at end of file

Added: airavata/sandbox/airavata-rest-security/modules/credential-store/scripts/credential-store-mysql.sql
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-rest-security/modules/credential-store/scripts/credential-store-mysql.sql?rev=1403813&view=auto
==============================================================================
--- airavata/sandbox/airavata-rest-security/modules/credential-store/scripts/credential-store-mysql.sql (added)
+++ airavata/sandbox/airavata-rest-security/modules/credential-store/scripts/credential-store-mysql.sql Tue Oct 30 18:52:27 2012
@@ -0,0 +1,30 @@
+CREATE TABLE COMMUNITY_USER
+(
+	GATEWAY_NAME VARCHAR(256) NOT NULL,
+	COMMUNITY_USER_NAME VARCHAR(256) NOT NULL,
+	COMMUNITY_USER_EMAIL VARCHAR(256) NOT NULL,
+        PRIMARY KEY (GATEWAY_NAME, COMMUNITY_USER_NAME)
+);
+
+
+CREATE TABLE CREDENTIALS
+(
+	GATEWAY_NAME VARCHAR(256) NOT NULL,
+	COMMUNITY_USER_NAME VARCHAR(256) NOT NULL,
+	CREDENTIAL TEXT NOT NULL,
+	PRIVATE_KEY TEXT NOT NULL,
+	NOT_BEFORE VARCHAR(256) NOT NULL,
+	NOT_AFTER VARCHAR(256) NOT NULL,
+	LIFETIME MEDIUMINT NOT NULL,
+	REQUESTING_PORTAL_USER_NAME VARCHAR(256) NOT NULL,
+	REQUESTED_TIME TIMESTAMP DEFAULT '0000-00-00 00:00:00',
+        PRIMARY KEY (GATEWAY_NAME, COMMUNITY_USER_NAME)
+);
+
+CREATE TABLE MAPPING
+(
+	GATEWAY_NAME VARCHAR(256) NOT NULL,
+	COMMUNITY_USER_NAME VARCHAR(256) NOT NULL,
+	PORTAL_USER_NAME VARCHAR(256) NOT NULL,
+        PRIMARY KEY (GATEWAY_NAME, COMMUNITY_USER_NAME, PORTAL_USER_NAME)
+);

Added: airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/AuditInfo.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/AuditInfo.java?rev=1403813&view=auto
==============================================================================
--- airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/AuditInfo.java (added)
+++ airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/AuditInfo.java Tue Oct 30 18:52:27 2012
@@ -0,0 +1,78 @@
+package org.apache.airavata.credential.store;
+
+import javax.xml.bind.annotation.XmlRootElement;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * Audit information related to community credential.
+ */
+@XmlRootElement
+public class AuditInfo implements Serializable {
+
+    private static final long serialVersionUID = 13213123L;
+
+    private String gatewayName;
+    private String communityUserName;
+    private String portalUserName;
+    private Date credentialsRequestedTime;
+    private String notBefore;
+    private String notAfter;
+    private long credentialLifeTime;
+
+    public String getGatewayName() {
+        return gatewayName;
+    }
+
+    public void setGatewayName(String gatewayName) {
+        this.gatewayName = gatewayName;
+    }
+
+    public String getCommunityUserName() {
+        return communityUserName;
+    }
+
+    public void setCommunityUserName(String communityUserName) {
+        this.communityUserName = communityUserName;
+    }
+
+    public String getPortalUserName() {
+        return portalUserName;
+    }
+
+    public void setPortalUserName(String portalUserName) {
+        this.portalUserName = portalUserName;
+    }
+
+    public Date getCredentialsRequestedTime() {
+        return credentialsRequestedTime;
+    }
+
+    public void setCredentialsRequestedTime(Date credentialsRequestedTime) {
+        this.credentialsRequestedTime = credentialsRequestedTime;
+    }
+
+    public String getNotBefore() {
+        return notBefore;
+    }
+
+    public void setNotBefore(String notBefore) {
+        this.notBefore = notBefore;
+    }
+
+    public String getNotAfter() {
+        return notAfter;
+    }
+
+    public void setNotAfter(String notAfter) {
+        this.notAfter = notAfter;
+    }
+
+    public long getCredentialLifeTime() {
+        return credentialLifeTime;
+    }
+
+    public void setCredentialLifeTime(long credentialLifeTime) {
+        this.credentialLifeTime = credentialLifeTime;
+    }
+}

Added: airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/CertificateCredential.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/CertificateCredential.java?rev=1403813&view=auto
==============================================================================
--- airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/CertificateCredential.java (added)
+++ airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/CertificateCredential.java Tue Oct 30 18:52:27 2012
@@ -0,0 +1,97 @@
+package org.apache.airavata.credential.store;
+
+import java.util.Date;
+
+/**
+ * Represents the certificate credentials.
+ */
+public class CertificateCredential implements Credential {
+
+    public CertificateCredential() {
+
+    }
+
+    /**
+     * The community user associated with this credentials.
+     */
+    private CommunityUser communityUser;
+
+    private String certificate;
+
+    public String getPrivateKey() {
+        return privateKey;
+    }
+
+    public void setPrivateKey(String privateKey) {
+        this.privateKey = privateKey;
+    }
+
+    private String privateKey;
+
+    private long lifeTime;
+
+    private String portalUserName;
+
+    private String notBefore;
+
+    public String getNotBefore() {
+        return notBefore;
+    }
+
+    public void setNotBefore(String notBefore) {
+        this.notBefore = notBefore;
+    }
+
+    public String getNotAfter() {
+        return notAfter;
+    }
+
+    public void setNotAfter(String notAfter) {
+        this.notAfter = notAfter;
+    }
+
+    private String notAfter;
+
+    public Date getCertificateRequestedTime() {
+        return certificateRequestedTime;
+    }
+
+    public void setCertificateRequestedTime(Date certificateRequestedTime) {
+        this.certificateRequestedTime = certificateRequestedTime;
+    }
+
+    private Date certificateRequestedTime;
+
+    public String getCertificate() {
+        return certificate;
+    }
+
+    public void setCertificate(String certificate) {
+        this.certificate = certificate;
+    }
+
+    public long getLifeTime() {
+        return lifeTime;
+    }
+
+    public void setLifeTime(long lifeTime) {
+        this.lifeTime = lifeTime;
+    }
+
+    public String getPortalUserName() {
+        return portalUserName;
+    }
+
+    public void setPortalUserName(String portalUserName) {
+        this.portalUserName = portalUserName;
+    }
+
+    public CommunityUser getCommunityUser() {
+        return communityUser;
+    }
+
+    public void setCommunityUser(CommunityUser communityUser) {
+        this.communityUser = communityUser;
+    }
+
+}

Added: airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/CommunityUser.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/CommunityUser.java?rev=1403813&view=auto
==============================================================================
--- airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/CommunityUser.java (added)
+++ airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/CommunityUser.java Tue Oct 30 18:52:27 2012
@@ -0,0 +1,46 @@
+package org.apache.airavata.credential.store;
+
+/**
+ * Represents the community user.
+ */
+public class CommunityUser {
+
+    private String gatewayName;
+    private String userName;
+    private String userEmail;
+
+    public String getGatewayName() {
+        return gatewayName;
+    }
+
+    public void setGatewayName(String gatewayName) {
+        this.gatewayName = gatewayName;
+    }
+
+    public String getUserEmail() {
+        return userEmail;
+    }
+
+    public void setUserEmail(String userEmail) {
+        this.userEmail = userEmail;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public CommunityUser(String gatewayName, String userName, String userEmail) {
+        this.gatewayName = gatewayName;
+        this.userName = userName;
+        this.userEmail = userEmail;
+    }
+
+    public CommunityUser(String gatewayName, String userName) {
+        this.gatewayName = gatewayName;
+        this.userName = userName;
+    }
+}

Added: airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/Credential.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/Credential.java?rev=1403813&view=auto
==============================================================================
--- airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/Credential.java (added)
+++ airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/Credential.java Tue Oct 30 18:52:27 2012
@@ -0,0 +1,10 @@
+package org.apache.airavata.credential.store;
+
+import java.io.Serializable;
+
+/**
+ * This class represents the actual credential. The credential can be a certificate, user name password
+ * or a SSH key. As per now we only have certificate implementation.
+ */
+public interface Credential {
+}

Added: airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/CredentialStore.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/CredentialStore.java?rev=1403813&view=auto
==============================================================================
--- airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/CredentialStore.java (added)
+++ airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/CredentialStore.java Tue Oct 30 18:52:27 2012
@@ -0,0 +1,44 @@
+package org.apache.airavata.credential.store;
+
+/**
+ * This interface provides an API for Credential Store.
+ * Provides methods to manipulate credential store data.
+ */
+public interface CredentialStore {
+
+    /**
+     * Gets the admin portal user name who  retrieved given community user for
+     * given portal user name.
+     * @param gatewayName The gateway name
+     * @param communityUser The community user name.
+     * @return The portal user name who requested given community user credentials.
+     */
+    String getPortalUser(String gatewayName, String communityUser) throws CredentialStoreException;
+
+    /**
+     * Gets audit information related to given gateway name and community
+     * user name.
+     * @param gatewayName The gateway name.
+     * @param communityUser The community user name.
+     * @return AuditInfo object.
+     */
+    AuditInfo getAuditInfo(String gatewayName, String communityUser) throws CredentialStoreException;
+
+    /**
+     * Updates the community user contact email address.
+     * @param gatewayName The gateway name.
+     * @param communityUser The community user name.
+     * @param email The new email address.
+     */
+    void updateCommunityUserEmail(String gatewayName, String communityUser, String email) throws CredentialStoreException;
+
+    /**
+     * Will remove credentials for the given gateway id and community user.
+     * @param gatewayName The gateway Id
+     * @param communityUser The community user name.
+     * @throws CredentialStoreException If an error occurred while retrieving data.
+     */
+    void removeCredentials(String gatewayName, String communityUser) throws CredentialStoreException;
+
+
+}

Added: airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/CredentialStoreException.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/CredentialStoreException.java?rev=1403813&view=auto
==============================================================================
--- airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/CredentialStoreException.java (added)
+++ airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/CredentialStoreException.java Tue Oct 30 18:52:27 2012
@@ -0,0 +1,19 @@
+package org.apache.airavata.credential.store;
+
+/**
+ * An exception class for credential store.
+ */
+public class CredentialStoreException extends Exception {
+
+    public CredentialStoreException() {
+        super();
+    }
+
+    public CredentialStoreException(String s) {
+        super(s);
+    }
+
+    public CredentialStoreException(String s, Throwable throwable) {
+        super(s, throwable);
+    }
+}

Added: airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/CredentialWriter.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/CredentialWriter.java?rev=1403813&view=auto
==============================================================================
--- airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/CredentialWriter.java (added)
+++ airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/CredentialWriter.java Tue Oct 30 18:52:27 2012
@@ -0,0 +1,20 @@
+package org.apache.airavata.credential.store;
+
+/**
+ * The entity who's writing credentials to DB will use this interface.
+ */
+public interface CredentialWriter {
+
+    /**
+     * Writes given credentials to a persistent storage.
+     * @param credential The credentials implementation.
+     */
+    void writeCredentials(Credential credential) throws CredentialStoreException;
+
+    /**
+     * Writes community user information.
+     * @param communityUser Writes community user information to a persistent storage.
+     * @throws CredentialStoreException If an error occurred while writing community user.
+     */
+    void writeCommunityUser(CommunityUser communityUser) throws CredentialStoreException;
+}

Added: airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/Mapping.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/Mapping.java?rev=1403813&view=auto
==============================================================================
--- airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/Mapping.java (added)
+++ airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/Mapping.java Tue Oct 30 18:52:27 2012
@@ -0,0 +1,44 @@
+package org.apache.airavata.credential.store;
+
+/**
+ * This keeps the mapping between community user and portal user.
+ */
+public class Mapping {
+
+    private String gatewayName;
+    private String communityUser;
+    private String portalUser;
+
+    public Mapping() {
+    }
+
+    public Mapping(String gatewayName, String communityUser, String portalUser) {
+        this.gatewayName = gatewayName;
+        this.communityUser = communityUser;
+        this.portalUser = portalUser;
+    }
+
+    public String getGatewayName() {
+        return gatewayName;
+    }
+
+    public void setGatewayName(String gatewayName) {
+        this.gatewayName = gatewayName;
+    }
+
+    public String getCommunityUser() {
+        return communityUser;
+    }
+
+    public void setCommunityUser(String communityUser) {
+        this.communityUser = communityUser;
+    }
+
+    public String getPortalUser() {
+        return portalUser;
+    }
+
+    public void setPortalUser(String portalUser) {
+        this.portalUser = portalUser;
+    }
+}

Added: airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/impl/CertificateCredentialWriter.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/impl/CertificateCredentialWriter.java?rev=1403813&view=auto
==============================================================================
--- airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/impl/CertificateCredentialWriter.java (added)
+++ airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/impl/CertificateCredentialWriter.java Tue Oct 30 18:52:27 2012
@@ -0,0 +1,48 @@
+package org.apache.airavata.credential.store.impl;
+
+import org.apache.airavata.credential.store.*;
+import org.apache.airavata.credential.store.impl.db.CommunityUserDAO;
+import org.apache.airavata.credential.store.impl.db.CredentialsDAO;
+import org.apache.airavata.credential.store.util.DBUtil;
+
+/**
+ * Writes certificate credentials to database.
+ */
+public class CertificateCredentialWriter implements CredentialWriter {
+
+    private CredentialsDAO credentialsDAO;
+    private CommunityUserDAO communityUserDAO;
+
+    public CertificateCredentialWriter(DBUtil dbUtil) {
+        credentialsDAO = new CredentialsDAO(dbUtil);
+        communityUserDAO = new CommunityUserDAO(dbUtil);
+    }
+
+    @Override
+    public void writeCredentials(Credential credential) throws CredentialStoreException {
+
+        CertificateCredential certificateCredential = (CertificateCredential)credential;
+
+        // Write community user
+        writeCommunityUser(certificateCredential.getCommunityUser());
+
+        // First delete existing credentials
+        credentialsDAO.deleteCredentials(certificateCredential.getCommunityUser().getGatewayName(),
+                certificateCredential.getCommunityUser().getUserName());
+
+        // Add the new certificate
+        CertificateCredential certificateCredentials = (CertificateCredential)credential;
+        credentialsDAO.addCredentials(certificateCredentials);
+    }
+
+    @Override
+    public void writeCommunityUser(CommunityUser communityUser) throws CredentialStoreException {
+
+        // First delete existing community user
+        communityUserDAO.deleteCommunityUser(communityUser);
+
+        // Persist new community user
+        communityUserDAO.addCommunityUser(communityUser);
+
+    }
+}

Added: airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/impl/CredentialStoreImpl.java
URL: http://svn.apache.org/viewvc/airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/impl/CredentialStoreImpl.java?rev=1403813&view=auto
==============================================================================
--- airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/impl/CredentialStoreImpl.java (added)
+++ airavata/sandbox/airavata-rest-security/modules/credential-store/src/main/java/org/apache/airavata/credential/store/impl/CredentialStoreImpl.java Tue Oct 30 18:52:27 2012
@@ -0,0 +1,66 @@
+package org.apache.airavata.credential.store.impl;
+
+import org.apache.airavata.credential.store.*;
+import org.apache.airavata.credential.store.impl.db.CommunityUserDAO;
+import org.apache.airavata.credential.store.impl.db.CredentialsDAO;
+import org.apache.airavata.credential.store.util.DBUtil;
+
+import java.io.Serializable;
+
+
+/**
+ * Credential store API implementation.
+ */
+public class CredentialStoreImpl implements CredentialStore, Serializable {
+
+    private CommunityUserDAO communityUserDAO;
+    private CredentialsDAO credentialsDAO;
+
+    public CredentialStoreImpl(DBUtil dbUtil) {
+
+        this.communityUserDAO = new CommunityUserDAO(dbUtil);
+        this.credentialsDAO = new CredentialsDAO(dbUtil);
+    }
+
+    @Override
+    public String getPortalUser(String gatewayName, String communityUser) throws CredentialStoreException {
+        CertificateCredential certificateCredential
+                = this.credentialsDAO.getCredential(gatewayName, communityUser);
+        return certificateCredential.getPortalUserName();
+    }
+
+    @Override
+    public AuditInfo getAuditInfo(String gatewayName, String communityUser)
+            throws CredentialStoreException {
+
+        CertificateCredential certificateCredential
+                = this.credentialsDAO.getCredential(gatewayName, communityUser);
+
+        AuditInfo auditInfo = new AuditInfo();
+
+        CommunityUser retrievedUser = certificateCredential.getCommunityUser();
+        auditInfo.setCommunityUserName(retrievedUser.getUserName());
+        auditInfo.setCredentialLifeTime(certificateCredential.getLifeTime());
+        auditInfo.setCredentialsRequestedTime(certificateCredential.getCertificateRequestedTime());
+        auditInfo.setGatewayName(gatewayName);
+        auditInfo.setNotAfter(certificateCredential.getNotAfter());
+        auditInfo.setNotBefore(certificateCredential.getNotBefore());
+        auditInfo.setPortalUserName(certificateCredential.getPortalUserName());
+
+        return auditInfo;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    @Override
+    public void updateCommunityUserEmail(String gatewayName, String communityUser, String email) throws CredentialStoreException {
+        this.communityUserDAO.updateCommunityUser(
+                new CommunityUser(gatewayName, communityUser, email));
+    }
+
+    @Override
+    public void removeCredentials(String gatewayName, String communityUser) throws CredentialStoreException {
+        credentialsDAO.deleteCredentials(gatewayName, communityUser);
+    }
+
+
+
+}