diff options
| author | Thomas Lenz <tlenz@iaik.tugraz.at> | 2016-02-10 16:25:06 +0100 | 
|---|---|---|
| committer | Thomas Lenz <tlenz@iaik.tugraz.at> | 2016-02-10 16:25:06 +0100 | 
| commit | d0e4e457b349e7d4ffc7b9eb146d79c8100f9781 (patch) | |
| tree | b6e502abcc1a4716f6486782f1983799c9c0704d | |
| parent | 8b29eb9a19c4dcf6e30e34e41b8c6db61a21adb6 (diff) | |
| download | moa-id-spss-d0e4e457b349e7d4ffc7b9eb146d79c8100f9781.tar.gz moa-id-spss-d0e4e457b349e7d4ffc7b9eb146d79c8100f9781.tar.bz2 moa-id-spss-d0e4e457b349e7d4ffc7b9eb146d79c8100f9781.zip | |
switch to Spring based application initializer
10 files changed, 325 insertions, 133 deletions
| diff --git a/id/server/auth/src/main/webapp/WEB-INF/applicationContext.xml b/id/server/auth/src/main/webapp/WEB-INF/applicationContext.xml index a3f834457..18a75740a 100644 --- a/id/server/auth/src/main/webapp/WEB-INF/applicationContext.xml +++ b/id/server/auth/src/main/webapp/WEB-INF/applicationContext.xml @@ -2,11 +2,23 @@  <beans xmlns="http://www.springframework.org/schema/beans"
  	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  	xmlns:context="http://www.springframework.org/schema/context"
 -	xsi:schemaLocation="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.xsd">
 +	xmlns:mvc="http://www.springframework.org/schema/mvc"
 +	xsi:schemaLocation="
 +		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.xsd
 +		http://www.springframework.org/schema/mvc
 +		http://www.springframework.org/schema/mvc/spring-mvc.xsd
 +		http://www.springframework.org/schema/tx
 +		http://www.springframework.org/schema/tx/spring-tx.xsd
 +	"
 +>
  	<context:annotation-config />
 +	<mvc:annotation-driven />
 +
  	<bean id="processEngine" class="at.gv.egovernment.moa.id.process.ProcessEngineImpl">
  		<property name="transitionConditionExpressionEvaluator">
  			<bean class="at.gv.egovernment.moa.id.process.springweb.SpringWebExpressionEvaluator" />
 diff --git a/id/server/auth/src/main/webapp/WEB-INF/web.xml b/id/server/auth/src/main/webapp/WEB-INF/web.xml index 5afc0dee7..4b129f374 100644 --- a/id/server/auth/src/main/webapp/WEB-INF/web.xml +++ b/id/server/auth/src/main/webapp/WEB-INF/web.xml @@ -5,10 +5,10 @@  	<display-name>MOA ID Auth</display-name>  	<description>MOA ID Authentication Service</description> -	<!-- bootstrap loader for spring framework --> -	<listener> + 	<!-- bootstrap loader for spring framework --> +<!--	<listener>  		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> -	</listener> +	</listener> -->  	<filter>  		<filter-name>characterEncodingFilter</filter-name> @@ -27,8 +27,8 @@  		<url-pattern>/*</url-pattern>  	</filter-mapping> -	<!-- exposes request and response to the current thread --> -	<filter> + 	<!-- exposes request and response to the current thread --> +<!--	<filter>  		<filter-name>requestContextFilter</filter-name>  		<filter-class>org.springframework.web.filter.RequestContextFilter</filter-class>  	</filter> @@ -67,8 +67,8 @@  		<url-pattern>/RedirectServlet</url-pattern>  	</servlet-mapping> -	<!-- automatically registered by module 'moa-id-module-monitoring' using @WebServlet annotation --> -	<!-- +	automatically registered by module 'moa-id-module-monitoring' using @WebServlet annotation +	  	<servlet>  		<display-name>MonitoringServlet</display-name>  		<servlet-name>MonitoringServlet</servlet-name> @@ -78,7 +78,7 @@  		<servlet-name>MonitoringServlet</servlet-name>  		<url-pattern>/MonitoringServlet</url-pattern>  	</servlet-mapping> -	--> +	  	<servlet>  		<display-name>SSOSendAssertionServlet</display-name> @@ -110,7 +110,7 @@  	<servlet-mapping>  		<servlet-name>IDPSLO</servlet-name>  		<url-pattern>/idpSingleLogout</url-pattern> -	</servlet-mapping> +	</servlet-mapping> -->  	<servlet>  		<display-name>Apache-Axis Servlet</display-name> @@ -122,7 +122,7 @@  		<url-pattern>/services/*</url-pattern>  	</servlet-mapping> -	<servlet> +<!-- 	<servlet>  		<display-name>Dispatcher Servlet</display-name>  		<servlet-name>DispatcherServlet</servlet-name>  		<servlet-class>at.gv.egovernment.moa.id.entrypoints.DispatcherServlet</servlet-class> @@ -140,28 +140,28 @@  		<servlet-class>at.gv.egovernment.moa.id.auth.servlet.ProcessEngineSignalServlet</servlet-class>  	</servlet>  	<servlet-mapping> -		<!-- do not change this servlet-name --> +		do not change this servlet-name  		<servlet-name>ProcessEngineSignal</servlet-name> -		<!-- Use this url-pattern in order to signal the next (asynchronous) task. --> +		Use this url-pattern in order to signal the next (asynchronous) task.  		<url-pattern>/signalProcess</url-pattern> -		<!-- legacy url patterns for asynchronous tasks (internal default module/processes) --> +		legacy url patterns for asynchronous tasks (internal default module/processes)  		<url-pattern>/GetMISSessionID</url-pattern>  		<url-pattern>/GetForeignID</url-pattern>  		<url-pattern>/VerifyAuthBlock</url-pattern>  		<url-pattern>/VerifyCertificate</url-pattern>  		<url-pattern>/VerifyIdentityLink</url-pattern> -		<!-- +		  			STORK servlet mappings; automatically registered by the stork module;  			refer to at.gv.egovernment.moa.id.auth.modules.stork.STORKWebApplicationInitializer -		--> -		<!-- +		 +		  		<url-pattern>/PEPSConnectorWithLocalSigning</url-pattern>  		<url-pattern>/PEPSConnector</url-pattern> -		--> -	</servlet-mapping> +		 +	</servlet-mapping> -->  	<session-config>  		<session-timeout>5</session-timeout> diff --git a/id/server/idserverlib/pom.xml b/id/server/idserverlib/pom.xml index 532b74209..5ead4c103 100644 --- a/id/server/idserverlib/pom.xml +++ b/id/server/idserverlib/pom.xml @@ -58,6 +58,12 @@      </dependency>
      <dependency>
 +    	<groupId>at.gv.egiz.components</groupId>
 +    	<artifactId>egiz-spring-api</artifactId>
 +    	<version>0.1</version>
 +    </dependency>
 +    
 +    <dependency>
      		<groupId>MOA.id.server</groupId>
      		<artifactId>moa-id-commons</artifactId>
  <!--     		<exclusions>
 diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/MOAIDAuthInitializer.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/MOAIDAuthInitializer.java index 038a35d42..efd8248f4 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/MOAIDAuthInitializer.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/MOAIDAuthInitializer.java @@ -3,21 +3,31 @@  package at.gv.egovernment.moa.id.auth; -import iaik.pki.PKIException; -import iaik.security.ecc.provider.ECCProvider; -import iaik.security.provider.IAIK; -  import java.io.IOException;  import java.security.GeneralSecurityException;  import javax.activation.CommandMap;  import javax.activation.MailcapCommandMap; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletRegistration; + +import org.springframework.beans.factory.config.BeanDefinition; +import org.springframework.beans.factory.support.BeanDefinitionRegistry; +import org.springframework.beans.factory.xml.XmlBeanDefinitionReader; +import org.springframework.context.support.GenericApplicationContext; +import org.springframework.web.WebApplicationInitializer; +import org.springframework.web.context.ContextLoaderListener; +import org.springframework.web.context.request.RequestContextListener; +import org.springframework.web.context.support.GenericWebApplicationContext; +import org.springframework.web.context.support.ServletContextResource; +import org.springframework.web.servlet.DispatcherServlet; +import at.gv.egiz.components.spring.api.SpringLoader;  import at.gv.egovernment.moa.id.config.ConfigurationException;  import at.gv.egovernment.moa.id.config.auth.AuthConfiguration;  import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProviderFactory;  import at.gv.egovernment.moa.id.config.auth.MOAGarbageCollector; -import at.gv.egovernment.moa.id.util.AxisSecureSocketFactory;  import at.gv.egovernment.moa.id.util.MOAIDMessageProvider;  import at.gv.egovernment.moa.id.util.SSLUtils;  import at.gv.egovernment.moa.logging.Logger; @@ -27,6 +37,9 @@ import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider;  import at.gv.egovernment.moa.spss.server.iaik.config.IaikConfigurator;  import at.gv.egovernment.moa.util.Constants;  import at.gv.egovernment.moa.util.MiscUtil; +import iaik.pki.PKIException; +import iaik.security.ecc.provider.ECCProvider; +import iaik.security.provider.IAIK;  /**   * Web application initializer @@ -34,66 +47,136 @@ import at.gv.egovernment.moa.util.MiscUtil;   * @author Paul Ivancsics   * @version $Id$   */ -public class MOAIDAuthInitializer { +public class MOAIDAuthInitializer implements WebApplicationInitializer { + +    private String[] rootServletContexts = null; + +	private String[] servletContexts = null; + +	private String[] activeProfiles = null; + +	public MOAIDAuthInitializer() { +		this.rootServletContexts = null; +		this.servletContexts = new String[] { +				"/WEB-INF/applicationContext.xml", +				 +		}; +		this.activeProfiles = null; +	} +     +     +	/* (non-Javadoc) +	 * @see org.springframework.web.WebApplicationInitializer#onStartup(javax.servlet.ServletContext) +	 */ +	@Override +	public void onStartup(ServletContext servletContext) throws ServletException { +		try { +			Logger.info("=============== Loading Root Context! ==============="); +			GenericWebApplicationContext rootContext = new GenericWebApplicationContext(); +			rootContext.setServletContext(servletContext); + +			Logger.info("=============== Setting active profiles! ==============="); +			if (this.activeProfiles != null) { +				for (String profile : this.activeProfiles) { +					rootContext.getEnvironment().addActiveProfile(profile); +				} +			} + +			Logger.info("=============== Loading Local Contexts! ==============="); +			XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader( +					rootContext); +			if (rootServletContexts != null) { +				for (String rootServletContext : rootServletContexts) { +					Logger.debug("Loading: "+ rootServletContext); +					xmlReader.loadBeanDefinitions(new ServletContextResource( +							servletContext, rootServletContext)); +				} +			} +			// Manage the lifecycle of the root application context +			servletContext.addListener(new ContextLoaderListener(rootContext)); + +			// logger.debug("Beans after logAMQP in {}", rootContext); +			// dumpBeanDefinitions(rootContext); + +			Logger.info("=============== Loading SPI Context! ==============="); +			// logger.debug("Startup with context {}", rootContext); +			if (rootContext instanceof BeanDefinitionRegistry) { +				Logger.debug("Loading EGIZ components"); +				SpringLoader +						.loadSpringServices(rootContext); +			} else { +				Logger.warn("Failed to load external Spring since no BeanDefinitionRegistry"); +			} +			 +			Logger.trace("Beans after SPI in "+ rootContext); +			dumpBeanDefinitions(rootContext); -    /** a boolean identifying if the MOAIDAuthInitializer has been startet */ -    public static boolean initialized = false; +			Logger.debug("Loading servlet config in "+ rootContext); +			if (servletContexts != null) { +				for (String servletContextString : servletContexts) { +					xmlReader.loadBeanDefinitions(new ServletContextResource( +							servletContext, servletContextString)); +				} +			} +			Logger.debug("Refreshing context "+ rootContext); +			rootContext.refresh(); +			Logger.info("=============== Register Dispatcher Servlet! ==============="); + +			Logger.trace("Final Beans in "+ rootContext); +			dumpBeanDefinitions(rootContext); +			 +			 +			Logger.info("Registering dispatcher configuration"); +			ServletRegistration.Dynamic dispatcher = servletContext.addServlet( +					"dispatcher", new DispatcherServlet(rootContext)); +			if (dispatcher != null) {   +				dispatcher.setLoadOnStartup(1); +				dispatcher.addMapping("/*"); +				dispatcher.setAsyncSupported(true); +			} else { +				Logger.error("Failed to register dispatcher server in servlet context!"); +			} +			 +			Logger.info("=============== Register RequestContextListener! ==============="); +			servletContext.addListener(new RequestContextListener()); + +			Logger.info("Basic Context initalisation finished --> Start MOA-ID-Auth initialisation process ..."); +			MOAIDAuthInitializer.initialize(rootContext); +			Logger.info(MOAIDMessageProvider.getInstance().getMessage( +					"init.00", null));			 +			Logger.info("MOA-ID-Auth initialization finished."); +				 +						 +		} catch (Throwable e) { +			Logger.fatal( +					MOAIDMessageProvider.getInstance().getMessage("init.02", +							null), e); +			 +		} +				 +	} +	 +     +          /**       * Initializes the web application components which need initialization:       * logging, JSSE, MOA-ID Auth configuration, Axis, session cleaner. +     * @param rootContext        */ -    public static void initialize() throws ConfigurationException, +    public static void initialize(GenericWebApplicationContext rootContext) throws ConfigurationException,              PKIException, IOException, GeneralSecurityException { -        if (initialized) return; -        initialized = true;          Logger.setHierarchy("moa.id.auth");          Logger.info("Default java file.encoding: "                  + System.getProperty("file.encoding")); -         -		Logger.info("Loading security providers."); -		IAIK.addAsProvider(); -		 -		 -//		Security.insertProviderAt(new IAIK(), 1); -//		Security.insertProviderAt(new ECCProvider(), 1); -         +                          //JDK bug workaround according to:          // http://jce.iaik.tugraz.at/products/03_cms/faq/index.php#JarVerifier          // register content data handlers for S/MIME types          MailcapCommandMap mc = new MailcapCommandMap();          CommandMap.setDefaultCommandMap(mc); -        // create some properties and get the default Session -//        Properties props = new Properties(); -//        props.put("mail.smtp.host", "localhost");         -//        Session session = Session.getDefaultInstance(props, null); - -        // Restricts TLS cipher suites -//        System.setProperty( -//                        "https.cipherSuites", -//                        "SSL_RSA_WITH_RC4_128_SHA,SSL_RSA_WITH_RC4_128_MD5,SSL_RSA_WITH_3DES_EDE_CBC_SHA"); -//       -        // actual HIGH cipher suites from OpenSSL -//	 	  Mapping OpenSSL - Java -//        OpenSSL							Java -//        http://www.openssl.org/docs/apps/ciphers.html		http://docs.oracle.com/javase/6/docs/technotes/guides/security/SunProviders.html -//        via !openssl ciphers -tls1 HIGH !v! -// -//        ADH-AES256-SHA			TLS_DH_anon_WITH_AES_256_CBC_SHA -//        DHE-RSA-AES256-SHA		TLS_DHE_RSA_WITH_AES_256_CBC_SHA -//        DHE-DSS-AES256-SHA		TLS_DHE_DSS_WITH_AES_256_CBC_SHA -//        AES256-SHA				TLS_RSA_WITH_AES_256_CBC_SHA -//        ADH-AES128-SHA			TLS_DH_anon_WITH_AES_128_CBC_SHA -//        DHE-RSA-AES128-SHA		TLS_DHE_RSA_WITH_AES_128_CBC_SHA -//        DHE-DSS-AES128-SHA		TLS_DHE_DSS_WITH_AES_128_CBC_SHA -//        AES128-SHA				TLS_RSA_WITH_AES_128_CBC_SHA -//        ADH-DES-CBC3-SHA			SSL_DH_anon_WITH_3DES_EDE_CBC_SHA -//        EDH-RSA-DES-CBC3-SHA		- -//        EDH-DSS-DES-CBC3-SHA		-  -//        DES-CBC3-SHA				SSL_RSA_WITH_3DES_EDE_CBC_SHA -          if (MiscUtil.isEmpty(System.getProperty("https.cipherSuites")))                  	System.setProperty(          			"https.cipherSuites", @@ -122,9 +205,11 @@ public class MOAIDAuthInitializer {                      "init.01", null), e);          } +		Logger.info("Loading security providers.");          IAIK.addAsProvider();                          ECCProvider.addAsProvider(); +                  // Initializes SSLSocketFactory store          SSLUtils.initialize(); @@ -134,12 +219,15 @@ public class MOAIDAuthInitializer {                  "http://www.w3.org/2001/04/xmldsig-more#");          Constants.nSMap.put(Constants.DSIG_PREFIX, Constants.DSIG_NS_URI); +                  // Initialize configuration provider -       	AuthConfiguration authConf = AuthConfigurationProviderFactory.reload(); +       	AuthConfiguration authConf = AuthConfigurationProviderFactory.reload(rootContext); -    	//test, if MOA-ID is already configured + +       	//test, if MOA-ID is already configured      	authConf.getPublicURLPrefix(); +      	// Initialize MOA-SP      	//MOA-SP is only use by API calls since MOA-ID 3.0.0            try { @@ -161,4 +249,17 @@ public class MOAIDAuthInitializer {          MOAGarbageCollector.start();      } +	private void dumpBeanDefinitions(GenericApplicationContext context) { +		Logger.trace("Registered Bean in context " + context.toString()); +		 +		String[] registeredBeans = context.getBeanDefinitionNames(); +		for (String registeredBean : registeredBeans) { +			BeanDefinition beanDefinition = context +					.getBeanDefinition(registeredBean); +			Logger.trace(registeredBean + " -> " + 	beanDefinition.getBeanClassName()); +			 +		} +		 +		Logger.trace("Registered Bean in context --"+ context); +	}  } diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/MOAIDAuthSpringResourceProvider.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/MOAIDAuthSpringResourceProvider.java new file mode 100644 index 000000000..06a1f0936 --- /dev/null +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/MOAIDAuthSpringResourceProvider.java @@ -0,0 +1,64 @@ +/* + * Copyright 2014 Federal Chancellery Austria + * MOA-ID has been developed in a cooperation between BRZ, the Federal + * Chancellery Austria - ICT staff unit, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://www.osor.eu/eupl/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + * + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + */ +package at.gv.egovernment.moa.id.auth; + +import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.Resource; + +import at.gv.egiz.components.spring.api.SpringResourceProvider; + +/** + * @author tlenz + * + */ +public class MOAIDAuthSpringResourceProvider implements SpringResourceProvider { + +	/* (non-Javadoc) +	 * @see at.gv.egiz.components.spring.api.SpringResourceProvider#getResourcesToLoad() +	 */ +	@Override +	public Resource[] getResourcesToLoad() { +		ClassPathResource moaidauthConfig = new ClassPathResource("/moaid.configuration.beans.xml", MOAIDAuthSpringResourceProvider.class); +		ClassPathResource configurationDBConfig = new ClassPathResource("/configuration.beans.xml", MOAIDAuthSpringResourceProvider.class); +				 +		return new Resource[] {configurationDBConfig, moaidauthConfig};		 +	} + +	/* (non-Javadoc) +	 * @see at.gv.egiz.components.spring.api.SpringResourceProvider#getPackagesToScan() +	 */ +	@Override +	public String[] getPackagesToScan() { +		// TODO Auto-generated method stub +		return null; +	} + +	/* (non-Javadoc) +	 * @see at.gv.egiz.components.spring.api.SpringResourceProvider#getName() +	 */ +	@Override +	public String getName() { +		return "MOA-ID-Auth SpringResourceProvider"; +	} + +} diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/AuthConfigurationProviderFactory.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/AuthConfigurationProviderFactory.java index 9812f346d..a00d3d313 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/AuthConfigurationProviderFactory.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/AuthConfigurationProviderFactory.java @@ -22,12 +22,9 @@   */  package at.gv.egovernment.moa.id.config.auth; -import java.net.URI; -import java.net.URISyntaxException; +import org.springframework.context.ApplicationContext; -import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;  import at.gv.egovernment.moa.id.config.ConfigurationException; -import at.gv.egovernment.moa.id.config.ConfigurationProvider;  import at.gv.egovernment.moa.logging.Logger;  /** @@ -44,7 +41,8 @@ public class AuthConfigurationProviderFactory {  			    throws ConfigurationException {  			    if (instance == null) { -			      reload(); +			    	Logger.fatal("MOA-ID-Auth Configuration is not initialized!!!!!"); +			    	  			    }  			    return instance;  			  } @@ -53,22 +51,9 @@ public class AuthConfigurationProviderFactory {  	 * @return  	 * @throws ConfigurationException   	 */ -	public static AuthConfiguration reload() throws ConfigurationException { -	    String fileName = System.getProperty(ConfigurationProvider.CONFIG_PROPERTY_NAME);	     -	    if (fileName == null) { -	      throw new ConfigurationException("config.01", null); -	    } -	    Logger.info("Loading MOA-ID-AUTH configuration " + fileName); -	     -	    try { -	    	URI fileURI = new URI(fileName);	     -	    	instance = new PropertyBasedAuthConfigurationProvider(fileURI); -	    	 -	    } catch (URISyntaxException e){ -	    	Logger.error("MOA-ID-Auth configuration file does not starts with file:/ as prefix.", e); -	    	throw new ConfigurationException("config24", new Object[]{MOAIDAuthConstants.FILE_URI_PREFIX, fileName}); -	    	 -	    } +	public static AuthConfiguration reload(ApplicationContext springContext) throws ConfigurationException { +	    instance = springContext.getBean("moaidauthconfig", AuthConfiguration.class);	    	  	    return instance; +	      	}  } diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/PropertyBasedAuthConfigurationProvider.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/PropertyBasedAuthConfigurationProvider.java index 18926046c..d78b9b2ce 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/PropertyBasedAuthConfigurationProvider.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/config/auth/PropertyBasedAuthConfigurationProvider.java @@ -6,6 +6,7 @@ import java.io.FileNotFoundException;  import java.io.IOException;  import java.net.MalformedURLException;  import java.net.URI; +import java.net.URISyntaxException;  import java.net.URL;  import java.util.ArrayList;  import java.util.Arrays; @@ -17,9 +18,6 @@ import java.util.Map;  import java.util.Properties;  import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.config.AutowireCapableBeanFactory; -import org.springframework.context.ApplicationContext; -import org.springframework.context.support.ClassPathXmlApplicationContext;  import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants;  import at.gv.egovernment.moa.id.commons.MOAIDConstants; @@ -32,6 +30,7 @@ import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.SecurityLayer;  import at.gv.egovernment.moa.id.commons.db.dao.config.deprecated.VerifyIdentityLink;  import at.gv.egovernment.moa.id.commons.utils.KeyValueUtils;  import at.gv.egovernment.moa.id.config.ConfigurationException; +import at.gv.egovernment.moa.id.config.ConfigurationProvider;  import at.gv.egovernment.moa.id.config.ConfigurationProviderImpl;  import at.gv.egovernment.moa.id.config.ConfigurationUtils;  import at.gv.egovernment.moa.id.config.ConnectionParameter; @@ -54,21 +53,44 @@ public class PropertyBasedAuthConfigurationProvider extends ConfigurationProvide  	private MOAIDConfiguration configuration;  	private final Properties properties = new Properties(); -	private ApplicationContext context = null;  	private boolean requireJDBCBackupImplementation = false; -	public PropertyBasedAuthConfigurationProvider() { +	public PropertyBasedAuthConfigurationProvider(String configFileName) throws ConfigurationException {	     +	    if (configFileName == null) { +	    	configFileName = System.getProperty(ConfigurationProvider.CONFIG_PROPERTY_NAME); +	    	 +	    	if (MiscUtil.isEmpty(configFileName))	    	 +	    		throw new ConfigurationException("config.01", null); +	    } +	     +	    Logger.info("Loading MOA-ID-AUTH configuration " + configFileName); +	     +	    try { +	    	URI fileURI = new URI(configFileName);	    	 +	    	//instance = new PropertyBasedAuthConfigurationProvider(fileURI); +	    	initialize(fileURI); +	    	 +	    } catch (URISyntaxException e){ +	    	Logger.error("MOA-ID-Auth configuration file does not starts with file:/ as prefix.", e); +	    	throw new ConfigurationException("config24", new Object[]{MOAIDAuthConstants.FILE_URI_PREFIX, configFileName}); +	    	 +	    }  	} -	/** -	 * The constructor with path to a properties file as argument. -	 * -	 * @param fileName the path to the properties file -	 * @throws ConfigurationException if an error occurs during loading the properties file. -	 */ -	public PropertyBasedAuthConfigurationProvider(URI fileName) throws ConfigurationException { +//	/** +//	 * The constructor with path to a properties file as argument. +//	 * +//	 * @param fileName the path to the properties file +//	 * @throws ConfigurationException if an error occurs during loading the properties file. +//	 */ +//	public PropertyBasedAuthConfigurationProvider(URI fileName) throws ConfigurationException { +//		initialize(fileName); +//		 +//	} + +	private void initialize(URI fileName) throws ConfigurationException {  		File propertiesFile = new File(fileName);  		rootConfigFileDir = propertiesFile.getParent();  		try { @@ -87,12 +109,12 @@ public class PropertyBasedAuthConfigurationProvider extends ConfigurationProvide  //			JPAPropertiesWithJavaConfig.setLocalProperties(configProp);		  //			System.getProperties().setProperty("location", "file:" + fileName); -			context = new ClassPathXmlApplicationContext( -					new String[] {  "moaid.configuration.beans.xml", -									"configuration.beans.xml" -									}); -			AutowireCapableBeanFactory acbFactory = context.getAutowireCapableBeanFactory(); -			acbFactory.autowireBean(this); +//			context = new ClassPathXmlApplicationContext( +//					new String[] {  "moaid.configuration.beans.xml", +//									"configuration.beans.xml" +//									}); +//			AutowireCapableBeanFactory acbFactory = context.getAutowireCapableBeanFactory(); +//			acbFactory.autowireBean(this);  			//Some databases do not allow the selection of a lob in SQL where expression    			String dbDriver = properties.getProperty("configuration.hibernate.connection.driver_class");					 @@ -133,8 +155,9 @@ public class PropertyBasedAuthConfigurationProvider extends ConfigurationProvide  				}			  		} +		  	} - +	  	/**  	 * Set the {@link Configuration} for this class.  	 * @param configuration the configuration diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/entrypoints/DispatcherServlet.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/entrypoints/DispatcherServlet.java index ce44db215..d1c3401a1 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/entrypoints/DispatcherServlet.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/entrypoints/DispatcherServlet.java @@ -25,7 +25,6 @@ package at.gv.egovernment.moa.id.entrypoints;  import java.io.IOException;  import java.util.Iterator; -import javax.servlet.ServletConfig;  import javax.servlet.ServletException;  import javax.servlet.http.HttpServletRequest;  import javax.servlet.http.HttpServletResponse; @@ -35,7 +34,6 @@ import at.gv.egovernment.moa.id.advancedlogging.MOAReversionLogger;  import at.gv.egovernment.moa.id.advancedlogging.StatisticLogger;  import at.gv.egovernment.moa.id.advancedlogging.TransactionIDUtils;  import at.gv.egovernment.moa.id.auth.MOAIDAuthConstants; -import at.gv.egovernment.moa.id.auth.MOAIDAuthInitializer;  import at.gv.egovernment.moa.id.auth.builder.AuthenticationDataBuilder;  import at.gv.egovernment.moa.id.auth.data.AuthenticationSession;  import at.gv.egovernment.moa.id.auth.exception.AuthenticationException; @@ -78,26 +76,26 @@ public class DispatcherServlet extends AuthServlet{  	public static final String PARAM_TARGET_ACTION = "action";  	public static final String PARAM_TARGET_PENDINGREQUESTID = "pendingid"; -	@Override -	public void init(ServletConfig config) throws ServletException { -		try { -			super.init(config); -			MOAIDAuthInitializer.initialize(); -			Logger.info(MOAIDMessageProvider.getInstance().getMessage( -					"init.00", null)); -		 -			Logger.info("Dispatcher Servlet initialization finished."); -			 -		} catch (Exception ex) { -			Logger.fatal( -					MOAIDMessageProvider.getInstance().getMessage("init.02", -							null), ex); -			 -			//throw new ServletException(ex); -			 -		} -		 -	} +//	@Override +//	public void init(ServletConfig config) throws ServletException { +//		try { +//			super.init(config); +//			MOAIDAuthInitializer.initialize(); +//			Logger.info(MOAIDMessageProvider.getInstance().getMessage( +//					"init.00", null)); +//		 +//			Logger.info("Dispatcher Servlet initialization finished."); +//			 +//		} catch (Exception ex) { +//			Logger.fatal( +//					MOAIDMessageProvider.getInstance().getMessage("init.02", +//							null), ex); +//			 +//			//throw new ServletException(ex); +//			 +//		} +//		 +//	}  	protected void processRequest(HttpServletRequest req,  			HttpServletResponse resp) throws ServletException, IOException { diff --git a/id/server/idserverlib/src/main/resources/META-INF/services/at.gv.egiz.components.spring.api.SpringResourceProvider b/id/server/idserverlib/src/main/resources/META-INF/services/at.gv.egiz.components.spring.api.SpringResourceProvider new file mode 100644 index 000000000..caaad10ca --- /dev/null +++ b/id/server/idserverlib/src/main/resources/META-INF/services/at.gv.egiz.components.spring.api.SpringResourceProvider @@ -0,0 +1 @@ +at.gv.egovernment.moa.id.auth.MOAIDAuthSpringResourceProvider
\ No newline at end of file diff --git a/id/server/idserverlib/src/main/resources/moaid.configuration.beans.xml b/id/server/idserverlib/src/main/resources/moaid.configuration.beans.xml index 7e319e235..5855fc766 100644 --- a/id/server/idserverlib/src/main/resources/moaid.configuration.beans.xml +++ b/id/server/idserverlib/src/main/resources/moaid.configuration.beans.xml @@ -11,7 +11,9 @@  	<context:property-placeholder location="${moa.id.configuration}"/>  -	<bean id="moaidauthconfig" class="at.gv.egovernment.moa.id.config.auth.PropertyBasedAuthConfigurationProvider"/> +	<bean id="moaidauthconfig" class="at.gv.egovernment.moa.id.config.auth.PropertyBasedAuthConfigurationProvider"> +		<constructor-arg value="#{systemProperties['moa.id.configuration']}"/> +	</bean>  	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" lazy-init="true" destroy-method="close">  		<aop:scoped-proxy/> | 
