diff options
| author | Christian Maierhofer <cmaierhofer@iaik.tugraz.at> | 2016-04-28 13:35:55 +0200 | 
|---|---|---|
| committer | Christian Maierhofer <cmaierhofer@iaik.tugraz.at> | 2016-04-28 13:35:55 +0200 | 
| commit | 61661f2ea4978d56691f7a672469c6d43e9dba41 (patch) | |
| tree | 2ea7048bfffa662ee6b2d04858f00fb1cb6a2fea /id/server/idserverlib/src/main | |
| parent | 6f353de9f09b26440f67f62ba8186ae82f16adb5 (diff) | |
| download | moa-id-spss-61661f2ea4978d56691f7a672469c6d43e9dba41.tar.gz moa-id-spss-61661f2ea4978d56691f7a672469c6d43e9dba41.tar.bz2 moa-id-spss-61661f2ea4978d56691f7a672469c6d43e9dba41.zip | |
Modifiing MOASessionDBUtils
Diffstat (limited to 'id/server/idserverlib/src/main')
5 files changed, 94 insertions, 34 deletions
| diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConfigurationProviderImpl.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConfigurationProviderImpl.java index 5c2f86732..a07099a93 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConfigurationProviderImpl.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/ConfigurationProviderImpl.java @@ -185,6 +185,10 @@ public abstract class ConfigurationProviderImpl implements ConfigurationProvider  			      		String propertyName = key.toString().substring(propPrefix.length());  			      		moaSessionProp.put(propertyName, props.get(key.toString()));  			      	} +			      	if (key.toString().startsWith(propPrefix+"dbcp")) { +			      		String propertyName = "hibernate."+(key.toString().substring(propPrefix.length())); +			      		moaSessionProp.put(propertyName, props.get(key.toString())); +			      	}  			      }  			      // read Config Hibernate properties @@ -222,7 +226,7 @@ public abstract class ConfigurationProviderImpl implements ConfigurationProvider  					config.addAnnotatedClass(InterfederationSessionStore.class);  					//config.addAnnotatedClass(ProcessInstanceStore.class);  					config.addProperties(moaSessionProp); -					MOASessionDBUtils.initHibernate(config, moaSessionProp); +					//MOASessionDBUtils.initHibernate(config, moaSessionProp);  					//initial advanced logging  					if (Boolean.valueOf(props.getProperty("configuration.advancedlogging.active", "false"))) { diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/SSOManager.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/SSOManager.java index bc7dd272b..0799760ce 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/SSOManager.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/moduls/SSOManager.java @@ -63,6 +63,7 @@ public class SSOManager {  	@Autowired private IAuthenticationSessionStoreage authenticatedSessionStore;  	@Autowired protected AuthConfiguration authConfig; +	@Autowired private MOASessionDBUtils moaSessionDBUtils;  	/**  	 * Check if interfederation IDP is requested via HTTP GET parameter or if interfederation cookie exists. @@ -159,7 +160,7 @@ public class SSOManager {  					} else {  						Logger.warn("MOASession is marked as interfederated SSO session but no interfederated IDP is found. Switch to local authentication ..."); -						MOASessionDBUtils.delete(storedSession); +						moaSessionDBUtils.delete(storedSession);  					}  				} @@ -200,7 +201,7 @@ public class SSOManager {  	public String existsOldSSOSession(String ssoId) {  		Logger.trace("Check that the SSOID has already been used"); -		Session session = MOASessionDBUtils.getCurrentSession(); +		Session session = moaSessionDBUtils.getCurrentSession();  		List<OldSSOSessionIDStore> result; @@ -289,7 +290,7 @@ public class SSOManager {  				//no local SSO session exist -> request interfederated IDP  				Logger.info("Delete interfederated IDP " + selectedIDP.getIdpurlprefix()   						+ " from MOASession " + storedSession.getSessionid()); -				MOASessionDBUtils.delete(selectedIDP); +				moaSessionDBUtils.delete(selectedIDP);  			} else {  				Logger.warn("MOASession is marked as interfederated SSO session but no interfederated IDP is found. Switch to local authentication ..."); diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/AttributQueryAction.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/AttributQueryAction.java index 2168316ab..98c6632f1 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/AttributQueryAction.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/AttributQueryAction.java @@ -80,6 +80,7 @@ public class AttributQueryAction implements IAction {  	@Autowired private AuthenticationDataBuilder authDataBuilder;  	@Autowired private IDPCredentialProvider pvpCredentials;  	@Autowired private AuthConfiguration authConfig; +	@Autowired private MOASessionDBUtils moaSessionDBUtils;  	private final static List<String> DEFAULTSTORKATTRIBUTES = Arrays.asList(  			new String[]{PVPConstants.EID_STORK_TOKEN_NAME});	 @@ -198,7 +199,7 @@ public class AttributQueryAction implements IAction {  						((PVPTargetConfiguration) pendingReq).getRequest().getInboundMessage() instanceof AttributeQuery) {				  					try {  						activeOA.setAttributeQueryUsed(true); -						MOASessionDBUtils.saveOrUpdate(activeOA); +						moaSessionDBUtils.saveOrUpdate(activeOA);  					} catch (MOADatabaseException e) {  						Logger.error("MOASession interfederation information can not stored to database.", e); @@ -251,11 +252,11 @@ public class AttributQueryAction implements IAction {  					//mark attribute request as used  					if (nextIDPInformation.isStoreSSOInformation()) {  						nextIDPInformation.setAttributesRequested(true); -						MOASessionDBUtils.saveOrUpdate(nextIDPInformation); +						moaSessionDBUtils.saveOrUpdate(nextIDPInformation);  						//delete federated IDP from Session  					} else { -						MOASessionDBUtils.delete(nextIDPInformation); +						moaSessionDBUtils.delete(nextIDPInformation);  					} diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/storage/DBAuthenticationSessionStoreage.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/storage/DBAuthenticationSessionStoreage.java index 094e25040..cb470a7b9 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/storage/DBAuthenticationSessionStoreage.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/storage/DBAuthenticationSessionStoreage.java @@ -65,7 +65,7 @@ import at.gv.egovernment.moa.util.MiscUtil;  public class DBAuthenticationSessionStoreage implements IAuthenticationSessionStoreage{  	@Autowired AuthConfiguration authConfig; -	 +	@Autowired MOASessionDBUtils moaSessionDBUtils;  	private static JsonMapper mapper = new JsonMapper();  	@Override @@ -104,7 +104,7 @@ public class DBAuthenticationSessionStoreage implements IAuthenticationSessionSt  			encryptSession(session, dbsession);  			//store AssertionStore element to Database		 -			MOASessionDBUtils.saveOrUpdate(dbsession); +			moaSessionDBUtils.saveOrUpdate(dbsession);  			Logger.info("Create MOASession with sessionID: " + id);  			return session; @@ -166,7 +166,7 @@ public class DBAuthenticationSessionStoreage implements IAuthenticationSessionSt  			dbsession.setAdditionalInformation(  					mapper.serialize(sessionExtensions)); -			MOASessionDBUtils.saveOrUpdate(dbsession); +			moaSessionDBUtils.saveOrUpdate(dbsession);  			Logger.debug("MOASession with sessionID=" + sessionID + " is stored in Database"); @@ -193,7 +193,7 @@ public class DBAuthenticationSessionStoreage implements IAuthenticationSessionSt  			dbsession.setAuthenticated(session.isAuthenticated());  			dbsession.setUpdated(new Date()); -			MOASessionDBUtils.saveOrUpdate(dbsession); +			moaSessionDBUtils.saveOrUpdate(dbsession);  			Logger.debug("MOASession with sessionID=" + session.getSessionID() + " is stored in Database");  		} catch (MOADatabaseException e) { @@ -205,7 +205,7 @@ public class DBAuthenticationSessionStoreage implements IAuthenticationSessionSt  	@Override  	public void destroySession(String moaSessionID) throws MOADatabaseException { -		Session session = MOASessionDBUtils.getCurrentSession(); +		Session session = moaSessionDBUtils.getCurrentSession();  		  List<AuthenticatedSessionStore> result;  		  Transaction tx = null; @@ -257,7 +257,7 @@ public class DBAuthenticationSessionStoreage implements IAuthenticationSessionSt  		//set Timestamp in this state, because automated timestamp generation is buggy in Hibernate 4.2.1  		dbsession.setUpdated(new Date()); -		MOASessionDBUtils.saveOrUpdate(dbsession); +		moaSessionDBUtils.saveOrUpdate(dbsession);  		Logger.trace("Change SessionID complete."); @@ -281,7 +281,7 @@ public class DBAuthenticationSessionStoreage implements IAuthenticationSessionSt  		try {  			session = searchInDatabase(moaSessionID, true);  			session.setAuthenticated(isAuthenticated); -			MOASessionDBUtils.saveOrUpdate(session); +			moaSessionDBUtils.saveOrUpdate(session);  		} catch (MOADatabaseException e) { @@ -293,7 +293,7 @@ public class DBAuthenticationSessionStoreage implements IAuthenticationSessionSt  	public String getMOASessionSSOID(String SSOSessionID) {  		  MiscUtil.assertNotNull(SSOSessionID, "SSOsessionID");	    		  Logger.trace("Get authenticated session with SSOID " + SSOSessionID + " from database."); -		  Session session = MOASessionDBUtils.getCurrentSession(); +		  Session session = moaSessionDBUtils.getCurrentSession();  		  List<AuthenticatedSessionStore> result;  		  Transaction tx = null; @@ -346,7 +346,7 @@ public class DBAuthenticationSessionStoreage implements IAuthenticationSessionSt  		//TODO: is this method really needed??  		  MiscUtil.assertNotNull(SSOId, "SSOSessionID");	    		  Logger.trace("Get authenticated session with SSOID " + SSOId + " from database."); -		  Session session = MOASessionDBUtils.getCurrentSession(); +		  Session session = moaSessionDBUtils.getCurrentSession();  		  List<AuthenticatedSessionStore> result;  		  Transaction tx = null; @@ -387,7 +387,7 @@ public class DBAuthenticationSessionStoreage implements IAuthenticationSessionSt  		try { -			  Session session = MOASessionDBUtils.getCurrentSession(); +			  Session session = moaSessionDBUtils.getCurrentSession();  			  List<AuthenticatedSessionStore> result;  			  Logger.trace("Add SSO information to session " + moaSessionID); @@ -495,7 +495,7 @@ public class DBAuthenticationSessionStoreage implements IAuthenticationSessionSt  			AuthenticatedSessionStore dbsession = searchInDatabase(moaSession.getSessionID(), false);  			oas.addAll(dbsession.getActiveOAsessions()); -			session = MOASessionDBUtils.getCurrentSession(); +			session = moaSessionDBUtils.getCurrentSession();  			session.getTransaction().commit();  			return oas; @@ -525,7 +525,7 @@ public class DBAuthenticationSessionStoreage implements IAuthenticationSessionSt  			AuthenticatedSessionStore dbsession = searchInDatabase(moaSession.getSessionID(), false);  			idps.addAll(dbsession.getInderfederation()); -			session = MOASessionDBUtils.getCurrentSession(); +			session = moaSessionDBUtils.getCurrentSession();  			session.getTransaction().commit();  			return idps; @@ -552,7 +552,7 @@ public class DBAuthenticationSessionStoreage implements IAuthenticationSessionSt  		  MiscUtil.assertNotNull(userNameID, "userNameID");  		  Logger.trace("Get moaSession for userNameID " + userNameID + " and OA "   				  + oaID + " from database."); -		  Session session = MOASessionDBUtils.getCurrentSession(); +		  Session session = moaSessionDBUtils.getCurrentSession();  		  Transaction tx = null;  		  List<AuthenticatedSessionStore> result = null;; @@ -598,7 +598,7 @@ public class DBAuthenticationSessionStoreage implements IAuthenticationSessionSt  		  MiscUtil.assertNotNull(protocolType, "usedProtocol");  		  Logger.trace("Get active OnlineApplication for sessionID " + moaSession.getSessionID() + " with OAID "  				  + oaID + " from database."); -		  Session session = MOASessionDBUtils.getCurrentSession(); +		  Session session = moaSessionDBUtils.getCurrentSession();  		  List<AuthenticatedSessionStore> result;  		  Transaction tx = null; @@ -640,7 +640,7 @@ public class DBAuthenticationSessionStoreage implements IAuthenticationSessionSt  		try {  			  MiscUtil.assertNotNull(nameID, "nameID");	    			  Logger.trace("Get authenticated session with pedingRequestID " + nameID + " from database."); -			  Session session = MOASessionDBUtils.getCurrentSession(); +			  Session session = moaSessionDBUtils.getCurrentSession();  			  List<AuthenticatedSessionStore> result; @@ -677,7 +677,7 @@ public class DBAuthenticationSessionStoreage implements IAuthenticationSessionSt  	public InterfederationSessionStore searchInterfederatedIDPFORSSOWithMOASession(String sessionID) {  		  MiscUtil.assertNotNull(sessionID, "MOASession");	    		  Logger.trace("Get interfederated IDP for SSO with sessionID " + sessionID + " from database."); -		  Session session = MOASessionDBUtils.getCurrentSession(); +		  Session session = moaSessionDBUtils.getCurrentSession();  		  List<AuthenticatedSessionStore> result;  		  Transaction tx = null; @@ -714,7 +714,7 @@ public class DBAuthenticationSessionStoreage implements IAuthenticationSessionSt  		  MiscUtil.assertNotNull(sessionID, "MOASession");	    		  MiscUtil.assertNotNull(idpID, "Interfederated IDP ID");  		  Logger.trace("Get interfederated IDP "+ idpID + " for SSO with sessionID " + sessionID + " from database."); -		  Session session = MOASessionDBUtils.getCurrentSession(); +		  Session session = moaSessionDBUtils.getCurrentSession();  		  List<AuthenticatedSessionStore> result;  		  Transaction tx = null; @@ -818,7 +818,7 @@ public class DBAuthenticationSessionStoreage implements IAuthenticationSessionSt  		//store AssertionStore element to Database  		try { -			MOASessionDBUtils.saveOrUpdate(dbsession); +			moaSessionDBUtils.saveOrUpdate(dbsession);  		} catch (MOADatabaseException e) {  			Logger.warn("MOASession could not be created."); @@ -831,7 +831,7 @@ public class DBAuthenticationSessionStoreage implements IAuthenticationSessionSt  	public InterfederationSessionStore searchInterfederatedIDPFORAttributeQueryWithSessionID(String moaSessionID) {  		  MiscUtil.assertNotNull(moaSessionID, "MOASessionID");	    		  Logger.trace("Get interfederated IDP for AttributeQuery with sessionID " + moaSessionID + " from database."); -		  Session session = MOASessionDBUtils.getCurrentSession(); +		  Session session = moaSessionDBUtils.getCurrentSession();  		  List<AuthenticatedSessionStore> result;  		  Transaction tx = null; @@ -872,7 +872,7 @@ public class DBAuthenticationSessionStoreage implements IAuthenticationSessionSt  			  MiscUtil.assertNotNull(pedingRequestID, "pedingRequestID");	    			  Logger.trace("Get authenticated session with pedingRequestID " + pedingRequestID + " from database."); -			  Session session = MOASessionDBUtils.getCurrentSession(); +			  Session session = moaSessionDBUtils.getCurrentSession();  			  List<AuthenticatedSessionStore> result; @@ -907,7 +907,7 @@ public class DBAuthenticationSessionStoreage implements IAuthenticationSessionSt  				  }				    			  } -			  MOASessionDBUtils.saveOrUpdate(authsession); +			  moaSessionDBUtils.saveOrUpdate(authsession);  			  return true;			  		} catch (Throwable e) { @@ -922,7 +922,7 @@ public class DBAuthenticationSessionStoreage implements IAuthenticationSessionSt  		Date expioredateupdate = new Date(now.getTime() - authDataTimeOutUpdated);  		List<AuthenticatedSessionStore> results; -		Session session = MOASessionDBUtils.getCurrentSession(); +		Session session = moaSessionDBUtils.getCurrentSession();  		Transaction tx = null;  		try {  			synchronized (session) {			 @@ -972,26 +972,26 @@ public class DBAuthenticationSessionStoreage implements IAuthenticationSessionSt  	} -	private static void cleanDelete(AuthenticatedSessionStore result) { +	private void cleanDelete(AuthenticatedSessionStore result) {  		try {  			result.setSession("blank".getBytes()); -			MOASessionDBUtils.saveOrUpdate(result); +			moaSessionDBUtils.saveOrUpdate(result);  		} catch (MOADatabaseException e) {  			Logger.warn("Blank authenticated session with sessionID=" + result.getSessionid() + " FAILED.", e);  		} finally { -			if (!MOASessionDBUtils.delete(result)) +			if (!moaSessionDBUtils.delete(result))  				Logger.error("Authenticated session with sessionID=" + result.getSessionid() + " not removed! (Error during Database communication)");  		}  	}  	@SuppressWarnings("rawtypes") -	private static AuthenticatedSessionStore searchInDatabase(String sessionID, boolean commit) throws MOADatabaseException { +	private  AuthenticatedSessionStore searchInDatabase(String sessionID, boolean commit) throws MOADatabaseException {  		  MiscUtil.assertNotNull(sessionID, "moasessionID");	    		  Logger.trace("Get authenticated session with sessionID " + sessionID + " from database."); -		  Session session = MOASessionDBUtils.getCurrentSession(); +		  Session session = moaSessionDBUtils.getCurrentSession();  		  List result;  		  Transaction tx = null; diff --git a/id/server/idserverlib/src/main/resources/session.common.beans.xml b/id/server/idserverlib/src/main/resources/session.common.beans.xml new file mode 100644 index 000000000..abc3c3200 --- /dev/null +++ b/id/server/idserverlib/src/main/resources/session.common.beans.xml @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="UTF-8"?> +<beans profile="redis" +    xmlns="http://www.springframework.org/schema/beans" +	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +	xmlns:context="http://www.springframework.org/schema/context" +	xmlns:tx="http://www.springframework.org/schema/tx" +	xmlns:aop="http://www.springframework.org/schema/aop" +	xmlns:p="http://www.springframework.org/schema/p" +	xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd +		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd +		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd +		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> + +	<context:annotation-config/> +    	 +    <bean id="sessionDataSource" class="org.apache.commons.dbcp2.BasicDataSource" lazy-init="true" destroy-method="close"> +		<aop:scoped-proxy/> +		<property name="driverClassName" value="${moasession.hibernate.connection.driver_class}" /> +		<property name="url" value="${moasession.hibernate.connection.url}"/> +		<property name="username" value="${moasession.hibernate.connection.username}" /> +		<property name="password" value="${moasession.hibernate.connection.password}" /> +				 +		<property name="connectionProperties" value="${moasession.dbcp.connectionProperties}" /> +		<property name="initialSize" value="${moasession.dbcp.initialSize}" />		 +		<property name="maxTotal" value="${moasession.dbcp.maxActive}" /> +		<property name="maxIdle" value="${moasession.dbcp.maxIdle}" /> +		<property name="minIdle" value="${moasession.dbcp.minIdle}" /> +		<!-- property name="maxWait" value="${moasession.dbcp.maxWaitMillis}" / --> +		<property name="testOnBorrow" value="${moasession.dbcp.testOnBorrow}" /> +		<property name="testOnReturn" value="${moasession.dbcp.testOnReturn}" /> +		<property name="testWhileIdle" value="${moasession.dbcp.testWhileIdle}" /> +		<property name="validationQuery" value="${moasession.dbcp.validationQuery}" /> +	</bean> +	 +	<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> +    	<property name="dataSource"  ref="sessionDataSource"/> +    	<property name="packagesToScan" value="at.gv.egovernment.moa.id.commons.db" /> +    	<property name="hibernateProperties"> +        	<props> +            	<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> +            	<prop key="hibernate.show_sql">${moasession.hibernate.show_sql}</prop> +            	<prop key="hibernate.hbm2ddl.auto">update</prop> +            	<prop key="current_session_context_class">thread</prop> +            	<prop key="hibernate.transaction.flush_before_completion">true</prop> +                <prop key="hibernate.transaction.auto_close_session">true</prop> +        	</props> +    	</property> +	</bean> + +    <bean id="moaSessionDBUtils" class="at.gv.egovernment.moa.id.commons.db.MOASessionDBUtils"> +    </bean> + +	 +</beans>
\ No newline at end of file | 
