diff options
| author | Thomas Lenz <thomas.lenz@egiz.gv.at> | 2019-08-05 12:22:31 +0200 | 
|---|---|---|
| committer | Thomas Lenz <thomas.lenz@egiz.gv.at> | 2019-08-05 12:22:31 +0200 | 
| commit | 8d10b11ffa05104fabf242474cc35bc456744ace (patch) | |
| tree | 28a100fd9c0de91d8f9548c62f1ab391a9ac3295 | |
| parent | e44e885e95d7477ecae2d54c8963a8a2093326ac (diff) | |
| download | National_eIDAS_Gateway-8d10b11ffa05104fabf242474cc35bc456744ace.tar.gz National_eIDAS_Gateway-8d10b11ffa05104fabf242474cc35bc456744ace.tar.bz2 National_eIDAS_Gateway-8d10b11ffa05104fabf242474cc35bc456744ace.zip | |
refactor to eIDAS-Node v2.3.0 and use Apache Ignite as new cache implementation
refactor to multi-language support
35 files changed, 1947 insertions, 230 deletions
| diff --git a/basicConfig/eIDAS/igniteSpecificCommunication.xml b/basicConfig/eIDAS/igniteSpecificCommunication.xml new file mode 100644 index 00000000..f817f5a4 --- /dev/null +++ b/basicConfig/eIDAS/igniteSpecificCommunication.xml @@ -0,0 +1,109 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- +  ~ Copyright (c) 2018 by European Commission +  ~ +  ~ Licensed under the EUPL, Version 1.2 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: +  ~ https://joinup.ec.europa.eu/page/eupl-text-11-12 +  ~ +  ~ 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. +  --> + +<!-- +    Ignite Spring configuration file to startup Ignite cache. + +    This file demonstrates how to configure cache using Spring. Provided cache +    will be created on node startup. + +    Use this configuration file when running HTTP REST examples (see 'examples/rest' folder). + +    When starting a standalone node, you need to execute the following command: +    {IGNITE_HOME}/bin/ignite.{bat|sh} examples/config/ignite-cache.xml + +    When starting Ignite from Java IDE, pass path to this file to Ignition: +    Ignition.start("examples/config/ignite-cache.xml"); +--> + + +<beans xmlns="http://www.springframework.org/schema/beans" +       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +       xsi:schemaLocation=" +        http://www.springframework.org/schema/beans +        http://www.springframework.org/schema/beans/spring-beans.xsd"> + +    <bean id="igniteSpecificCommunication.cfg" class="org.apache.ignite.configuration.IgniteConfiguration"> + +        <property name="igniteInstanceName" value="igniteSpecificCommunication"/> + +        <property name="cacheConfiguration"> +            <list> + +                <!--Specific Communication Caches--> +                <!-- Partitioned cache example configuration (Atomic mode). --> +                <bean class="org.apache.ignite.configuration.CacheConfiguration"> +                    <property name="name" value="specificNodeConnectorRequestCache"/> +                    <property name="atomicityMode" value="ATOMIC"/> +                    <property name="backups" value="1"/> +                </bean> +                <!-- Partitioned cache example configuration (Atomic mode). --> +                <bean class="org.apache.ignite.configuration.CacheConfiguration"> +                    <property name="name" value="nodeSpecificProxyserviceRequestCache"/> +                    <property name="atomicityMode" value="ATOMIC"/> +                    <property name="backups" value="1"/> +                </bean> +                <!-- Partitioned cache example configuration (Atomic mode). --> +                <bean class="org.apache.ignite.configuration.CacheConfiguration"> +                    <property name="name" value="specificNodeProxyserviceResponseCache"/> +                    <property name="atomicityMode" value="ATOMIC"/> +                    <property name="backups" value="1"/> +                </bean> +                <!-- Partitioned cache example configuration (Atomic mode). --> +                <bean class="org.apache.ignite.configuration.CacheConfiguration"> +                    <property name="name" value="nodeSpecificConnectorResponseCache"/> +                    <property name="atomicityMode" value="ATOMIC"/> +                    <property name="backups" value="1"/> +                </bean> +                <!-- Partitioned cache example configuration (Atomic mode). --> +                <bean class="org.apache.ignite.configuration.CacheConfiguration"> +                    <property name="name" value="msConnectorCache"/> +                    <property name="atomicityMode" value="ATOMIC"/> +                    <property name="backups" value="1"/> +                </bean> + +            </list> +        </property> + +        <!--Multicast discover of other nodes in the grid configuration--> +        <property name="discoverySpi"> +            <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi"> +                <property name="ipFinder"> +                    <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder"> +                        <property name="multicastGroup" value="228.10.10.157"/> +                    </bean> +                </property> +            </bean> +        </property> + +        <!-- how frequently Ignite will output basic node metrics into the log--> +        <property name="metricsLogFrequency" value="#{60 * 10 * 1000}"/> + +    </bean> + +    <!-- +        Initialize property configurer so we can reference environment variables. +    --> +    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> +        <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_FALLBACK"/> +        <property name="searchSystemEnvironment" value="true"/> +    </bean> + +</beans> diff --git a/connector/pom.xml b/connector/pom.xml index 2fd9d6fa..d1131618 100644 --- a/connector/pom.xml +++ b/connector/pom.xml @@ -57,6 +57,10 @@    			<artifactId>spring-context</artifactId>  		</dependency>  		<dependency> +			<groupId>org.thymeleaf</groupId> +    		<artifactId>thymeleaf-spring5</artifactId> +		</dependency> +		<dependency>      		<groupId>org.slf4j</groupId>      		<artifactId>slf4j-api</artifactId>  		</dependency> diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/config/StaticResourceConfiguration.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/config/StaticResourceConfiguration.java index 9367c69f..34b9d2fa 100644 --- a/connector/src/main/java/at/asitplus/eidas/specific/connector/config/StaticResourceConfiguration.java +++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/config/StaticResourceConfiguration.java @@ -1,25 +1,25 @@ -/* - * 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. +/******************************************************************************* + * Copyright 2019 A-SIT Plus GmbH + * AT-specific eIDAS Connector has been developed in a cooperation between EGIZ,  + * A-SIT Plus GmbH, A-SIT, 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/ + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "License"); + * You may not use this work except in compliance with the License. + * You may obtain a copy of the License at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12   *   * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, + * distributed under the License 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. + * See the License for the specific language governing permissions and + * limitations under the License.   *   * 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.asitplus.eidas.specific.connector.config;  import java.net.MalformedURLException; @@ -28,10 +28,14 @@ import org.apache.commons.lang3.StringUtils;  import org.slf4j.Logger;  import org.slf4j.LoggerFactory;  import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean;  import org.springframework.context.annotation.Configuration; +import org.springframework.context.support.ReloadableResourceBundleMessageSource;  import org.springframework.web.servlet.config.annotation.EnableWebMvc;  import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;  import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; +import org.springframework.web.servlet.i18n.CookieLocaleResolver; +import org.thymeleaf.templateresolver.FileTemplateResolver;  import at.asitplus.eidas.specific.connector.MSeIDASNodeConstants;  import at.gv.egiz.eaaf.core.api.idp.IConfiguration; @@ -49,6 +53,8 @@ public class StaticResourceConfiguration extends WebMvcConfigurerAdapter {  			"/"  		}; +	private static final String DEFAULT_MESSAGE_SOURCE = "classpath:properties/status_messages"; +	  	@Autowired private IConfiguration basicConfig; @@ -73,7 +79,83 @@ public class StaticResourceConfiguration extends WebMvcConfigurerAdapter {  		}  		registry.addResourceHandler("/**").addResourceLocations(CLASSPATH_RESOURCE_LOCATIONS); +			    +	} +	 +	 @Bean +	 public ReloadableResourceBundleMessageSource internalMessageSource(){ +		final ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); + +	    //add default message source +	    messageSource.setBasename(DEFAULT_MESSAGE_SOURCE);	      	         +	    messageSource.setDefaultEncoding("UTF-8"); +	    return messageSource; +	         +	 } +	  +	 @Bean +	 public ReloadableResourceBundleMessageSource messageSource(){ +		 final ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); +	    messageSource.setDefaultEncoding("UTF-8"); +	    messageSource.setParentMessageSource(internalMessageSource()); +	    	 +	    final String staticResources = basicConfig.getBasicConfiguration(MSeIDASNodeConstants.PROP_CONFIG_WEBCONTENT_PROPERTIES_PATH); +		try { +			if (StringUtils.isNotEmpty(staticResources)) { +				final String absPath = FileUtils.makeAbsoluteURL(staticResources , basicConfig.getConfigurationRootDirectory()); +				messageSource.setBasename(absPath); +								 +			} else +				log.debug("No Ressourcefolder for dynamic Web content templates"); +				 +		} catch (final MalformedURLException e) { +			log.warn("Can NOT initialize ressourcefolder for dynamic Web content templates", e); +				 +		} +				 +		return messageSource; +			 +	 } +	  +	 @Bean +	 public CookieLocaleResolver localeResolver(){ +		 final CookieLocaleResolver localeResolver = new CookieLocaleResolver(); +	     localeResolver.setCookieName("currentLanguage"); +	     localeResolver.setCookieMaxAge(3600); +	     return localeResolver; +	 } -	     +	 @Bean(name="templateResolver") +	 public FileTemplateResolver templateResolver() { +		final String staticResources = basicConfig.getBasicConfiguration(MSeIDASNodeConstants.PROP_CONFIG_WEBCONTENT_TEMPLATES_PATH); +		try { +			if (StringUtils.isNotEmpty(staticResources)) { +				String absPath = FileUtils.makeAbsoluteURL(staticResources , basicConfig.getConfigurationRootDirectory()); +				if (!absPath.endsWith("/")) +					absPath += "/"; + +				if (absPath.startsWith("file:")) +					absPath = absPath.substring("file:".length()); +					 +				final FileTemplateResolver viewResolver = new FileTemplateResolver(); +				viewResolver.setPrefix(absPath); +				viewResolver.setSuffix(".html"); +				viewResolver.setTemplateMode("HTML5"); +				viewResolver.setCacheable(false); +									 +			    log.info("Add Ressourcefolder: " + absPath + " for dynamic Web content templates"); +				return viewResolver ; +													 +			} else +				log.debug("No Ressourcefolder for dynamic Web content templates"); +					 +		} catch (final MalformedURLException e) { +			log.warn("Can NOT initialize ressourcefolder for dynamic Web content templates", e); +				 +		} +			 +			//TODO: implement some backup solution +		return null; +			  	}  } diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/processes/tasks/EvaluateCountrySelectionTask.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/processes/tasks/EvaluateCountrySelectionTask.java index 8e32f00e..91cf6515 100644 --- a/connector/src/main/java/at/asitplus/eidas/specific/connector/processes/tasks/EvaluateCountrySelectionTask.java +++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/processes/tasks/EvaluateCountrySelectionTask.java @@ -33,51 +33,42 @@ import org.slf4j.Logger;  import org.slf4j.LoggerFactory;  import org.springframework.stereotype.Component; -import at.asitplus.eidas.specific.connector.MSConnectorEventCodes;  import at.asitplus.eidas.specific.connector.MSeIDASNodeConstants;  import at.gv.egiz.eaaf.core.api.data.EAAFConstants;  import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext;  import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException; -import at.gv.egiz.eaaf.core.impl.idp.auth.modules.AbstractAuthServletTask; +import at.gv.egiz.eaaf.core.impl.idp.controller.tasks.AbstractLocaleAuthServletTask;  /**   * @author tlenz   *   */  @Component("EvaluateCountrySelectionTask") -public class EvaluateCountrySelectionTask extends AbstractAuthServletTask { +public class EvaluateCountrySelectionTask extends AbstractLocaleAuthServletTask  {  	private static final Logger log = LoggerFactory.getLogger(EvaluateCountrySelectionTask.class);  	@Override -	public void execute(ExecutionContext executionContext, HttpServletRequest request, HttpServletResponse response) +	public void executeWithLocale(ExecutionContext executionContext, HttpServletRequest request, HttpServletResponse response)  			throws TaskExecutionException {		  		try { -			 -			String stopAuthFlag = request.getParameter(MSeIDASNodeConstants.REQ_PARAM_STOP_PROCESS); -			if (StringUtils.isNotEmpty(stopAuthFlag) && Boolean.parseBoolean(stopAuthFlag)) { -				log.info("Authentication process WAS stopped by entity. Stopping auth. process ... "); -				revisionsLogger.logEvent(pendingReq, MSConnectorEventCodes.PROCESS_STOPPED_BY_USER); -				pendingReq.setAbortedByUser(true); -				pendingReq.setAuthenticated(false); -				 -			} else {	 					  -				// set parameter execution context			 -				Enumeration<String> reqParamNames = request.getParameterNames(); -				while(reqParamNames.hasMoreElements()) { -					String paramName = reqParamNames.nextElement(); -					if (StringUtils.isNotEmpty(paramName) &&  -							!EAAFConstants.PROCESS_ENGINE_PENDINGREQUESTID.equalsIgnoreCase(paramName)) { -						for (String el : MSeIDASNodeConstants.COUNTRY_SELECTION_PARAM_WHITELIST) { -							if (el.equalsIgnoreCase(paramName)) -								executionContext.put(paramName,  -										StringEscapeUtils.escapeHtml(request.getParameter(paramName))); -						} +		 					  +			// set parameter execution context			 +			Enumeration<String> reqParamNames = request.getParameterNames(); +			while(reqParamNames.hasMoreElements()) { +				String paramName = reqParamNames.nextElement(); +				if (StringUtils.isNotEmpty(paramName) &&  +						!EAAFConstants.PROCESS_ENGINE_PENDINGREQUESTID.equalsIgnoreCase(paramName)) { +					for (String el : MSeIDASNodeConstants.COUNTRY_SELECTION_PARAM_WHITELIST) { +						if (el.equalsIgnoreCase(paramName)) +							executionContext.put(paramName,  +									StringEscapeUtils.escapeHtml(request.getParameter(paramName)));  					} -				}    	    			 -				log.info("Country selection finished. Starting auth. process for country ... "); -				 -			} +				} +			}    	    			 +			 +			log.info("Country selection finished. Starting auth. process for country ... "); +		  		} catch (Exception e) {  			log.warn("EvaluateBKUSelectionTask has an internal error", e); diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/processes/tasks/GenerateCountrySelectionFrameTask.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/processes/tasks/GenerateCountrySelectionFrameTask.java index a707c827..49dd6b02 100644 --- a/connector/src/main/java/at/asitplus/eidas/specific/connector/processes/tasks/GenerateCountrySelectionFrameTask.java +++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/processes/tasks/GenerateCountrySelectionFrameTask.java @@ -34,7 +34,7 @@ import at.asitplus.eidas.specific.connector.MSConnectorEventCodes;  import at.asitplus.eidas.specific.connector.MSeIDASNodeConstants;  import at.asitplus.eidas.specific.connector.gui.StaticGuiBuilderConfiguration;  import at.gv.egiz.eaaf.core.api.gui.IGUIBuilderConfiguration; -import at.gv.egiz.eaaf.core.api.gui.IGUIFormBuilder; +import at.gv.egiz.eaaf.core.api.gui.ISpringMVCGUIFormBuilder;  import at.gv.egiz.eaaf.core.api.idp.IConfiguration;  import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext;  import at.gv.egiz.eaaf.core.exceptions.EAAFException; @@ -50,7 +50,7 @@ import at.gv.egiz.eaaf.core.impl.idp.auth.modules.AbstractAuthServletTask;  public class GenerateCountrySelectionFrameTask extends AbstractAuthServletTask {  	private static final Logger log = LoggerFactory.getLogger(GenerateCountrySelectionFrameTask.class); -	@Autowired IGUIFormBuilder guiBuilder; +	@Autowired ISpringMVCGUIFormBuilder guiBuilder;  	@Autowired IConfiguration basicConfig;  	@Override diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/storage/CacheWitheIDASBackend.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/storage/CacheWitheIDASBackend.java index 560ae592..4bcced82 100644 --- a/connector/src/main/java/at/asitplus/eidas/specific/connector/storage/CacheWitheIDASBackend.java +++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/storage/CacheWitheIDASBackend.java @@ -22,34 +22,29 @@   *******************************************************************************/  package at.asitplus.eidas.specific.connector.storage; -import java.util.ArrayList; -import java.util.Date; -import java.util.Iterator; -import java.util.List; +import eu.eidas.auth.commons.cache.ConcurrentCacheService; +import eu.eidas.auth.commons.tx.AbstractCache; -import eu.eidas.auth.commons.cache.ConcurrentMapService; -import eu.eidas.auth.commons.tx.AbstractCorrelationMap; +public class CacheWitheIDASBackend extends AbstractCache<String, TransactionStoreElement> { -public class CacheWitheIDASBackend extends AbstractCorrelationMap<TransactionStoreElement> { - -	protected CacheWitheIDASBackend(ConcurrentMapService concurrentMapService) { +	protected CacheWitheIDASBackend(ConcurrentCacheService concurrentMapService) {  		super(concurrentMapService);  	} -	public List<String> clean(Date now, long dataTimeOut) { -		List<String> result = new ArrayList<String>(); -		Iterator<String> iterator = map.keySet().iterator(); -		while (iterator.hasNext()) { -			String key = iterator.next();			 -			if (map.containsKey(key)) { -				TransactionStoreElement element = map.get(key);				 -				if (now.getTime() - element.getCreated().getTime() > dataTimeOut) -					result.add(key); -			}										 -		} -		 -		return result; -		 -	} +//	public List<String> clean(Date now, long dataTimeOut) { +//		List<String> result = new ArrayList<String>(); +//		Iterator<String> iterator = map.keySet().iterator(); +//		while (iterator.hasNext()) { +//			String key = iterator.next();			 +//			if (map.containsKey(key)) { +//				TransactionStoreElement element = map.get(key);				 +//				if (now.getTime() - element.getCreated().getTime() > dataTimeOut) +//					result.add(key); +//			}										 +//		} +//		 +//		return result; +//		 +//	}  } diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/storage/eIDASCacheTransactionStoreDecorator.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/storage/eIDASCacheTransactionStoreDecorator.java index 04a8f6fd..270d0e31 100644 --- a/connector/src/main/java/at/asitplus/eidas/specific/connector/storage/eIDASCacheTransactionStoreDecorator.java +++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/storage/eIDASCacheTransactionStoreDecorator.java @@ -22,6 +22,7 @@   *******************************************************************************/  package at.asitplus.eidas.specific.connector.storage; +import java.util.Arrays;  import java.util.Date;  import java.util.List; @@ -43,6 +44,7 @@ public class eIDASCacheTransactionStoreDecorator implements ITransactionStorage{  		if (containsKey(oldKey)) {  			TransactionStoreElement el = storage.get(oldKey);  			el.setKey(newKey); +			el.setData(value);  			storage.put(newKey, el);  			storage.remove(oldKey); @@ -53,19 +55,14 @@ public class eIDASCacheTransactionStoreDecorator implements ITransactionStorage{  	@Override  	public List<String> clean(Date now, long dataTimeOut) { -		return storage.clean(now, dataTimeOut); +		log.info("Clean is NOT implemented, because its not needed"); +		return Arrays.asList();  	}  	@Override -	public boolean containsKey(String key) { -		if (key != null) { -			if (storage.get(key) != null) -				return true; -			 -		} -			 -		return false; +	public boolean containsKey(String key) {			 +		return storage.containsKey(key);  	} diff --git a/connector/src/main/resources/applicationContext.xml b/connector/src/main/resources/applicationContext.xml index 709b699f..9105bb56 100644 --- a/connector/src/main/resources/applicationContext.xml +++ b/connector/src/main/resources/applicationContext.xml @@ -22,6 +22,9 @@  	<mvc:interceptors>    		<bean class="at.asitplus.eidas.specific.connector.interceptor.WebFrontEndSecurityInterceptor" /> +  		<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"> +  			 <property name="paramName" value="lang" /> +  		</bean>	    	</mvc:interceptors>   	<context:property-placeholder location="${eidas.ms.configuration}"/> diff --git a/connector/src/main/resources/processes/CountrySelection.process.xml b/connector/src/main/resources/processes/CountrySelection.process.xml index e4e23e64..575bbf0d 100644 --- a/connector/src/main/resources/processes/CountrySelection.process.xml +++ b/connector/src/main/resources/processes/CountrySelection.process.xml @@ -8,6 +8,8 @@  	<pd:StartEvent id="start" />	  	<pd:Transition from="start"                     		to="initializeCountrySelection" />	  	<pd:Transition from="initializeCountrySelection" 		to="parseCountrySelection" /> +	 +	<pd:Transition from="parseCountrySelection"    		to="initializeCountrySelection" conditionExpression="ctx['changeLanguage']"/>  	<pd:Transition from="parseCountrySelection"    			to="restartAuthProzessManagement" />	  	<pd:Transition from="restartAuthProzessManagement"  	to="end" />		  	<pd:EndEvent id="end" /> diff --git a/connector/src/main/resources/specific_eIDAS_connector.beans.xml b/connector/src/main/resources/specific_eIDAS_connector.beans.xml index a1abca76..32b1685d 100644 --- a/connector/src/main/resources/specific_eIDAS_connector.beans.xml +++ b/connector/src/main/resources/specific_eIDAS_connector.beans.xml @@ -72,11 +72,11 @@   	<bean 	id="eaafProtocolAuthenticationService"  			class="at.gv.egiz.eaaf.core.impl.idp.auth.services.ProtocolAuthenticationService"> -		<property name="guiBuilder" ref="DefaultGUIBuilderImpl"/> +		<property name="guiBuilder" ref="mvcGUIBuilderImpl"/>  	</bean> - 	<bean id="simplePendingReqIdGenerationStrategy"  -			class="at.gv.egiz.eaaf.core.impl.utils.SimplePendingRequestIdGenerationStrategy"/> + 	<bean 	id="securePendingRequestIdGeneration"  +			class="at.gv.egiz.eaaf.core.impl.utils.SecurePendingRequestIdGenerationStrategy"/>	   	<bean id="PVPMetadataProvider"   			class="at.asitplus.eidas.specific.connector.provider.PVPMetadataProvider" /> @@ -89,10 +89,24 @@  	<bean id="GUIBuilderConfigurationFactory"  			class="at.asitplus.eidas.specific.connector.gui.GUIBuilderConfigurationFactory" /> +	 	 	 +	<bean id="velocityGUIBuilderImpl"  +			class="at.asitplus.eidas.specific.connector.gui.DefaultVelocityGUIBuilderImpl"/>	 	  -	<bean id="DefaultGUIBuilderImpl"  -			class="at.asitplus.eidas.specific.connector.gui.DefaultGUIBuilderImpl"/>	 	  -	 	  +	<bean 	id="mvcGUIBuilderImpl"  +			class="at.asitplus.eidas.specific.connector.gui.SpringMVCGUIFormBuilderImpl"/> +	 +	<bean 	id="templateEngine" +    	  	class="org.thymeleaf.spring5.SpringTemplateEngine"> +    	<property name="templateResolver" ref="templateResolver" /> +	</bean> + +	<bean 	class="org.thymeleaf.spring5.view.ThymeleafViewResolver"> +		<property name="order" value="2"/> +    	<property name="templateEngine" ref="templateEngine" /> +    	<property name="characterEncoding" value="UTF-8"/> +	</bean> +	  	<bean id="StatusMessageProvider"  			class="at.asitplus.eidas.specific.connector.provider.StatusMessageProvider"  /> diff --git a/connector/src/main/resources/specific_eIDAS_connector.storage.beans.xml b/connector/src/main/resources/specific_eIDAS_connector.storage.beans.xml index fa05dc9b..a460dea6 100644 --- a/connector/src/main/resources/specific_eIDAS_connector.storage.beans.xml +++ b/connector/src/main/resources/specific_eIDAS_connector.storage.beans.xml @@ -12,17 +12,7 @@  		http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">  	<import resource="classpath:specificCommunicationDefinitionApplicationContext.xml"/> -	 -	<bean id="useDistributedMapsSpecificConnector" class="java.lang.String"> -        <constructor-arg value="${eidas.ms.context.use.clustermode}"/> -    </bean> - -    <!-- suffix for some of the beans having two possible implementations - one for development and one for production --> -    <bean id="distributedEnvSuffixSpecificConnector" class="java.lang.String"> -        <constructor-arg value="#{useDistributedMapsSpecificConnector.toString()=='false'?'Dev':'Prod'}"/> -    </bean> - -						 +					  <!-- 	<bean id="SimpleInMemoryTransactionStorage"  			class="at.asitplus.eidas.specific.connector.storage.SimpleInMemoryTransactionStorage" /> --> @@ -30,10 +20,16 @@  			class="at.asitplus.eidas.specific.connector.storage.eIDASCacheTransactionStoreDecorator"/>      <bean id="CacheWitheIDASBackend" class="at.asitplus.eidas.specific.connector.storage.CacheWitheIDASBackend"> -        <constructor-arg ref="springServiceCMapspecificMSSpCorProvider#{distributedEnvSuffixSpecificConnector.toString()}"/> +        <constructor-arg ref="msNodeCacheImpl"/>      </bean> -    	<bean id="defaultHazelcastInstance" class="java.lang.String"> +	<bean id="msNodeCacheImpl" class="eu.eidas.auth.cache.ConcurrentCacheServiceIgniteSpecificCommunicationImpl"> +        <property name="igniteInstanceInitializerSpecificCommunication" ref="eidasIgniteInstanceInitializerSpecificCommunication"/> +        <property name="cacheName" value="msConnectorCache"/> +    </bean> +	 +	 +    	<!-- bean id="defaultHazelcastInstance" class="java.lang.String">          	<constructor-arg value="eidasHazelcastInstance"/>      	</bean> @@ -50,6 +46,6 @@      	<bean id="springServiceCMapspecificMSSpCorProviderDev" class="eu.eidas.auth.commons.cache.ConcurrentMapServiceDefaultImpl">          	<property name="expireAfterAccess" value="1800"/>          	<property name="maximumSize" value="1000"/> -    	</bean> +    	</bean -->  </beans>
\ No newline at end of file diff --git a/connector/src/main/resources/templates/countrySelection.html b/connector/src/main/resources/templates/countrySelection.html index 9ea9c08e..3937b464 100644 --- a/connector/src/main/resources/templates/countrySelection.html +++ b/connector/src/main/resources/templates/countrySelection.html @@ -1,219 +1,255 @@  <!DOCTYPE html> -<html> +<html xmlns:th="http://www.thymeleaf.org" +      xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" +      layout:decorator="fragments/base" +      th:with="lang=${#locale.language}" th:lang="${lang}"> +        <head>    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">    <meta name="viewport" content="width=device-width, initial-scale=1"> -  <link rel="stylesheet" href="$contextPath/css/css_country.css"/> -   - -<title>eIDAS-Login</title> +  <link rel="stylesheet" href="$contextPath/static/css/css_country.css" th:href="@{/static/css/css_country.css}"/> +  <script type="text/javascript" src="$contextPath/static/js/js_country.js" th:attr="src=@{/static/static/js/js_country.js}"></script>   +  <title th:text="#{gui.countryselection.title}">eIDAS-Login Länderauswahl</title>  </head> +  <body>      <div id="page"> -        <h2> Select your country </h2> +      <div class="languageselection" th:include="language_selection :: selectlanguage"> +          LanguageSelectionBlock +      </div> +     +        <h2 th:text="#{gui.countryselection.header.selection}"> Select your country </h2>          <div id="country">              <form class="block" method="post" action="$contextPath$submitEndpoint">  -                <img class="countryimage" src="$contextPath/img/countries/Belgium-EU_.png" alt="Belgium-eID"/> -                <input type="submit" value="Belgium"> +                <a><img class="countryimage" src="$contextPath/img/countries/Belgium-EU.png" alt="Belgium-eID" +                        th:attr="src=@{img/countries/Belgium-EU.png},alt=#{gui.countryselection.country.be.logo.alt}"/></a> +                <input type="submit" value="Belgium" th:attr="value=#{gui.countryselection.country.be}">                   <input type="hidden" name="selectedCountry" value="BE"> -                <input type="hidden" name="pendingid" value="$pendingReqID">  +                <input  type="hidden" name="pendingid"  value="$pendingid" th:attr="value=${pendingid}" />               </form>              <form class="block" method="post" action="$contextPath$submitEndpoint">  -                <img class="countryimage" src="$contextPath/img/countries/Bulgaria-EU_.png" alt="Bulgaria-eID"/> -                <input type="submit" value="Bulgaria"> +                <a><img class="countryimage" src="$contextPath/img/countries/Bulgaria-EU.png" alt="Bulgaria-eID" +                        th:attr="src=@{img/countries/Bulgaria-EU.png},alt=#{gui.countryselection.country.bg.logo.alt}"/></a> +                <input type="submit" value="Bulgaria" th:attr="value=#{gui.countryselection.country.bg}" >                  <input type="hidden" name="selectedCountry" value="BG"> -                <input type="hidden" name="pendingid" value="$pendingReqID">  +                <input  type="hidden" name="pendingid"  value="$pendingid" th:attr="value=${pendingid}" />               </form>              <form class="block" method="post" action="$contextPath$submitEndpoint">  -                <img class="countryimage" src="$contextPath/img/countries/Croatia-EU_.png" alt="Croatia-eID"/> -                <input type="submit" value="Croatia"> +               <a><img class="countryimage" src="$contextPath/img/countries/Croatia-EU.png" alt="Croatia-eID" +                        th:attr="src=@{img/countries/Croatia-EU.png},alt=#{gui.countryselection.country.hr.logo.alt}"/></a> +                <input type="submit" value="Croatia" th:attr="value=#{gui.countryselection.country.hr}">                  <input type="hidden" name="selectedCountry" value="HR"> -                <input type="hidden" name="pendingid" value="$pendingReqID">  +                <input  type="hidden" name="pendingid"  value="$pendingid" th:attr="value=${pendingid}" />               </form>              <form class="block" method="post" action="$contextPath$submitEndpoint">  -                <img class="countryimage" src="$contextPath/img/countries/Cyprus-EU_.png" alt="Cyprus-eID"/>  -                <input type="submit" value="Cyprus"> +                <a><img class="countryimage" src="$contextPath/img/countries/Cyprus-EU.png" alt="Cyprus-eID" +                        th:attr="src=@{img/countries/Cyprus-EU.png},alt=#{gui.countryselection.country.cy.logo.alt}"/></a>  +                <input type="submit" value="Cyprus" th:attr="value=#{gui.countryselection.country.cy}">                  <input type="hidden" name="selectedCountry" value="CY"> -                <input type="hidden" name="pendingid" value="$pendingReqID">  +                <input  type="hidden" name="pendingid"  value="$pendingid" th:attr="value=${pendingid}" />               </form>              <form class="block" method="post" action="$contextPath$submitEndpoint">  -                <img class="countryimage" src="$contextPath/img/countries/CzechRepublic-EU_.png" alt="CzechRepublic-eID"/> -                <input type="submit" value="Czech Republic"> +                <a><img class="countryimage" src="$contextPath/img/countries/CzechRepublic-EU.png" alt="CzechRepublic-eID" +                        th:attr="src=@{img/countries/CzechRepublic-EU.png},alt=#{gui.countryselection.country.cz.logo.alt}"/></a> +                <input type="submit" value="CzechRepublic" th:attr="value=#{gui.countryselection.country.cz}">                  <input type="hidden" name="selectedCountry" value="CZ"> -                <input type="hidden" name="pendingid" value="$pendingReqID">  +                <input  type="hidden" name="pendingid"  value="$pendingid" th:attr="value=${pendingid}" />               </form>              <form class="block" method="post" action="$contextPath$submitEndpoint">  -                <img class="countryimage" src="$contextPath/img/countries/Denmark-EU_.png" alt="Denmark-eID"/> -                <input type="submit" value="Denmark"> +               <a><img class="countryimage" src="$contextPath/img/countries/Denmark-EU.png" alt="Denmark-eID" +                        th:attr="src=@{img/countries/Denmark-EU.png},alt=#{gui.countryselection.country.dk.logo.alt}"/></a> +                <input type="submit" value="Denmark" th:attr="value=#{gui.countryselection.country.dk}">                  <input type="hidden" name="selectedCountry" value="DK"> -                <input type="hidden" name="pendingid" value="$pendingReqID">     +                <input  type="hidden" name="pendingid"  value="$pendingid" th:attr="value=${pendingid}" />                  </form>              <form class="block" method="post" action="$contextPath$submitEndpoint">  -            	<img class="countryimage" src="$contextPath/img/countries/germany-eu_.png" alt="Germany-eID"/> -                <input type="submit" value="Germany" role="button" id="button"> +            	 <a><img class="countryimage" src="$contextPath/img/countries/germany-eu_.png" alt="Germany-eID" +                        th:attr="src=@{img/countries/germany-eu_.png},alt=#{gui.countryselection.country.de.logo.alt}"/></a> +                <input type="submit" role="button" value="Deutschland / Germany" th:attr="value=#{gui.countryselection.country.de}" />                  <input type="hidden" name="selectedCountry" value="DE"> -                <input type="hidden" name="pendingid" value="$pendingReqID"> +                <input  type="hidden" name="pendingid"  value="$pendingid" th:attr="value=${pendingid}" />              </form>              <form class="block" method="post" action="$contextPath$submitEndpoint">  -                <img class="countryimage" src="$contextPath/img/countries/Estonia-EU_.png" alt="Estonia-eID"/> -                <input type="submit" value="Estonia"> +                <a><img class="countryimage" src="$contextPath/img/countries/Estonia-EU.png" alt="Estonia-eID" +                        th:attr="src=@{img/countries/Estonia-EU.png},alt=#{gui.countryselection.country.ee.logo.alt}"/></a> +                <input type="submit" value="Estonia" th:attr="value=#{gui.countryselection.country.ee}">                  <input type="hidden" name="selectedCountry" value="EE"> -                <input type="hidden" name="pendingid" value="$pendingReqID"> +                <input  type="hidden" name="pendingid"  value="$pendingid" th:attr="value=${pendingid}" />              </form>              <form class="block" method="post" action="$contextPath$submitEndpoint">  -                <img class="countryimage" src="$contextPath/img/countries/Finland-EU_.png" alt="Finland-eID"/> -                <input type="submit" value="Finland"> +                 <a><img class="countryimage" src="$contextPath/img/countries/Finland-EU.png" alt="Finland-eID" +                        th:attr="src=@{img/countries/Finland-EU.png},alt=#{gui.countryselection.country.fi.logo.alt}"/></a> +                <input type="submit" value="Finland" th:attr="value=#{gui.countryselection.country.fi}">                  <input type="hidden" name="selectedCountry" value="FI"> -                <input type="hidden" name="pendingid" value="$pendingReqID"> +                <input  type="hidden" name="pendingid"  value="$pendingid" th:attr="value=${pendingid}" />              </form>              <form class="block" method="post" action="$contextPath$submitEndpoint">  -                <img class="countryimage" src="$contextPath/img/countries/France-EU_.png" alt="France-eID"/> -                <input type="submit" value="France"> +                <a><img class="countryimage" src="$contextPath/img/countries/France-EU.png" alt="France-eID" +                        th:attr="src=@{img/countries/France-EU.png},alt=#{gui.countryselection.country.fr.logo.alt}"/></a> +                <input type="submit" value="France" th:attr="value=#{gui.countryselection.country.fr}">                  <input type="hidden" name="selectedCountry" value="FR"> -                <input type="hidden" name="pendingid" value="$pendingReqID"> +                <input  type="hidden" name="pendingid"  value="$pendingid" th:attr="value=${pendingid}" />              </form>              <form class="block" method="post" action="$contextPath$submitEndpoint">  -                <img class="countryimage" src="$contextPath/img/countries/Greece-EU_.png" alt="Greece-eID"/>  -                <input type="submit" value="Greece"> +               <a><img class="countryimage" src="$contextPath/img/countries/Greece-EU.png" alt="Greece-eID" +                        th:attr="src=@{img/countries/Greece-EU.png},alt=#{gui.countryselection.country.gr.logo.alt}"/></a>  +                <input type="submit" value="Greece" th:attr="value=#{gui.countryselection.country.gr}">                  <input type="hidden" name="selectedCountry" value="GR"> -                <input type="hidden" name="pendingid" value="$pendingReqID">     +                <input  type="hidden" name="pendingid"  value="$pendingid" th:attr="value=${pendingid}" />                  </form>              <form class="block" method="post" action="$contextPath$submitEndpoint">  -                <img class="countryimage" src="$contextPath/img/countries/Hungary-EU_.png" alt="Hungary-eID"/>  -                <input type="submit" value="Hungary"> +               <a><img class="countryimage" src="$contextPath/img/countries/Hungary-EU.png" alt="Hungary-eID" +                        th:attr="src=@{img/countries/Hungary-EU.png},alt=#{gui.countryselection.country.hu.logo.alt}"/></a>  +                <input type="submit" value="Hungary" th:attr="value=#{gui.countryselection.country.hu}">                  <input type="hidden" name="selectedCountry" value="HU"> -                <input type="hidden" name="pendingid" value="$pendingReqID"> +                <input  type="hidden" name="pendingid"  value="$pendingid" th:attr="value=${pendingid}" />              </form>              <form class="block" method="post" action="$contextPath$submitEndpoint">  -                <img class="countryimage" src="$contextPath/img/countries/Iceland.png" alt="Italy-eID"/> -                <input type="submit" value="Iceland"> +                <a><img  class="countryimage" src="$contextPath/img/countries/Ireland-EU.png" alt="Ireland-eID" +                        th:attr="src=@{img/countries/Iceland.png},alt=#{gui.countryselection.country.is.logo.alt}"/></a> +                <input type="submit" value="Ireland" th:attr="value=#{gui.countryselection.country.is}"/>                  <input type="hidden" name="selectedCountry" value="IS"> -                <input type="hidden" name="pendingid" value="$pendingReqID"> +                <input  type="hidden" name="pendingid"  value="$pendingid" th:attr="value=${pendingid}" />              </form>              <form class="block" method="post" action="$contextPath$submitEndpoint">  -                <img class="countryimage" src="$contextPath/img/countries/Ireland-EU_.png" alt="Ireland-eID"/> -                <input type="submit" value="Ireland"> +                <a><img class="countryimage" src="$contextPath/img/countries/Ireland-EU.png" alt="Ireland-eID" +                        th:attr="src=@{img/countries/Ireland-EU.png},alt=#{gui.countryselection.country.ir.logo.alt}"/></a> +                <input type="submit" value="Ireland" th:attr="value=#{gui.countryselection.country.ir}">                  <input type="hidden" name="selectedCountry" value="IE"> -                <input type="hidden" name="pendingid" value="$pendingReqID"> +                <input  type="hidden" name="pendingid"  value="$pendingid" th:attr="value=${pendingid}" />              </form>              <form class="block" method="post" action="$contextPath$submitEndpoint">  -                <img class="countryimage" src="$contextPath/img/countries/Italy-EU_.png" alt="Italy-eID"/> -                <input type="submit" value="Italy"> +               <a><img class="countryimage" src="$contextPath/img/countries/Italy-EU.png" alt="Italy-eID" +                        th:attr="src=@{img/countries/Italy-EU.png},alt=#{gui.countryselection.country.it.logo.alt}"/></a> +                <input type="submit" value="Italy" th:attr="value=#{gui.countryselection.country.it}">                  <input type="hidden" name="selectedCountry" value="IT"> -                <input type="hidden" name="pendingid" value="$pendingReqID"> +                <input  type="hidden" name="pendingid"  value="$pendingid" th:attr="value=${pendingid}" />              </form>              <form class="block" method="post" action="$contextPath$submitEndpoint">  -                <img class="countryimage" src="$contextPath/img/countries/Latvia-EU_.png" alt="Latvia-eID"/> -                <input type="submit" value="Latvia"> +                <a><img class="countryimage" src="$contextPath/img/countries/Latvia-EU.png" alt="Latvia-eID" +                        th:attr="src=@{img/countries/Latvia-EU.png},alt=#{gui.countryselection.country.lv.logo.alt}"/></a> +                <input type="submit" value="Latvia" th:attr="value=#{gui.countryselection.country.lv}">                  <input type="hidden" name="selectedCountry" value="LV"> -                <input type="hidden" name="pendingid" value="$pendingReqID">    +                <input  type="hidden" name="pendingid"  value="$pendingid" th:attr="value=${pendingid}" />                 </form>              <form class="block" method="post" action="$contextPath$submitEndpoint">  -                <img class="countryimage" src="$contextPath/img/countries/Lithuania-EU_.png" alt="Latvia-eID"/> -                <input type="submit" value="Lithuania"> +                <a><img class="countryimage" src="$contextPath/img/countries/Luxembourg-EU.png" alt="Luxembourg-eID" +                        th:attr="src=@{img/countries/Luxembourg-EU.png},alt=#{gui.countryselection.country.lu.logo.alt}"/></a> +                <input type="submit" value="Luxembourg" th:attr="value=#{gui.countryselection.country.lu}">                  <input type="hidden" name="selectedCountry" value="LT"> -                <input type="hidden" name="pendingid" value="$pendingReqID">    +                <input  type="hidden" name="pendingid"  value="$pendingid" th:attr="value=${pendingid}" />                 </form>              <form class="block" method="post" action="$contextPath$submitEndpoint">  -                <img class="countryimage" src="$contextPath/img/countries/Luxembourg-EU_.png" alt="Luxembourg-eID"/> -                <input type="submit" value="Luxembourg"> +                <a><img class="countryimage" src="$contextPath/img/countries/Luxembourg-EU.png" alt="Luxembourg-eID" +                        th:attr="src=@{img/countries/Luxembourg-EU.png},alt=#{gui.countryselection.country.lu.logo.alt}"/></a> +                <input type="submit" value="Luxembourg" th:attr="value=#{gui.countryselection.country.lu}">                  <input type="hidden" name="selectedCountry" value="LU"> -                <input type="hidden" name="pendingid" value="$pendingReqID"> +                <input  type="hidden" name="pendingid"  value="$pendingid" th:attr="value=${pendingid}" />              </form>              <form class="block" method="post" action="$contextPath$submitEndpoint">  -                <img class="countryimage" src="$contextPath/img/countries/Malta-EU_.png" alt="Malta-eID"/> -                <input type="submit" value="Malta"> +                <a><img class="countryimage" src="$contextPath/img/countries/Malta-EU.png" alt="Malta-eID" +                        th:attr="src=@{img/countries/Malta-EU.png},alt=#{gui.countryselection.country.mt.logo.alt}"/></a> +                <input type="submit" value="Malta" th:attr="value=#{gui.countryselection.country.mt}">                  <input type="hidden" name="selectedCountry" value="MT"> -                <input type="hidden" name="pendingid" value="$pendingReqID"> +                <input  type="hidden" name="pendingid"  value="$pendingid" th:attr="value=${pendingid}" />              </form>  			<form class="block" method="post" action="$contextPath$submitEndpoint">  -                <img class="countryimage" src="$contextPath/img/countries/TheNetherlands-EU_.png" alt="Netherlands-eID"/>  -                <input type="submit" value="Netherlands"> +                <a><img class="countryimage" src="$contextPath/img/countries/TheNetherlands-EU_.png" alt="Netherlands-eID" +                        th:attr="src=@{img/countries/TheNetherlands-EU_.png},alt=#{gui.countryselection.country.nl.logo.alt}"/></a> +                <input type="submit" value="Netherlands" th:attr="value=#{gui.countryselection.country.nl}">                                  <input type="hidden" name="selectedCountry" value="NL"> -                <input type="hidden" name="pendingid" value="$pendingReqID">    +                <input  type="hidden" name="pendingid"  value="$pendingid" th:attr="value=${pendingid}" />                 </form>              <form class="block" method="post" action="$contextPath$submitEndpoint">  -                <img class="countryimage" src="$contextPath/img/countries/Poland-EU_.png" alt="Poland-eID"/> -                <input type="submit" value="Poland"> -                <input type="hidden" name="selectedCountry" value="PL"> -                <input type="hidden" name="pendingid" value="$pendingReqID"> +                <a><img class="countryimage" src="$contextPath/img/countries/Poland-EU.png" alt="Poland-eID" +                        th:attr="src=@{img/countries/Poland-EU.png},alt=#{gui.countryselection.country.pl.logo.alt}"/></a> +                <input type="submit" value="Poland" th:attr="value=#{gui.countryselection.country.pl}"> +				<input type="hidden" name="selectedCountry" value="PL">                                 +                <input  type="hidden" name="pendingid"  value="$pendingid" th:attr="value=${pendingid}" />              </form>              <form class="block" method="post" action="$contextPath$submitEndpoint">  -                <img class="countryimage" src="$contextPath/img/countries/Portugal-EU_.png" alt="Portugal-eID"/>  -                <input type="submit" value="Portugal"> +               <a><img class="countryimage" src="$contextPath/img/countries/Portugal-EU.png" alt="Portugal-eID" +                        th:attr="src=@{img/countries/Portugal-EU.png},alt=#{gui.countryselection.country.pt.logo.alt}"/></a>  +                <input type="submit" value="Portugal" th:attr="value=#{gui.countryselection.country.pt}">                  <input type="hidden" name="selectedCountry" value="PT"> -                <input type="hidden" name="pendingid" value="$pendingReqID">    +                <input  type="hidden" name="pendingid"  value="$pendingid" th:attr="value=${pendingid}" />                 </form>              <form class="block" method="post" action="$contextPath$submitEndpoint">  -                <img class="countryimage" src="$contextPath/img/countries/Romania-EU_.png" alt="Romania-eID"/>  -                <input type="submit" value="Romania"> +                <a><img class="countryimage" src="$contextPath/img/countries/Romania-EU.png" alt="Romania-eID" +                        th:attr="src=@{img/countries/Romania-EU.png},alt=#{gui.countryselection.country.ro.logo.alt}"/></a>  +                <input type="submit" value="Romania" th:attr="value=#{gui.countryselection.country.ro}">                  <input type="hidden" name="selectedCountry" value="RO"> -                <input type="hidden" name="pendingid" value="$pendingReqID">    +                <input  type="hidden" name="pendingid"  value="$pendingid" th:attr="value=${pendingid}" />                 </form>              <form class="block" method="post" action="$contextPath$submitEndpoint">  -                <img class="countryimage" src="$contextPath/img/countries/Slovakia-EU_.png" alt="Slovakia-eID"/> -                <input type="submit" value="Slovakia"> +                <a><img class="countryimage" src="$contextPath/img/countries/Slovakia-EU.png" alt="Slovakia-eID" +                        th:attr="src=@{img/countries/Slovakia-EU.png},alt=#{gui.countryselection.country.sk.logo.alt}"/></a> +                <input type="submit" value="Slovakia" th:attr="value=#{gui.countryselection.country.sk}">                  <input type="hidden" name="selectedCountry" value="SK"> -                <input type="hidden" name="pendingid" value="$pendingReqID">    +                <input  type="hidden" name="pendingid"  value="$pendingid" th:attr="value=${pendingid}" />                 </form>              <form class="block" method="post" action="$contextPath$submitEndpoint">  -                <img class="countryimage" src="$contextPath/img/countries/Slovenia-EU_.png" alt="Slovenia-eID"/> -                <input type="submit" value="Slovenia"> +                 <a><img class="countryimage" src="$contextPath/img/countries/Slovenia-EU.png" alt="Slovenia-eID" +                        th:attr="src=@{img/countries/Slovenia-EU.png},alt=#{gui.countryselection.country.si.logo.alt}"/></a> +                <input type="submit" value="Slovenia" th:attr="value=#{gui.countryselection.country.si}">                  <input type="hidden" name="selectedCountry" value="SI"> -                <input type="hidden" name="pendingid" value="$pendingReqID">    +                <input  type="hidden" name="pendingid"  value="$pendingid" th:attr="value=${pendingid}" />                 </form>              <form class="block" method="post" action="$contextPath$submitEndpoint">  -                <img class="countryimage" src="$contextPath/img/countries/Spain-EU_.png" alt="Spain-eID"/> -                <input type="submit" value="Spain"> +                 <a><img class="countryimage" src="$contextPath/img/countries/Spain-EU.png" alt="Spain-eID" +                        th:attr="src=@{img/countries/Spain-EU.png},alt=#{gui.countryselection.country.es.logo.alt}"/></a> +                <input type="submit" value="Spain" th:attr="value=#{gui.countryselection.country.es}">                  <input type="hidden" name="selectedCountry" value="ES"> -                <input type="hidden" name="pendingid" value="$pendingReqID">    +                <input  type="hidden" name="pendingid"  value="$pendingid" th:attr="value=${pendingid}" />                 </form>              <form class="block" method="post" action="$contextPath$submitEndpoint">  -                <img class="countryimage" src="$contextPath/img/countries/Sweden-EU_.png" alt="Sweden-eID"/> -                <input type="submit" value="Sweden"> +                <a><img class="countryimage" src="$contextPath/img/countries/Sweden-EU.png" alt="Sweden-eID" +                        th:attr="src=@{img/countries/Sweden-EU.png},alt=#{gui.countryselection.country.se.logo.alt}"/></a> +                <input type="submit" value="Sweden" th:attr="value=#{gui.countryselection.country.se}">                  <input type="hidden" name="selectedCountry" value="SE"> -                <input type="hidden" name="pendingid" value="$pendingReqID">    +                <input  type="hidden" name="pendingid"  value="$pendingid" th:attr="value=${pendingid}" />                 </form>              <form class="block" method="post" action="$contextPath$submitEndpoint">  -                <img class="countryimage" src="$contextPath/img/countries/UnitedKingdom-EU_.png" alt="UnitedKingdom-eID"/> -                <input type="submit" value="United Kingdom"> +                <a><img class="countryimage" src="$contextPath/img/countries/UnitedKingdom-EU.png" alt="UnitedKingdom-eID" +                        th:attr="src=@{img/countries/UnitedKingdom-EU.png},alt=#{gui.countryselection.country.uk.logo.alt}"/></a> +                <input type="submit" value="United Kingdom" th:attr="value=#{gui.countryselection.country.uk}">                  <input type="hidden" name="selectedCountry" value="UK"> -                <input type="hidden" name="pendingid" value="$pendingReqID"> +                <input  type="hidden" name="pendingid"  value="$pendingid" th:attr="value=${pendingid}" />              </form> -            <form class="block" method="post" action="$contextPath$submitEndpoint">  -                <input type="submit" value="Abbrechen/Cancel"> -                <input type="hidden" name="stopAuthProcess" value="true"> -                <input type="hidden" name="pendingid" value="$pendingReqID"> -            </form> +        	<form   class="block" method="post"  action="$contextPath$submitEndpoint" th:attr="action=@{${submitEndpoint}}">  +	          <input  type="submit" class="btn btn-outline-primary btn-block" value="Abbrechen/Cancel" th:attr="value=#{gui.countryselection.cancle}">                                     +    	      <input  type="hidden" name="stopAuthProcess" value="true" > +        	  <input  type="hidden" name="pendingid"  value="$pendingid" th:attr="value=${pendingid}"> +        	</form>          </div>      </div>  </body> diff --git a/connector/src/main/resources/templates/error_message.html b/connector/src/main/resources/templates/error_message.html index fc9b75a1..86f9d29d 100644 --- a/connector/src/main/resources/templates/error_message.html +++ b/connector/src/main/resources/templates/error_message.html @@ -1,36 +1,36 @@ -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> -<head> +<!DOCTYPE HTML> +<html xmlns:th="http://www.thymeleaf.org" +      xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" +      layout:decorator="fragments/base" +      th:with="lang=${#locale.language}" th:lang="${lang}"> +          <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> -  <link rel="stylesheet" href="$contextPath/css/css_error.css" /> +  <link rel="stylesheet" href="$contextPath/css/css_error.css"  th:href="@{/css/css_error.css}" /> -  <title>An error arise ...  </title> +  <title th:text="#{gui.errorpage.msg.title}">An error arise ...  </title>  </head>  <body>    <div id="page">  		<div id="page1" class="case selected-case" role="main">  			<h2 class="OA_header" role="heading">Authentication error arise</h2> -			<!--div id="main"--> -				<!--div id="leftcontent" class="hell" role="application"--> -           -           -           +	          	        <div class="hell" role="application" > -            <p>The authentication stops on account of a process error:</p> -            <br/> -		        <p><b>Error    Code:</b> $errorCode</p>  -		        <p><b>Error Message:</b >$errorMsg</p> +            <h2 class="OA_header" role="heading" th:text="#{gui.errorpage.msg.title}">Error Header</h2> +             +              <div id="alert_area" class="hell" role="application" > +                <p th:text="#{gui.errorpage.msg.information}">Error Information</p> +                  <br/> +		              <p><b th:text="#{gui.errorpage.msg.errorcode}">Code :</b> <span th:text="${errorCode}"></span></p>  +                  <p><b th:text="#{gui.errorpage.msg.errormsg}">Msg   :</b > <span th:text="${#messages.msgWithParams('__${errorCode}__', '__${errorParams}__')}"></span></p> +	            </div>	 +                                                                                                      <!-- errorMsg -->	  	        </div>	 +	        <div th:if="${stacktrace}"> +            <p><b th:text="#{gui.errorpage.msg.stacktrace}">fullError</b> <span th:text="${stacktrace}"></span></p>  +	        </div> -	        #if($stacktrace) -	         <div> -		        <p><b>Stacktrace:</b> $stacktrace</p>  -	         </div>	 -	        #end -           -				<!--/div---> -			<!--/div-->  		</div>  	</div>  </body> diff --git a/connector/src/main/resources/templates/language_selection.html b/connector/src/main/resources/templates/language_selection.html new file mode 100644 index 00000000..a268eb17 --- /dev/null +++ b/connector/src/main/resources/templates/language_selection.html @@ -0,0 +1,15 @@ +<!DOCTYPE html SYSTEM "http://www.thymeleaf.org/dtd/xhtml1-strict-thymeleaf-4.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" +      xmlns:th="http://www.thymeleaf.org"> + +  <body> +   +    <div th:fragment="selectlanguage"> +        <a th:href="@{|${submitEndpoint}?pendingid=${pendingid}|(lang='de')}" th:text="#{gui.general.language.selection.de}">Spache1</a> +        <span>    </span> +        <a th:href="@{|${submitEndpoint}?pendingid=${pendingid}|(lang='en')}" th:text="#{gui.general.language.selection.en}">Spache2</a> +    </div> +   +  </body> +   +</html>
\ No newline at end of file diff --git a/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/MSeIDASNodeConstants.java b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/MSeIDASNodeConstants.java index 3ca82a66..37de50a7 100644 --- a/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/MSeIDASNodeConstants.java +++ b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/MSeIDASNodeConstants.java @@ -39,6 +39,8 @@ public class MSeIDASNodeConstants {  	public static final String PROP_CONFIG_TECHNICALLOG_WRITE_MDS_INTO_TECH_LOG = "technicallog.write.MDS.into.techlog";  	public static final String PROP_CONFIG_WEBCONTENT_STATIC_PATH = "webcontent.static.directory";  +	public static final String PROP_CONFIG_WEBCONTENT_PROPERTIES_PATH = "webcontent.properties"; +	public static final String PROP_CONFIG_WEBCONTENT_TEMPLATES_PATH = "webcontent.templates";  	public static final String PROP_CONFIG_MONITORING_EIDASNODE_METADATAURL = "monitoring.eIDASNode.metadata.url"; @@ -114,4 +116,6 @@ public class MSeIDASNodeConstants {  	public static final List<String> COUNTRY_SELECTION_PARAM_WHITELIST =   			Arrays.asList(REQ_PARAM_SELECTED_COUNTRY, REQ_PARAM_SELECTED_ENVIRONMENT); +	 +	  } diff --git a/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/gui/DefaultGUIBuilderImpl.java b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/gui/DefaultVelocityGUIBuilderImpl.java index f4049267..e618e68d 100644 --- a/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/gui/DefaultGUIBuilderImpl.java +++ b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/gui/DefaultVelocityGUIBuilderImpl.java @@ -28,18 +28,17 @@ import org.slf4j.Logger;  import org.slf4j.LoggerFactory;  import org.springframework.stereotype.Service; -import at.gv.egiz.eaaf.core.api.gui.IGUIFormBuilder;  import at.gv.egiz.eaaf.core.api.gui.IVelocityGUIBuilderConfiguration;  import at.gv.egiz.eaaf.core.exceptions.GUIBuildException;  import at.gv.egiz.eaaf.core.impl.gui.AbstractVelocityGUIFormBuilderImpl; -@Service("DefaultGUIBuilderImpl") -public class DefaultGUIBuilderImpl extends AbstractVelocityGUIFormBuilderImpl implements IGUIFormBuilder { -	private static final Logger log = LoggerFactory.getLogger(DefaultGUIBuilderImpl.class); +@Service("DefaultVelocityGUIBuilderImpl") +public class DefaultVelocityGUIBuilderImpl extends AbstractVelocityGUIFormBuilderImpl { +	private static final Logger log = LoggerFactory.getLogger(DefaultVelocityGUIBuilderImpl.class);  	private static final String CLASSPATH_HTMLTEMPLATES_DIR = "templates/"; -	public DefaultGUIBuilderImpl() throws GUIBuildException { +	public DefaultVelocityGUIBuilderImpl() throws GUIBuildException {  		super();   	} diff --git a/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/gui/SpringMVCGUIFormBuilderImpl.java b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/gui/SpringMVCGUIFormBuilderImpl.java new file mode 100644 index 00000000..84218611 --- /dev/null +++ b/connector_lib/src/main/java/at/asitplus/eidas/specific/connector/gui/SpringMVCGUIFormBuilderImpl.java @@ -0,0 +1,110 @@ +package at.asitplus.eidas.specific.connector.gui; + +import java.util.Locale; +import java.util.Map; + +import javax.annotation.Nullable; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.servlet.LocaleResolver; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.View; +import org.springframework.web.servlet.ViewResolver; + +import at.gv.egiz.eaaf.core.api.gui.IGUIBuilderConfiguration; +import at.gv.egiz.eaaf.core.api.gui.ISpringMVCGUIFormBuilder; +import at.gv.egiz.eaaf.core.exceptions.GUIBuildException; + +public class SpringMVCGUIFormBuilderImpl implements ISpringMVCGUIFormBuilder { +	private static final Logger log = LoggerFactory.getLogger(SpringMVCGUIFormBuilderImpl.class); +	 +	private @Autowired(required=false) ViewResolver[] viewResolvers; +	private @Autowired(required=false) LocaleResolver localeResolver; +	 +	@Override +	public void build(HttpServletRequest httpReq, HttpServletResponse httpResp, IGUIBuilderConfiguration config, +			String loggerName) throws GUIBuildException { +		build(httpReq, httpResp, config, null, loggerName); + +	} + +	@Override +	public void build(HttpServletRequest httpReq, HttpServletResponse httpResp, IGUIBuilderConfiguration config, +			String contentType, String loggerName) throws GUIBuildException { +		try { +			final ModelAndView mav = new ModelAndView(config.getViewName());		 +			if (config.getViewParameters() != null) +				mav.addAllObjects(config.getViewParameters()); +					 +			render(mav, httpReq, httpResp); +			 +		} catch (final Exception e) { +			log.info("Can NOT generate GUI for illustration", e); +			throw new GUIBuildException(e.getMessage(), e); +			 +		} + +	} +	 +	protected void render(ModelAndView mv, HttpServletRequest request, HttpServletResponse response) throws Exception { +		// Determine locale for request and apply it to the response. +		final Locale locale = +				(this.localeResolver != null ? this.localeResolver.resolveLocale(request) : request.getLocale()); +		response.setLocale(locale); + +		View view; +		final String viewName = mv.getViewName(); +		if (viewName != null) { +			// We need to resolve the view name. +			view = resolveViewName(viewName, mv.getModelMap(), locale, request); +			if (view == null) +				throw new ServletException("Could not resolve view with name '" + mv.getViewName() + "' "); +			 +		} else { +			// No need to lookup: the ModelAndView object contains the actual View object. +			view = mv.getView(); +			if (view == null) +				throw new ServletException("ModelAndView [" + mv + "] neither contains a view name nor a " + "View object "); +				 +		} + +		// Delegate to the View object for rendering. +		if (log.isTraceEnabled()) +			log.trace("Rendering view [" + view + "] "); +			 +		try { +			if (mv.getStatus() != null) +				response.setStatus(mv.getStatus().value()); +				 +			view.render(mv.getModelMap(), request, response); +			 +		} catch (final Exception ex) { +			if (log.isDebugEnabled()) +				log.debug("Error rendering view [" + view + "]", ex); +			 +			throw ex; +			 +		} +		 +	} +	 +	protected View resolveViewName(String viewName, @Nullable Map<String, Object> model, +			Locale locale, HttpServletRequest request) throws Exception { +		if (viewResolvers != null) { +			for (final ViewResolver viewResolver : this.viewResolvers) { +				final View view = viewResolver.resolveViewName(viewName, locale); +				if (view != null) +					return view; +				 +			} +		} +		 +		return null; +	} + +} diff --git a/eidas_modules/authmodule-eIDAS-v2/pom.xml b/eidas_modules/authmodule-eIDAS-v2/pom.xml index b3e66c44..ea6f1800 100644 --- a/eidas_modules/authmodule-eIDAS-v2/pom.xml +++ b/eidas_modules/authmodule-eIDAS-v2/pom.xml @@ -12,9 +12,10 @@  	<description>eIDAS module based on eIDAS node reference implementation v2.x</description>  	<properties> -		<eidas-commons.version>2.2.1-egiz</eidas-commons.version> -		<eidas-light-commons.version>2.2.1-egiz</eidas-light-commons.version> -		<eidas-specific-communication-definition.version>2.2.1-egiz</eidas-specific-communication-definition.version> +		<eidas-commons.version>2.3.0</eidas-commons.version> +		<eidas-light-commons.version>2.3.0</eidas-light-commons.version> +		<eidas-specific-communication-definition.version>2.3.0</eidas-specific-communication-definition.version> +		<eidas-jcache-ignite-specific-communication.version>2.3.0</eidas-jcache-ignite-specific-communication.version>  		<org.xerial.sqlite-jdbc.version>3.23.1</org.xerial.sqlite-jdbc.version>  	</properties> @@ -85,6 +86,12 @@  			<version>${eidas-specific-communication-definition.version}</version>  		</dependency> +		<dependency> +			<groupId>eu.eidas</groupId> +			<artifactId>eidas-jcache-ignite-specific-communication</artifactId> +			<version>${eidas-jcache-ignite-specific-communication.version}</version> +		</dependency> +		  		<!--  other third party libs -->  		<dependency>  			<groupId>org.apache.commons</groupId> diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-commons/2.3.0/eidas-commons-2.3.0-sources.jar b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-commons/2.3.0/eidas-commons-2.3.0-sources.jarBinary files differ new file mode 100644 index 00000000..b6e62460 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-commons/2.3.0/eidas-commons-2.3.0-sources.jar diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-commons/2.3.0/eidas-commons-2.3.0.jar b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-commons/2.3.0/eidas-commons-2.3.0.jarBinary files differ new file mode 100644 index 00000000..c48ff7d1 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-commons/2.3.0/eidas-commons-2.3.0.jar diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-commons/2.3.0/eidas-commons-2.3.0.pom b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-commons/2.3.0/eidas-commons-2.3.0.pom new file mode 100644 index 00000000..395564ee --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-commons/2.3.0/eidas-commons-2.3.0.pom @@ -0,0 +1,109 @@ +<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/maven-v4_0_0.xsd"> +    <modelVersion>4.0.0</modelVersion> +    <artifactId>eidas-commons</artifactId> +    <packaging>${mod.packaging.type}</packaging> +    <name>eIDAS Commons</name> +    <description> +        The EIDASCommons library provides beans, Java Interfaces and utility classes to integrate EidasNode and SAML +        Engine. +    </description> +    <parent> +        <groupId>eu.eidas</groupId> +        <artifactId>eidas-parent</artifactId> +        <version>2.3.0</version> +        <relativePath>../EIDAS-Parent/pom.xml</relativePath> +    </parent> +    <dependencies> +        <dependency> +            <groupId>eu.eidas</groupId> +            <artifactId>eidas-light-commons</artifactId> +        </dependency> +        <dependency> +            <groupId>org.slf4j</groupId> +            <artifactId>slf4j-api</artifactId> +        </dependency> +        <dependency> +            <groupId>org.bouncycastle</groupId> +            <artifactId>bcprov-jdk15on</artifactId> +        </dependency> +        <!-- Bouncy Castle --> +        <dependency> +            <groupId>javax.servlet</groupId> +            <artifactId>javax.servlet-api</artifactId> +        </dependency> +        <dependency> +            <groupId>org.owasp.encoder</groupId> +            <artifactId>encoder</artifactId> +        </dependency> +        <dependency> +            <groupId>com.hazelcast</groupId> +            <artifactId>hazelcast</artifactId> +        </dependency> +        <dependency> +            <groupId>com.hazelcast</groupId> +            <artifactId>hazelcast-wm</artifactId> +        </dependency> +        <dependency> +            <groupId>javax.cache</groupId> +            <artifactId>cache-api</artifactId> +            <version>1.1.0</version> +        </dependency> +        <!-- TEST --> +        <dependency> +            <groupId>ch.qos.logback</groupId> +            <artifactId>logback-classic</artifactId> +            <scope>test</scope> +        </dependency> +        <dependency> +            <groupId>aopalliance</groupId> +            <artifactId>aopalliance</artifactId> +            <version>1.0</version> +            <scope>test</scope> +        </dependency> +    </dependencies> + +    <build> +        <resources> +            <resource> +                <directory>${project.basedir}/src/main/resources</directory> +            </resource> +        </resources> +        <plugins> +            <plugin> +                <groupId>org.apache.maven.plugins</groupId> +                <artifactId>maven-source-plugin</artifactId> +            </plugin> +        </plugins> +        <testResources> +            <testResource> +                <directory>src/test/resources</directory> +                <includes> +                    <include>log4j.xml</include> +                    <include>*.properties</include> +                </includes> +            </testResource> +        </testResources> +    </build> +    <profiles> +        <profile> +            <id>metrics</id> +            <build> +                <plugins> +                    <plugin> +                        <groupId>org.codehaus.mojo</groupId> +                        <artifactId>cobertura-maven-plugin</artifactId> +                    </plugin> +                </plugins> +            </build> +        </profile> +    </profiles> +    <reporting> +        <plugins> +            <plugin> +                <groupId>org.codehaus.mojo</groupId> +                <artifactId>cobertura-maven-plugin</artifactId> +            </plugin> +        </plugins> +    </reporting> +</project> diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite-specific-communication/2.3.0/eidas-jcache-ignite-specific-communication-2.3.0.jar b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite-specific-communication/2.3.0/eidas-jcache-ignite-specific-communication-2.3.0.jarBinary files differ new file mode 100644 index 00000000..414e5022 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite-specific-communication/2.3.0/eidas-jcache-ignite-specific-communication-2.3.0.jar diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite-specific-communication/2.3.0/eidas-jcache-ignite-specific-communication-2.3.0.pom b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite-specific-communication/2.3.0/eidas-jcache-ignite-specific-communication-2.3.0.pom new file mode 100644 index 00000000..0ac5ffbb --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite-specific-communication/2.3.0/eidas-jcache-ignite-specific-communication-2.3.0.pom @@ -0,0 +1,61 @@ +<!-- +  ~ Copyright (c) 2018 by European Commission +  ~ +  ~ Licensed under the EUPL, Version 1.2 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: +  ~ https://joinup.ec.europa.eu/page/eupl-text-11-12 +  ~ +  ~ 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. +  --> +<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/maven-v4_0_0.xsd"> +    <modelVersion>4.0.0</modelVersion> +    <artifactId>eidas-jcache-ignite-specific-communication</artifactId> +    <packaging>jar</packaging> +    <name>eIDAS JCache Ignite Specific Communication</name> +    <description>Implements JCache using Ignite with Specific Communication Definition's beans configurations.</description> + +    <parent> +        <groupId>eu.eidas</groupId> +        <artifactId>eidas-parent</artifactId> +        <version>2.3.0</version> +        <relativePath>../EIDAS-Parent/pom.xml</relativePath> +    </parent> + +    <properties> +        <ignite.version>2.7.0</ignite.version> +    </properties> + +    <dependencies> +        <dependency> +            <groupId>eu.eidas</groupId> +            <artifactId>eidas-jcache-ignite</artifactId> +        </dependency> +        <dependency> +            <groupId>org.springframework</groupId> +            <artifactId>spring-context</artifactId> +            <scope>test</scope> +        </dependency> +        <dependency> +            <groupId>org.slf4j</groupId> +            <artifactId>slf4j-simple</artifactId> +            <scope>test</scope> +        </dependency> +        <dependency> +            <groupId>org.apache.ignite</groupId> +            <artifactId>ignite-slf4j</artifactId> +            <version>${ignite.version}</version> +            <scope>test</scope> +        </dependency> +    </dependencies> + +</project> diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite/2.3.0/eidas-jcache-ignite-2.3.0.jar b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite/2.3.0/eidas-jcache-ignite-2.3.0.jarBinary files differ new file mode 100644 index 00000000..f9be7373 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite/2.3.0/eidas-jcache-ignite-2.3.0.jar diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite/2.3.0/eidas-jcache-ignite-2.3.0.pom b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite/2.3.0/eidas-jcache-ignite-2.3.0.pom new file mode 100644 index 00000000..fcf5870c --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-jcache-ignite/2.3.0/eidas-jcache-ignite-2.3.0.pom @@ -0,0 +1,94 @@ +<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/maven-v4_0_0.xsd"> +    <modelVersion>4.0.0</modelVersion> +    <artifactId>eidas-jcache-ignite</artifactId> +    <packaging>jar</packaging> +    <name>eIDAS JCache Ignite</name> +    <description>Implements JCache using Ignite.</description> + +    <parent> +        <groupId>eu.eidas</groupId> +        <artifactId>eidas-parent</artifactId> +        <version>2.3.0</version> +        <relativePath>../EIDAS-Parent/pom.xml</relativePath> +    </parent> + +    <properties> +        <ignite.version>2.7.0</ignite.version> +    </properties> + +    <dependencies> +        <dependency> +            <groupId>eu.eidas</groupId> +            <artifactId>eidas-commons</artifactId> +        </dependency> +        <dependency> +            <groupId>commons-logging</groupId> +            <artifactId>commons-logging</artifactId> +        </dependency> +        <dependency> +            <groupId>org.apache.ignite</groupId> +            <artifactId>ignite-core</artifactId> +            <version>${ignite.version}</version> +            <exclusions> +                <exclusion> +                    <groupId>org.gridgain</groupId> +                    <artifactId>ignite-shmem</artifactId> +                </exclusion> +            </exclusions> +        </dependency> +        <dependency> +            <groupId>org.apache.ignite</groupId> +            <artifactId>ignite-spring</artifactId> +            <version>${ignite.version}</version> +            <exclusions> +                <exclusion> +                    <groupId>org.apache.ignite</groupId> +                    <artifactId>ignite-indexing</artifactId> +                </exclusion> +                <exclusion> +                    <groupId>org.springframework</groupId> +                    <artifactId>spring-core</artifactId> +                </exclusion> +                <exclusion> +                    <groupId>org.springframework</groupId> +                    <artifactId>spring-aop</artifactId> +                </exclusion> +                <exclusion> +                    <groupId>org.springframework</groupId> +                    <artifactId>spring-beans</artifactId> +                </exclusion> +                <exclusion> +                    <groupId>org.springframework</groupId> +                    <artifactId>spring-context</artifactId> +                </exclusion> +                <exclusion> +                    <groupId>org.springframework</groupId> +                    <artifactId>spring-expression</artifactId> +                </exclusion> +                <exclusion> +                    <groupId>org.springframework</groupId> +                    <artifactId>spring-tx</artifactId> +                </exclusion> +                <exclusion> +                    <groupId>org.springframework</groupId> +                    <artifactId>spring-jdbc</artifactId> +                </exclusion> +                <exclusion> +                    <groupId>commons-logging</groupId> +                    <artifactId>commons-logging</artifactId> +                </exclusion> +            </exclusions> +        </dependency> +        <dependency> +            <groupId>javax.servlet</groupId> +            <artifactId>javax.servlet-api</artifactId> +        </dependency> +        <dependency> +            <groupId>org.apache.ignite</groupId> +            <artifactId>ignite-slf4j</artifactId> +            <version>${ignite.version}</version> +        </dependency> +    </dependencies> +</project> diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-light-commons/2.3.0/eidas-light-commons-2.3.0-sources.jar b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-light-commons/2.3.0/eidas-light-commons-2.3.0-sources.jarBinary files differ new file mode 100644 index 00000000..82a3ad74 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-light-commons/2.3.0/eidas-light-commons-2.3.0-sources.jar diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-light-commons/2.3.0/eidas-light-commons-2.3.0.jar b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-light-commons/2.3.0/eidas-light-commons-2.3.0.jarBinary files differ new file mode 100644 index 00000000..845f8ab2 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-light-commons/2.3.0/eidas-light-commons-2.3.0.jar diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-light-commons/2.3.0/eidas-light-commons-2.3.0.pom b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-light-commons/2.3.0/eidas-light-commons-2.3.0.pom new file mode 100644 index 00000000..a9813636 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-light-commons/2.3.0/eidas-light-commons-2.3.0.pom @@ -0,0 +1,55 @@ +<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/maven-v4_0_0.xsd"> +    <modelVersion>4.0.0</modelVersion> +    <artifactId>eidas-light-commons</artifactId> +    <packaging>${mod.packaging.type}</packaging> +    <name>eIDAS Light Commons</name> +    <description> +        The EIDASLightCommons library provides Java Interfaces and utility classes to integrate EIDASCommons and eIDAS Specific Communication Definition. +    </description> +    <parent> +        <groupId>eu.eidas</groupId> +        <artifactId>eidas-parent</artifactId> +        <version>2.3.0</version> +        <relativePath>../EIDAS-Parent/pom.xml</relativePath> +    </parent> +    <dependencies> +        <dependency> +            <groupId>joda-time</groupId> +            <artifactId>joda-time</artifactId> +        </dependency> +        <dependency> +            <groupId>com.ibm.icu</groupId> +            <artifactId>icu4j</artifactId> +        </dependency> +    </dependencies> +    <build> +        <plugins> +            <plugin> +                <groupId>org.apache.maven.plugins</groupId> +                <artifactId>maven-source-plugin</artifactId> +            </plugin> +        </plugins> +    </build> +    <profiles> +        <profile> +            <id>metrics</id> +            <build> +                <plugins> +                    <plugin> +                        <groupId>org.codehaus.mojo</groupId> +                        <artifactId>cobertura-maven-plugin</artifactId> +                    </plugin> +                </plugins> +            </build> +        </profile> +    </profiles> +    <reporting> +        <plugins> +            <plugin> +                <groupId>org.codehaus.mojo</groupId> +                <artifactId>cobertura-maven-plugin</artifactId> +            </plugin> +        </plugins> +    </reporting> +</project> diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-parent/2.3.0/eidas-parent-2.3.0.pom b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-parent/2.3.0/eidas-parent-2.3.0.pom new file mode 100644 index 00000000..fa4680c8 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-parent/2.3.0/eidas-parent-2.3.0.pom @@ -0,0 +1,906 @@ +<!-- +  ~ Copyright (c) 2018 by European Commission +  ~ +  ~ Licensed under the EUPL, Version 1.2 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: +  ~ https://joinup.ec.europa.eu/page/eupl-text-11-12 +  ~ +  ~ 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. +  --> +<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/maven-v4_0_0.xsd"> +    <modelVersion>4.0.0</modelVersion> +    <groupId>eu.eidas</groupId> +    <artifactId>eidas-parent</artifactId> +    <packaging>pom</packaging> +    <name>eIDAS Node Parent</name> +    <version>2.3.0</version> +    <description> +        The EIDAS-Parent provides artifacts versions for Eidas Node components. +    </description> +    <properties> +        <!-- 1) Project properties --> +        <proj.name>EIDASParent</proj.name> +        <proj.name.eidas>EidasNode</proj.name.eidas> +        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> +        <app.packaging.type>war</app.packaging.type> +        <mod.packaging.type>jar</mod.packaging.type> +        <timestamp>${maven.build.timestamp}</timestamp> +        <!-- java version targeted in the compile phase --> +        <java.version>1.8</java.version> + +        <samlspec.version>0.5.2</samlspec.version> +        <samlspecacept.version>0.5.1</samlspecacept.version> + +        <!-- 2) Library dependency versions --> +        <spring.version>4.3.18.RELEASE</spring.version> +        <opensaml.not-yet-commons-ssl.version>0.3.9</opensaml.not-yet-commons-ssl.version> +        <opensaml.openws.version>1.5.5</opensaml.openws.version> +        <opensaml.version>3.3.0</opensaml.version> +        <opensaml.api.version>3.3.0</opensaml.api.version> +        <!--shibboleth.xmlsupport.version>8.0-SNAPSHOT</shibboleth.xmlsupport.version--> +        <shibboleth.xmlsupport.version>7.3.0</shibboleth.xmlsupport.version> +        <servlet.version>3.0.1</servlet.version> +        <jsp.api>2.0</jsp.api> +        <jstl.version>1.1.2</jstl.version> +        <apache.taglibs>1.2.5</apache.taglibs> +        <jasper.version>6.0.53</jasper.version> +        <slf4j.version>1.7.10</slf4j.version> +        <logback.version>1.1.2</logback.version> +        <mockito.version>1.10.19</mockito.version> +        <junit.version>4.12</junit.version> +        <hamcrest.version>1.3</hamcrest.version> +        <commons.codec>1.9</commons.codec> +        <commons.collections>3.2.2</commons.collections> +        <commons.io>2.4</commons.io> +        <commons.lang>2.6</commons.lang> +        <commons.logging>1.1.3</commons.logging> +        <commons.httpclient>4.5.5</commons.httpclient> +        <commons.httpcore>4.4.9</commons.httpcore> +        <commons.lang3>3.1</commons.lang3> +        <hazelcast.version>3.2</hazelcast.version> +        <bouncycastle.version>1.60</bouncycastle.version> +        <owasp.version>1.1.1</owasp.version> +        <owasp.dependency-check.version>1.4.0</owasp.dependency-check.version> +        <joda.time.version>2.6</joda.time.version> +        <log4j.version>1.2.17</log4j.version> +        <log4j.api>2.3</log4j.api> +        <xmlunit.version>1.5</xmlunit.version> +        <bdr.econnector.version>1.2.2</bdr.econnector.version> +        <struts.version>2.3.34</struts.version> +        <!--<icu4j.version>55.1</icu4j.version>--> +        <vaadin.version>7.4.2</vaadin.version> +        <vaadin.plugin.version>${vaadin.version}</vaadin.plugin.version> +        <vaadin-spring.version>1.0.0.beta1</vaadin-spring.version> +        <vaadin4spring.version>0.0.5.RELEASE</vaadin4spring.version> +        <jetty.plugin.version>9.2.3.v20140905</jetty.plugin.version> +        <guava.version>19.0</guava.version> +        <jsr305.version>3.0.1</jsr305.version> +        <icu4j.version>57.1</icu4j.version> + +        <!-- 3) maven plugin versions --> +        <javadoc.plugin.version>2.8.1</javadoc.plugin.version> +        <compile.plugin.version>2.3.2</compile.plugin.version> +        <surefire.plugin.version>2.19.1</surefire.plugin.version> +        <war.plugin.version>3.2.0</war.plugin.version> +        <ear.plugin.version>2.7</ear.plugin.version> +        <resources.plugin.version>2.4</resources.plugin.version> +        <cobertura.plugin.version>2.7</cobertura.plugin.version> +        <remote.resources.plugin.version>1.5</remote.resources.plugin.version> +        <source.plugin.version>2.1.2</source.plugin.version> +        <install.plugin.version>2.5.2</install.plugin.version> +        <clean.plugin.version>2.6.1</clean.plugin.version> +    </properties> + +    <dependencyManagement> +        <dependencies> +            <!-- eIDAS modules --> +            <dependency> +                <groupId>eu.eidas</groupId> +                <artifactId>SimpleProtocol</artifactId> +                <version>0.0.2</version> +            </dependency> +            <dependency> +                <groupId>eu.eidas</groupId> +                <artifactId>eidas-commons</artifactId> +                <version>${project.version}</version> +            </dependency> +            <dependency> +                <groupId>eu.eidas</groupId> +                <artifactId>eidas-light-commons</artifactId> +                <version>${project.version}</version> +            </dependency> +            <dependency> +                <groupId>eu.eidas</groupId> +                <artifactId>eidas-configmodule</artifactId> +                <version>${project.version}</version> +            </dependency> +            <dependency> +                <groupId>eu.eidas</groupId> +                <artifactId>eidas-encryption</artifactId> +                <version>${project.version}</version> +            </dependency> +            <dependency> +                <groupId>eu.eidas</groupId> +                <artifactId>eidas-saml-engine</artifactId> +                <version>${project.version}</version> +            </dependency> +            <dependency> +                <groupId>eu.eidas</groupId> +                <artifactId>eidas-updater</artifactId> +                <version>${project.version}</version> +            </dependency> +            <dependency> +                <groupId>eu.eidas</groupId> +                <artifactId>eidas-saml-metadata</artifactId> +                <version>${project.version}</version> +            </dependency> +            <dependency> +                <groupId>eu.eidas</groupId> +                <artifactId>eidas-specific-connector</artifactId> +                <version>${project.version}</version> +            </dependency> +            <dependency> +                <groupId>eu.eidas</groupId> +                <artifactId>eidas-specific-proxyservice</artifactId> +                <version>${project.version}</version> +            </dependency> +            <dependency> +                <groupId>eu.eidas</groupId> +                <artifactId>eidas-specific-communication-definition</artifactId> +                <version>${project.version}</version> +            </dependency> +            <dependency> +                <groupId>eu.eidas</groupId> +                <artifactId>eidas-jcache-dev</artifactId> +                <version>${project.version}</version> +            </dependency> +            <dependency> +                <groupId>eu.eidas</groupId> +                <artifactId>eidas-jcache-dev-node</artifactId> +                <version>${project.version}</version> +            </dependency> +            <dependency> +                <groupId>eu.eidas</groupId> +                <artifactId>eidas-jcache-dev-specific-communication</artifactId> +                <version>${project.version}</version> +            </dependency> +            <dependency> +                <groupId>eu.eidas</groupId> +                <artifactId>eidas-jcache-ignite</artifactId> +                <version>${project.version}</version> +            </dependency> +            <dependency> +                <groupId>eu.eidas</groupId> +                <artifactId>eidas-jcache-ignite-node</artifactId> +                <version>${project.version}</version> +            </dependency> +            <dependency> +                <groupId>eu.eidas</groupId> +                <artifactId>eidas-jcache-ignite-specific-communication</artifactId> +                <version>${project.version}</version> +            </dependency> +            <dependency> +                <groupId>eu.eidas</groupId> +                <artifactId>eidas-jcache-hazelcast</artifactId> +                <version>${project.version}</version> +            </dependency> +            <dependency> +                <groupId>eu.eidas</groupId> +                <artifactId>eidas-jcache-hazelcast-node</artifactId> +                <version>${project.version}</version> +            </dependency> +            <dependency> +                <groupId>eu.eidas</groupId> +                <artifactId>eidas-jcache-hazelcast-specific-communication</artifactId> +                <version>${project.version}</version> +            </dependency> +            <dependency> +                <groupId>eu.eidas</groupId> +                <artifactId>eidas-node</artifactId> +                <version>${project.version}</version> +            </dependency> +            <dependency> +                <groupId>eu.eidas</groupId> +                <artifactId>eidas-sp</artifactId> +                <version>${project.version}</version> +            </dependency> +            <dependency> +                <groupId>eu.eidas</groupId> +                <artifactId>eidas-idp</artifactId> +                <version>${project.version}</version> +            </dependency> +            <!-- Joda --> +            <dependency> +                <groupId>joda-time</groupId> +                <artifactId>joda-time</artifactId> +                <version>${joda.time.version}</version> +            </dependency> +            <!-- SLF4J logging --> +            <dependency> +                <groupId>org.slf4j</groupId> +                <artifactId>slf4j-api</artifactId> +                <version>${slf4j.version}</version> +            </dependency> +            <dependency> +                <groupId>org.slf4j</groupId> +                <artifactId>jcl-over-slf4j</artifactId> +                <version>${slf4j.version}</version> +            </dependency> +            <dependency> +                <groupId>org.slf4j</groupId> +                <artifactId>log4j-over-slf4j</artifactId> +                <version>${slf4j.version}</version> +            </dependency> +            <dependency> +                <groupId>org.slf4j</groupId> +                <artifactId>jul-to-slf4j</artifactId> +                <version>${slf4j.version}</version> +            </dependency> +            <dependency> +                <groupId>org.slf4j</groupId> +                <artifactId>slf4j-simple</artifactId> +                <version>${slf4j.version}</version> +            </dependency> +            <dependency> +                <groupId>org.slf4j</groupId> +                <artifactId>slf4j-log4j12</artifactId> +                <version>${slf4j.version}</version> +            </dependency> +            <!-- commons-logging --> +            <dependency> +                <groupId>commons-logging</groupId> +                <artifactId>commons-logging</artifactId> +                <version>${commons.logging}</version> +            </dependency> +            <!-- Log4J --> +            <dependency> +                <groupId>log4j</groupId> +                <artifactId>log4j</artifactId> +                <version>${log4j.version}</version> +                <exclusions> +                    <exclusion> +                        <groupId>javax.jms</groupId> +                        <artifactId>jms</artifactId> +                    </exclusion> +                    <exclusion> +                        <groupId>com.sun.jdmk</groupId> +                        <artifactId>jmxtools</artifactId> +                    </exclusion> +                    <exclusion> +                        <groupId>com.sun.jmx</groupId> +                        <artifactId>jmxri</artifactId> +                    </exclusion> +                    <exclusion> +                        <artifactId>mail</artifactId> +                        <groupId>javax.mail</groupId> +                    </exclusion> +                </exclusions> +            </dependency> +            <!-- LogBack --> +            <dependency> +                <groupId>ch.qos.logback</groupId> +                <artifactId>logback-classic</artifactId> +                <version>${logback.version}</version> +                <exclusions> +                    <exclusion> +                        <groupId>org.slf4j</groupId> +                        <artifactId>slf4j-api</artifactId> +                    </exclusion> +                </exclusions> +            </dependency> +            <!-- Bouncy Castle --> +            <dependency> +                <groupId>org.bouncycastle</groupId> +                <artifactId>bcprov-jdk15on</artifactId> +                <version>${bouncycastle.version}</version> +                <!-- Wildfly issue: please keep provided as the default scope for all the components of the project and override it if needed --> +                <scope>provided</scope> +            </dependency> +            <!-- Apache Commons --> +            <dependency> +                <groupId>commons-codec</groupId> +                <artifactId>commons-codec</artifactId> +                <version>${commons.codec}</version> +            </dependency> +            <dependency> +                <groupId>commons-collections</groupId> +                <artifactId>commons-collections</artifactId> +                <version>${commons.collections}</version> +            </dependency> +            <dependency> +                <groupId>org.apache.httpcomponents</groupId> +                <artifactId>httpclient</artifactId> +                <version>${commons.httpclient}</version> +                <exclusions> +                    <exclusion> +                        <groupId>commons-logging</groupId> +                        <artifactId>commons-logging</artifactId> +                    </exclusion> +                    <exclusion> +                        <groupId>commons-codec</groupId> +                        <artifactId>commons-codec</artifactId> +                    </exclusion> +                </exclusions> +            </dependency> +            <dependency> +                <groupId>org.apache.httpcomponents</groupId> +                <artifactId>httpcore</artifactId> +                <version>${commons.httpcore}</version> +                <exclusions> +                    <exclusion> +                        <groupId>commons-logging</groupId> +                        <artifactId>commons-logging</artifactId> +                    </exclusion> +                </exclusions> +            </dependency> +            <dependency> +                <groupId>commons-io</groupId> +                <artifactId>commons-io</artifactId> +                <version>${commons.io}</version> +            </dependency> +            <dependency> +                <groupId>commons-lang</groupId> +                <artifactId>commons-lang</artifactId> +                <version>${commons.lang}</version> +            </dependency> +            <dependency> +                <groupId>org.owasp.encoder</groupId> +                <artifactId>encoder</artifactId> +                <version>${owasp.version}</version> +            </dependency> +            <dependency> +                <groupId>org.owasp.encoder</groupId> +                <artifactId>encoder-jsp</artifactId> +                <version>${owasp.version}</version> +            </dependency> +            <dependency> +                <groupId>com.google.guava</groupId> +                <artifactId>guava</artifactId> +                <version>${guava.version}</version> +            </dependency> +            <dependency> +                <groupId>com.google.code.findbugs</groupId> +                <artifactId>jsr305</artifactId> +                <version>${jsr305.version}</version> +                <scope>provided</scope> +            </dependency> +            <dependency> +                <groupId>org.opensaml</groupId> +                <artifactId>opensaml-core</artifactId> +                <version>${opensaml.version}</version> +                <exclusions> +                    <exclusion> +                        <groupId>commons-codec</groupId> +                        <artifactId>commons-codec</artifactId> +                    </exclusion> +                    <exclusion> +                        <groupId>commons-collections</groupId> +                        <artifactId>commons-collections</artifactId> +                    </exclusion> +                    <exclusion> +                        <groupId>commons-lang</groupId> +                        <artifactId>commons-lang</artifactId> +                    </exclusion> +                    <exclusion> +                        <groupId>commons-logging</groupId> +                        <artifactId>commons-logging</artifactId> +                    </exclusion> +                    <exclusion> +                        <groupId>javax.servlet</groupId> +                        <artifactId>servlet-api</artifactId> +                    </exclusion> +                    <exclusion> +                        <groupId>joda-time</groupId> +                        <artifactId>joda-time</artifactId> +                    </exclusion> +                    <exclusion> +                        <groupId>junit</groupId> +                        <artifactId>junit</artifactId> +                    </exclusion> +                    <exclusion> +                        <groupId>log4j</groupId> +                        <artifactId>log4j</artifactId> +                    </exclusion> +                    <exclusion> +                        <groupId>org.apache.velocity</groupId> +                        <artifactId>velocity</artifactId> +                    </exclusion> +                    <exclusion> +                        <groupId>org.bouncycastle</groupId> +                        <artifactId>bcprov-jdk15on</artifactId> +                    </exclusion> +                    <exclusion> +                        <groupId>org.slf4j</groupId> +                        <artifactId>slf4j-api</artifactId> +                    </exclusion> +                    <exclusion> +                        <groupId>org.slf4j</groupId> +                        <artifactId>jcl-over-slf4j</artifactId> +                    </exclusion> +                    <exclusion> +                        <groupId>org.slf4j</groupId> +                        <artifactId>log4j-over-slf4j</artifactId> +                    </exclusion> +                    <exclusion> +                        <groupId>org.slf4j</groupId> +                        <artifactId>jul-to-slf4j</artifactId> +                    </exclusion> +                    <exclusion> +                        <groupId>org.springframework</groupId> +                        <artifactId>spring-test</artifactId> +                    </exclusion> +                </exclusions> +            </dependency> +            <dependency> +                <groupId>org.opensaml</groupId> +                <artifactId>opensaml-saml-api</artifactId> +                <version>${opensaml.version}</version> +            </dependency> +            <dependency> +                <groupId>org.opensaml</groupId> +                <artifactId>opensaml-saml-impl</artifactId> +                <version>${opensaml.version}</version> +            </dependency> +            <dependency> +                <groupId>net.shibboleth.utilities</groupId> +                <artifactId>java-support</artifactId> +                <version>${shibboleth.xmlsupport.version}</version> +            </dependency> +            <dependency> +                <groupId>org.opensaml</groupId> +                <artifactId>opensaml-xmlsec-api</artifactId> +                <version>${opensaml.version}</version> +            </dependency> +            <dependency> +                <groupId>javax.servlet</groupId> +                <artifactId>javax.servlet-api</artifactId> +                <version>${servlet.version}</version> +                <scope>provided</scope> +            </dependency> +            <!-- JSP --> +            <dependency> +                <groupId>javax.servlet</groupId> +                <artifactId>jsp-api</artifactId> +                <version>${jsp.api}</version> +                <scope>provided</scope> +            </dependency> +            <!-- JSTL --> +            <dependency> +                <groupId>javax.servlet</groupId> +                <artifactId>jstl</artifactId> +                <version>${jstl.version}</version> +            </dependency> +            <dependency> +                <groupId>org.apache.taglibs</groupId> +                <artifactId>taglibs-standard-impl</artifactId> +                <version>${apache.taglibs}</version> +            </dependency> +            <dependency> +                <groupId>taglibs</groupId> +                <artifactId>standard</artifactId> +                <version>${jstl.version}</version> +            </dependency> +            <!-- Spring --> +            <dependency> +                <groupId>org.springframework</groupId> +                <artifactId>spring-core</artifactId> +                <version>${spring.version}</version> +                <exclusions> +                    <exclusion> +                        <groupId>commons-logging</groupId> +                        <artifactId>commons-logging</artifactId> +                    </exclusion> +                </exclusions> +            </dependency> +            <dependency> +                <groupId>org.springframework</groupId> +                <artifactId>spring-beans</artifactId> +                <version>${spring.version}</version> +            </dependency> +            <dependency> +                <groupId>org.springframework</groupId> +                <artifactId>spring-context</artifactId> +                <version>${spring.version}</version> +            </dependency> +            <dependency> +                <groupId>org.springframework</groupId> +                <artifactId>spring-context-support</artifactId> +                <version>${spring.version}</version> +            </dependency> +            <dependency> +                <groupId>org.springframework</groupId> +                <artifactId>spring-web</artifactId> +                <version>${spring.version}</version> +            </dependency> +            <dependency> +                <groupId>xalan</groupId> +                <artifactId>xalan</artifactId> +                <version>${xalan.version}</version> +            </dependency> +            <dependency> +                <groupId>org.opensaml</groupId> +                <artifactId>opensaml-xmlsec-impl</artifactId> +                <version>${opensaml.version}</version> +            </dependency> +            <!-- https://mvnrepository.com/artifact/org.apache.tomcat/jasper-el --> +            <dependency> +                <groupId>org.apache.tomcat</groupId> +                <artifactId>jasper-el</artifactId> +                <version>${jasper.version}</version> +            </dependency> +            <!-- HazelCast --> +            <dependency> +                <groupId>com.hazelcast</groupId> +                <artifactId>hazelcast</artifactId> +                <version>${hazelcast.version}</version> +                <exclusions> +                    <exclusion> +                        <groupId>org.slf4j</groupId> +                        <artifactId>slf4j-log4j12</artifactId> +                    </exclusion> +                    <exclusion> +                        <groupId>log4j</groupId> +                        <artifactId>log4j</artifactId> +                    </exclusion> +                </exclusions> +            </dependency> +            <dependency> +                <groupId>com.hazelcast</groupId> +                <artifactId>hazelcast-wm</artifactId> +                <version>${hazelcast.version}</version> +                <exclusions> +                    <exclusion> +                        <groupId>org.slf4j</groupId> +                        <artifactId>slf4j-log4j12</artifactId> +                    </exclusion> +                    <exclusion> +                        <groupId>log4j</groupId> +                        <artifactId>log4j</artifactId> +                    </exclusion> +                </exclusions> +            </dependency> +            <!-- Struts2 --> +            <dependency> +                <groupId>org.apache.struts</groupId> +                <artifactId>struts2-core</artifactId> +                <version>${struts.version}</version> +            </dependency> +            <!-- ICU --> +            <dependency> +                <groupId>com.ibm.icu</groupId> +                <artifactId>icu4j</artifactId> +                <version>${icu4j.version}</version> +            </dependency> + +            <!-- UNIT TEST Dependencies --> +            <dependency> +                <groupId>junit</groupId> +                <artifactId>junit</artifactId> +                <version>${junit.version}</version> +                <scope>test</scope> +            </dependency> +            <dependency> +                <groupId>org.hamcrest</groupId> +                <artifactId>hamcrest-all</artifactId> +                <version>${hamcrest.version}</version> +                <scope>test</scope> +            </dependency> +            <dependency> +                <groupId>org.mockito</groupId> +                <artifactId>mockito-core</artifactId> +                <version>${mockito.version}</version> +                <scope>test</scope> +            </dependency> +            <dependency> +                <groupId>xmlunit</groupId> +                <artifactId>xmlunit</artifactId> +                <version>${xmlunit.version}</version> +                <scope>test</scope> +            </dependency> +            <dependency> +                <groupId>org.springframework</groupId> +                <artifactId>spring-test</artifactId> +                <version>${spring.version}</version> +                <scope>test</scope> +            </dependency> +        </dependencies> +    </dependencyManagement> + +    <dependencies> +        <!-- Dependencies in common for all modules --> +        <dependency> +            <groupId>commons-collections</groupId> +            <artifactId>commons-collections</artifactId> +        </dependency> +        <dependency> +            <groupId>commons-io</groupId> +            <artifactId>commons-io</artifactId> +        </dependency> +        <dependency> +            <groupId>commons-lang</groupId> +            <artifactId>commons-lang</artifactId> +        </dependency> +        <dependency> +            <groupId>com.google.guava</groupId> +            <artifactId>guava</artifactId> +        </dependency> +        <dependency> +            <groupId>com.google.code.findbugs</groupId> +            <artifactId>jsr305</artifactId> +        </dependency> + +        <!-- UNIT TEST Dependencies in common for all modules --> +        <dependency> +            <groupId>junit</groupId> +            <artifactId>junit</artifactId> +            <exclusions> +                <exclusion> +                    <artifactId>hamcrest-core</artifactId> +                    <groupId>org.hamcrest</groupId> +                </exclusion> +            </exclusions> +        </dependency> +        <dependency> +            <groupId>org.hamcrest</groupId> +            <artifactId>hamcrest-all</artifactId> +        </dependency> +        <dependency> +            <groupId>org.mockito</groupId> +            <artifactId>mockito-core</artifactId> +            <exclusions> +                <exclusion> +                    <artifactId>hamcrest-core</artifactId> +                    <groupId>org.hamcrest</groupId> +                </exclusion> +            </exclusions> +        </dependency> +        <dependency> +            <groupId>xmlunit</groupId> +            <artifactId>xmlunit</artifactId> +        </dependency> +    </dependencies> + +    <build> +        <pluginManagement> +            <plugins> + +                <plugin> +                    <groupId>com.orctom.mojo</groupId> +                    <artifactId>was-maven-plugin</artifactId> +                    <version>1.0.8</version> +                    <configuration> +                        <wasHome>c:/pgm/wlp</wasHome> +                        <applicationName>${proj.name}</applicationName> +                        <host>localhost</host> +                        <server>server01</server> +                        <node>node01</node> +                        <virtualHost>default_host</virtualHost> +                        <verbose>true</verbose> +                    </configuration> +                </plugin> + +                <plugin> +                    <groupId>org.apache.tomcat.maven</groupId> +                    <artifactId>tomcat7-maven-plugin</artifactId> +                    <version>2.2</version> +                    <configuration> +                        <url>http://localhost:8080/manager/text</url> +                        <server>tomcat</server> +                        <path>/${proj.name}</path> +                        <username>admin</username> +                        <password>admin</password> +                    </configuration> +                </plugin> +                <plugin> +                    <groupId>org.apache.maven.plugins</groupId> +                    <artifactId>maven-war-plugin</artifactId> +                    <version>${war.plugin.version}</version> +                    <configuration> +                        <webResources> +                            <resource> +                                <directory>${project.basedir}/src/main/webapp/WEB-INF</directory> +                                <filtering>true</filtering> +                                <targetPath>WEB-INF</targetPath> +                                <includes> +                                    <include>**/web.xml</include> +                                </includes> +                            </resource> +                        </webResources> +                    </configuration> +                </plugin> +                <plugin> +                    <groupId>org.apache.maven.plugins</groupId> +                    <artifactId>maven-source-plugin</artifactId> +                    <version>${source.plugin.version}</version> +                    <executions> +                        <execution> +                            <id>attach-sources</id> +                            <phase>verify</phase> +                            <goals> +                                <goal>jar-no-fork</goal> +                            </goals> +                        </execution> +                    </executions> +                </plugin> +                <plugin> +                    <groupId>org.codehaus.mojo</groupId> +                    <artifactId>cobertura-maven-plugin</artifactId> +                    <version>${cobertura.plugin.version}</version> +                    <configuration> +                        <formats> +                            <format>html</format> +                            <format>xml</format> +                        </formats> +                    </configuration> +                </plugin> +                <plugin> +                    <groupId>org.apache.maven.plugins</groupId> +                    <artifactId>maven-resources-plugin</artifactId> +                    <version>${resources.plugin.version}</version> +                </plugin> +                <!--plugin> +                    <groupId>org.owasp</groupId> +                    <artifactId>dependency-check-maven</artifactId> +                    <version>${owasp.dependency-check.version}</version> +                    <configuration> +                        <failBuildOnCVSS>8</failBuildOnCVSS> +                    </configuration> +                    <executions> +                        <execution> +                            <goals> +                                <goal>check</goal> +                            </goals> +                        </execution> +                    </executions> +                </plugin--> +            </plugins> +        </pluginManagement> +        <plugins> +            <plugin> +                <groupId>org.apache.maven.plugins</groupId> +                <artifactId>maven-compiler-plugin</artifactId> +                <version>${compile.plugin.version}</version> +                <configuration> +                    <source>${java.version}</source> +                    <target>${java.version}</target> +                </configuration> +            </plugin> +            <plugin> +                <groupId>org.apache.maven.plugins</groupId> +                <artifactId>maven-surefire-plugin</artifactId> +                <version>${surefire.plugin.version}</version> +                <configuration> +                    <skip>false</skip> +                </configuration> +            </plugin> +            <plugin> +                <groupId>org.apache.maven.plugins</groupId> +                <artifactId>maven-javadoc-plugin</artifactId> +                <version>${javadoc.plugin.version}</version> +                <configuration> +                    <detectLinks>true</detectLinks> +                </configuration> +            </plugin> +        </plugins> +    </build> +    <modules> +        <module>../EIDAS-Light-Commons</module> +        <module>../EIDAS-Commons</module> +        <module>../EIDAS-ConfigModule</module> +        <module>../EIDAS-Encryption</module> +        <module>../EIDAS-Metadata</module> +        <module>../EIDAS-SpecificCommunicationDefinition</module> +        <!--start of TODO remove when/if EIDAS-Node pom does not depend on eidas-jcache-dev-node artifact to test--> +        <module>../EIDAS-JCache-Dev</module> +        <module>../EIDAS-JCache-Dev-Node</module> +        <!--TODOEND--> +    </modules> +    <profiles> +        <profile> +            <id>NodeOnly</id> +            <activation> +                <activeByDefault>true</activeByDefault> +            </activation> +            <modules> +                <module>../EIDAS-SAMLEngine</module> +                <module>../EIDAS-UPDATER</module> +                <module>../EIDAS-Node</module> +            </modules> +        </profile> +        <profile> +            <id>DemoToolsOnly</id> +            <activation> +                <activeByDefault>false</activeByDefault> +            </activation> +            <modules> +                <module>../EIDAS-SimpleProtocol</module> +                <module>../EIDAS-SpecificProxyService</module> +                <module>../EIDAS-SpecificConnector</module> +                <module>../EIDAS-SP</module> +                <module>../EIDAS-IdP-1.0</module> +            </modules> +        </profile> +        <profile> +            <id>nodeJcacheIgnite</id> +            <activation> +                <activeByDefault>true</activeByDefault> +            </activation> +            <modules> +                <module>../EIDAS-JCache-Ignite</module> +                <module>../EIDAS-JCache-Ignite-Node</module> +            </modules> +        </profile> +        <profile> +            <id>nodeJcacheHazelcast</id> +            <activation> +                <activeByDefault>true</activeByDefault> +            </activation> +            <modules> +                <module>../EIDAS-JCache-Hazelcast</module> +                <module>../EIDAS-JCache-Hazelcast-Node</module> +            </modules> +        </profile> +        <profile> +            <id>nodeJcacheDev</id> +            <activation> +                <activeByDefault>true</activeByDefault> +            </activation> +            <modules> +                <module>../EIDAS-JCache-Dev</module> +                <module>../EIDAS-JCache-Dev-Node</module> +            </modules> +        </profile> +        <profile> +            <id>specificCommunicationJcacheIgnite</id> +            <activation> +                <activeByDefault>true</activeByDefault> +            </activation> +            <modules> +                <module>../EIDAS-JCache-Ignite</module> +                <module>../EIDAS-JCache-Ignite-Specific-Communication</module> +            </modules> +        </profile> +        <profile> +            <id>specificCommunicationJcacheHazelcast</id> +            <activation> +                <activeByDefault>false</activeByDefault> +            </activation> +            <modules> +                <module>../EIDAS-JCache-Hazelcast</module> +                <module>../EIDAS-JCache-Hazelcast-Specific-Communication</module> +            </modules> +        </profile> +        <profile> +            <id>specificCommunicationJcacheDev</id> +            <activation> +                <activeByDefault>false</activeByDefault> +                <property> +                    <name>specificJar</name> +                </property> +            </activation> +            <modules> +                <module>../EIDAS-JCache-Dev</module> +                <module>../EIDAS-JCache-Dev-Specific-Communication</module> +            </modules> +        </profile> +        <profile> +            <id>Config</id> +            <activation> +                <activeByDefault>false</activeByDefault> +            </activation> +            <modules> +                <module>../EIDAS-Config</module> +            </modules> +        </profile> +    </profiles> +</project> diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-specific-communication-definition/2.3.0/eidas-specific-communication-definition-2.3.0-sources.jar b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-specific-communication-definition/2.3.0/eidas-specific-communication-definition-2.3.0-sources.jarBinary files differ new file mode 100644 index 00000000..c3dc8e3d --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-specific-communication-definition/2.3.0/eidas-specific-communication-definition-2.3.0-sources.jar diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-specific-communication-definition/2.3.0/eidas-specific-communication-definition-2.3.0.jar b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-specific-communication-definition/2.3.0/eidas-specific-communication-definition-2.3.0.jarBinary files differ new file mode 100644 index 00000000..9d26bcf5 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-specific-communication-definition/2.3.0/eidas-specific-communication-definition-2.3.0.jar diff --git a/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-specific-communication-definition/2.3.0/eidas-specific-communication-definition-2.3.0.pom b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-specific-communication-definition/2.3.0/eidas-specific-communication-definition-2.3.0.pom new file mode 100644 index 00000000..fbf96ccf --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/repository/eu/eidas/eidas-specific-communication-definition/2.3.0/eidas-specific-communication-definition-2.3.0.pom @@ -0,0 +1,113 @@ +<!-- +  ~ Copyright (c) 2018 by European Commission +  ~ +  ~ Licensed under the EUPL, Version 1.2 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: +  ~ https://joinup.ec.europa.eu/page/eupl-text-11-12 +  ~ +  ~ 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. +  --> +<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/maven-v4_0_0.xsd"> +    <modelVersion>4.0.0</modelVersion> +    <artifactId>eidas-specific-communication-definition</artifactId> +    <packaging>jar</packaging> +    <name>eIDAS Specific Communication Definition</name> +    <description>Defines and implements the communication protocol to be used between specific and node modules. +    </description> +    <parent> +        <groupId>eu.eidas</groupId> +        <artifactId>eidas-parent</artifactId> +        <version>2.3.0</version> +        <relativePath>../EIDAS-Parent/pom.xml</relativePath> +    </parent> +    <dependencies> +        <dependency> +            <groupId>org.springframework</groupId> +            <artifactId>spring-context</artifactId> +        </dependency> +        <dependency> +            <groupId>eu.eidas</groupId> +            <artifactId>eidas-commons</artifactId> +        </dependency> +        <dependency> +            <groupId>javax.servlet</groupId> +            <artifactId>javax.servlet-api</artifactId> +        </dependency> +        <dependency> +            <groupId>org.springframework</groupId> +            <artifactId>spring-test</artifactId> +            <scope>test</scope> +        </dependency> +        <dependency> +            <groupId>commons-logging</groupId> +            <artifactId>commons-logging</artifactId> +            <scope>test</scope> +        </dependency> +        <dependency> +            <groupId>eu.eidas</groupId> +            <artifactId>eidas-jcache-dev</artifactId> +            <scope>test</scope> +        </dependency> +    </dependencies> +    <build> +        <plugins> +            <plugin> +                <groupId>org.apache.maven.plugins</groupId> +                <artifactId>maven-source-plugin</artifactId> +            </plugin> +        </plugins> +    </build> +    <profiles> +        <profile> +            <id>specificCommunicationJcacheIgnite</id> +            <activation> +                <activeByDefault>true</activeByDefault> +            </activation> +            <dependencies> +                <dependency> +                    <groupId>eu.eidas</groupId> +                    <artifactId>eidas-jcache-ignite-specific-communication</artifactId> +                </dependency> +            </dependencies> +        </profile> +        <profile> +            <id>specificCommunicationJcacheHazelcast</id> +            <dependencies> +                <dependency> +                    <groupId>eu.eidas</groupId> +                    <artifactId>eidas-jcache-hazelcast-specific-communication</artifactId> +                </dependency> +            </dependencies> +        </profile> +        <profile> +            <id>specificCommunicationJcacheProvidedImpl</id> +            <activation> +                <activeByDefault>false</activeByDefault> +            </activation> +        </profile> +        <profile> +            <id>specificCommunicationJcacheDev</id> +            <!-- <activation> --> +                <!-- <property> --> +                    <!-- <name>specificJar</name> --> +                <!-- </property> --> +            <!-- </activation> --> +            <dependencies> +                <dependency> +                    <groupId>eu.eidas</groupId> +                    <artifactId>eidas-jcache-dev-specific-communication</artifactId> +                </dependency> +            </dependencies> +        </profile> +    </profiles> +</project> diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/authmodule_eIDASv2/tasks/GenerateAuthnRequestTask.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/authmodule_eIDASv2/tasks/GenerateAuthnRequestTask.java index ea5ec25f..b38c3678 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/authmodule_eIDASv2/tasks/GenerateAuthnRequestTask.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/authmodule_eIDASv2/tasks/GenerateAuthnRequestTask.java @@ -50,7 +50,7 @@ import at.asitplus.eidas.specific.modules.authmodule_eIDASv2.Constants;  import at.asitplus.eidas.specific.modules.authmodule_eIDASv2.exception.eIDASAuthenticationException;  import at.asitplus.eidas.specific.modules.authmodule_eIDASv2.service.eIDASAttributeRegistry;  import at.gv.egiz.eaaf.core.api.data.EAAFConstants; -import at.gv.egiz.eaaf.core.api.gui.IGUIFormBuilder; +import at.gv.egiz.eaaf.core.api.gui.ISpringMVCGUIFormBuilder;  import at.gv.egiz.eaaf.core.api.idp.IConfiguration;  import at.gv.egiz.eaaf.core.api.idp.ISPConfiguration;  import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext; @@ -82,7 +82,7 @@ public class GenerateAuthnRequestTask extends AbstractAuthServletTask {  	@Autowired eIDASAttributeRegistry attrRegistry;  	@Autowired ApplicationContext context;  	@Autowired ITransactionStorage transactionStore;  -	@Autowired IGUIFormBuilder guiBuilder; +	@Autowired ISpringMVCGUIFormBuilder guiBuilder;  	@Override  	public void execute(ExecutionContext executionContext, @@ -181,7 +181,10 @@ public class GenerateAuthnRequestTask extends AbstractAuthServletTask {  			authnRequestBuilder.citizenCountryCode(citizenCountryCode);  			//set relay state -			authnRequestBuilder.relayState(pendingReq.getPendingRequestId()); +			/*TODO: SecureToken PendingRequestId generates a validation exception in eIDASNode because +			 * eIDASNode implements limit on size for RelayState (80characaters) +			 */ +			//authnRequestBuilder.relayState(pendingReq.getPendingRequestId());  			//build and add requested attribute set								  			ImmutableAttributeMap reqAttrMap = translateToEidasAttributes(attrRegistry.getAttributeSetFromConfiguration());						 @@ -242,7 +245,7 @@ public class GenerateAuthnRequestTask extends AbstractAuthServletTask {  				config.putCustomParameter(null, Constants.TEMPLATE_POST_FORWARD_TOKEN_VALUE,  						tokenBase64); -				guiBuilder.build(request, response, config, "BKU-Selection form"); +				guiBuilder.build(request, response, config, "Forward to eIDASNode form");  			} 				 diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/templates/eidas_node_forward.html b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/templates/eidas_node_forward.html index 85e1d18f..186937d7 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/templates/eidas_node_forward.html +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/templates/eidas_node_forward.html @@ -1,7 +1,11 @@  <!DOCTYPE html> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> +<html xmlns:th="http://www.thymeleaf.org" +      xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" +      layout:decorator="fragments/base" +      th:with="lang=${#locale.language}" th:lang="${lang}">  <head> -  <script src="$contextPath/autocommit.js"></script> +  <script src="$contextPath/autocommit.js" +          th:attr="src=@{/autocommit.js}"></script>  </head>  <body>  	<noscript> @@ -14,9 +18,11 @@  	<div id="alert">Your login is being processed. Thank you for  		waiting.</div> -	<form action="${endPoint}" method="post" target="_parent"> +	<form 	action="${endPoint}" method="post" target="_parent" +			th:attr="action=@{${endPoint}}">  		<div> -			<input type="hidden" name="${tokenName}" value="${tokenValue}" /> +			<input type="hidden" name="${tokenName}" value="${tokenValue}" +			 	   th:attr="value=${tokenValue},name=${tokenName}" />  		</div>  		<noscript>  			<div> @@ -19,6 +19,7 @@    		<eaaf-core.version>1.0.8</eaaf-core.version>    		<org.springframework.version>5.1.8.RELEASE</org.springframework.version> +  		<org.thymeleaf-spring5.version>3.0.11.RELEASE</org.thymeleaf-spring5.version>    		<cxf.version>3.3.2</cxf.version>    		<org.apache.commons-lang3.version>3.9</org.apache.commons-lang3.version> @@ -111,6 +112,11 @@    				<version>${org.springframework.version}</version>  			</dependency>  			<dependency> +    			<groupId>org.thymeleaf</groupId> +    			<artifactId>thymeleaf-spring5</artifactId> +    			<version>${org.thymeleaf-spring5.version}</version> +			</dependency>			 +			<dependency>  	    		<groupId>org.slf4j</groupId>  	    		<artifactId>slf4j-api</artifactId>  	    		<version>${org.slf4j.version}</version> | 
