From fa2384985454568439dc286a6a9051fba47322ed Mon Sep 17 00:00:00 2001
From: Thomas Lenz <thomas.lenz@egiz.gv.at>
Date: Mon, 25 Jan 2021 16:30:07 +0100
Subject: add ID Austria communication-module and additional jUnit test It's
 first alpha-version of eIDAS MS-specific Proxy-Service with ID Austria
 authentication

---
 .../builder/AuthenticationDataBuilder.java         |  3 +
 .../src/main/resources/application.properties      | 71 ++++++++++++++++++----
 2 files changed, 63 insertions(+), 11 deletions(-)

(limited to 'connector/src/main')

diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/builder/AuthenticationDataBuilder.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/builder/AuthenticationDataBuilder.java
index 3a93c1b8..2e70893b 100644
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/builder/AuthenticationDataBuilder.java
+++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/builder/AuthenticationDataBuilder.java
@@ -86,6 +86,9 @@ public class AuthenticationDataBuilder extends AbstractAuthenticationDataBuilder
       ((EidAuthenticationData)authData).setEidStatus(authProcessData.isTestIdentity() 
           ? EidIdentityStatusLevelValues.TESTIDENTITY : EidIdentityStatusLevelValues.IDENTITY);
       
+      
+      
+      
     } else {
       throw new RuntimeException("Can not inject PiiTransactionId because AuthData is of unknown type: " 
           + authData.getClass().getName());
diff --git a/connector/src/main/resources/application.properties b/connector/src/main/resources/application.properties
index e7437840..f6d9bb7e 100644
--- a/connector/src/main/resources/application.properties
+++ b/connector/src/main/resources/application.properties
@@ -8,6 +8,7 @@ server.servlet.contextPath=/ms_connector
 app.build.artifactId=ms_connector
 
 
+
 #############################################################################
 ## SpringBoot Admin client
 spring.boot.admin.client.enabled=false
@@ -16,9 +17,9 @@ spring.boot.admin.client.enabled=false
 ## SpringBoot Actuator
 management.endpoints.web.exposure.include=health,info
 
-
 #############################################################################
-## MS-speccific eIDAS-Connector configuration
+## Common parts of MS-speccific eIDAS application configuration
+
 #eidas.ms.context.url.prefix=
 eidas.ms.context.url.request.validation=false
 #eidas.ms.configRootDir=file:/.../config/
@@ -48,6 +49,29 @@ eidas.ms.core.pendingrequestid.digist.algorithm=HmacSHA256
 #eidas.ms.core.pendingrequestid.digist.secret=pendingReqIdSecret
 
 
+## HTTP-client defaults
+eidas.ms.client.http.connection.timeout.socket=15
+eidas.ms.client.http.connection.timeout.connection=15
+eidas.ms.client.http.connection.timeout.request=15
+
+
+## Common PVP2 S-Profile (SAML2) configuration
+#eidas.ms.pvp2.metadata.organisation.name=JUnit
+#eidas.ms.pvp2.metadata.organisation.friendyname=For testing with jUnit
+#eidas.ms.pvp2.metadata.organisation.url=http://junit.test
+#eidas.ms.pvp2.metadata.contact.givenname=Max
+#eidas.ms.pvp2.metadata.contact.surname=Mustermann
+#eidas.ms.pvp2.metadata.contact.email=max@junit.test
+
+##only for advanced config
+eidas.ms.configuration.pvp.scheme.validation=true
+eidas.ms.configuration.pvp.enable.entitycategories=false
+
+
+
+#############################################################################
+## MS-speccific eIDAS-Connector configuration
+
 ## eIDAS Ref. Implementation connector ###
 eidas.ms.auth.eIDAS.node_v2.entityId=ownSpecificConnector
 eidas.ms.auth.eIDAS.eid.testidentity.default=false
@@ -139,13 +163,6 @@ eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.5=LegalName,true
 #eidas.ms.pvp2.key.signing.password=password
 eidas.ms.pvp2.metadata.validity=24
 
-#eidas.ms.pvp2.metadata.organisation.name=JUnit
-#eidas.ms.pvp2.metadata.organisation.friendyname=For testing with jUnit
-#eidas.ms.pvp2.metadata.organisation.url=http://junit.test
-#eidas.ms.pvp2.metadata.contact.givenname=Max
-#eidas.ms.pvp2.metadata.contact.surname=Mustermann
-#eidas.ms.pvp2.metadata.contact.email=max@junit.test
-
 
 ## Service Provider configuration
 #eidas.ms.sp.0.uniqueID=https://demo.egiz.gv.at/demoportal_moaid-2.0/sp/eidas/metadata
@@ -159,5 +176,37 @@ eidas.ms.pvp2.metadata.validity=24
 
 ##only for advanced config
 eidas.ms.configuration.sp.disableRegistrationRequirement=false
-eidas.ms.configuration.pvp.scheme.validation=true
-eidas.ms.configuration.pvp.enable.entitycategories=false
\ No newline at end of file
+
+
+
+#############################################################################
+## MS-speccific eIDAS-Proxy-Service configuration
+
+#### eIDAS ms-specific Proxy-Service configuration
+eidas.ms.auth.eIDAS.node_v2.proxy.entityId=ownSpecificProxy
+#eidas.ms.auth.eIDAS.node_v2.proxy.forward.endpoint=
+
+
+## PVP2 S-Profile communication with ID Austria System 
+# EntityId and optional metadata of ID Austria System
+#eidas.ms.modules.idaustriaauth.idp.entityId=
+#eidas.ms.modules.idaustriaauth.idp.metadataUrl=
+
+# SAML2 client configuration
+eidas.ms.modules.idaustriaauth.keystore.type=jks
+#eidas.ms.modules.idaustriaauth.keystore.name=
+#eidas.ms.modules.idaustriaauth.keystore.path=
+#eidas.ms.modules.idaustriaauth.keystore.password=
+#eidas.ms.modules.idaustriaauth.metadata.sign.alias=
+#eidas.ms.modules.idaustriaauth.metadata.sign.password=
+#eidas.ms.modules.idaustriaauth.request.sign.alias=
+#eidas.ms.modules.idaustriaauth.request.sign.password=
+#eidas.ms.modules.idaustriaauth.response.encryption.alias=
+#eidas.ms.modules.idaustriaauth.response.encryption.password=
+
+# TrustStore to validate SAML2 metadata from ID Austria 
+#eidas.ms.modules.idaustriaauth.truststore.type=jks
+#eidas.ms.modules.idaustriaauth.truststore.name=
+#eidas.ms.modules.idaustriaauth.truststore.path=
+#eidas.ms.modules.idaustriaauth.truststore.password=
+
-- 
cgit v1.2.3


From 1ae77e971928a44dd278eaa473392c35855c4227 Mon Sep 17 00:00:00 2001
From: Thomas Lenz <thomas.lenz@egiz.gv.at>
Date: Tue, 26 Jan 2021 07:40:01 +0100
Subject: update SAML2 IDP elements of MS-specific Connector to current
 snapshot version (1.1.12-SNAPSHOT) of eaaf_module_pvp2_idp

---
 .../resources/specific_eIDAS_connector.beans.xml   | 81 ++++++++++------------
 1 file changed, 35 insertions(+), 46 deletions(-)

(limited to 'connector/src/main')

diff --git a/connector/src/main/resources/specific_eIDAS_connector.beans.xml b/connector/src/main/resources/specific_eIDAS_connector.beans.xml
index 8ff4e565..ecf6d348 100644
--- a/connector/src/main/resources/specific_eIDAS_connector.beans.xml
+++ b/connector/src/main/resources/specific_eIDAS_connector.beans.xml
@@ -14,71 +14,60 @@
   <import resource="common_gui.beans.xml"/>
 
   <bean id="WebResourceConfiguration"
-    class="at.asitplus.eidas.specific.connector.config.StaticResourceConfiguration" />
+        class="at.asitplus.eidas.specific.connector.config.StaticResourceConfiguration" />
 
   <bean id="processEngineSignalController"
-    class="at.asitplus.eidas.specific.connector.controller.ProcessEngineSignalController" />
+        class="at.asitplus.eidas.specific.connector.controller.ProcessEngineSignalController" />
 
   <bean id="saml2MetadataGeneration"
         class="at.asitplus.eidas.specific.connector.health.Saml2MetadataHealthIndicator">
-    <property name="pvpIdpCredentials">
-      <ref bean="PVPEndPointCredentialProvider" />
-    </property>
+    <property name="pvpIdpCredentials" ref="PVPEndPointCredentialProvider" />
   </bean>
 
   <bean id="eidasNodeMetadata"
         class="at.asitplus.eidas.specific.connector.health.EidasNodeMetadataHealthIndicator" />
 
   <bean id="AuthenticationManager"
-    class="at.asitplus.eidas.specific.connector.auth.AuthenticationManager" />
+        class="at.asitplus.eidas.specific.connector.auth.AuthenticationManager" />
 
   <bean id="AuthenticationDataBuilder"
-    class="at.asitplus.eidas.specific.connector.builder.AuthenticationDataBuilder" />
+        class="at.asitplus.eidas.specific.connector.builder.AuthenticationDataBuilder" />
 
   <bean id="PVPEndPointConfiguration"
-    class="at.asitplus.eidas.specific.connector.config.PvpEndPointConfiguration" />
+        class="at.asitplus.eidas.specific.connector.config.PvpEndPointConfiguration" />
 
   <bean id="PVPEndPointCredentialProvider"
-    class="at.asitplus.eidas.specific.connector.provider.PvpEndPointCredentialProvider" />
+        class="at.asitplus.eidas.specific.connector.provider.PvpEndPointCredentialProvider" />
 
   <bean id="PVPMetadataConfigurationFactory"
-    class="at.asitplus.eidas.specific.connector.provider.PvpMetadataConfigurationFactory" />
+        class="at.asitplus.eidas.specific.connector.provider.PvpMetadataConfigurationFactory" />
 
   <bean id="pvp2SProfileEndpoint"
-    class="at.asitplus.eidas.specific.connector.controller.Pvp2SProfileEndpoint">
-    <property name="pvpIdpCredentials">
-      <ref bean="PVPEndPointCredentialProvider" />
-    </property>
-    <property name="metadataProvider">
-      <ref bean="PVPMetadataProvider" />
-    </property>   
+        class="at.asitplus.eidas.specific.connector.controller.Pvp2SProfileEndpoint">
+    <property name="pvpIdpCredentials" ref="PVPEndPointCredentialProvider" />
+    <property name="metadataProvider" ref="PVPMetadataProvider" />
+
   </bean>
 
   <bean id="AuthnRequestValidator"
-    class="at.asitplus.eidas.specific.connector.verification.AuthnRequestValidator" />
+        class="at.asitplus.eidas.specific.connector.verification.AuthnRequestValidator" />
 
-  <bean id="SAMLVerificationEngine"
-    class="at.gv.egiz.eaaf.modules.pvp2.impl.verification.SamlVerificationEngine" />
+  <!-- bean id="SAMLVerificationEngine"
+        class="at.gv.egiz.eaaf.modules.pvp2.impl.verification.SamlVerificationEngine" /-->
 
   <bean id="pvpMetadataService"
-    class="at.gv.egiz.eaaf.modules.pvp2.idp.impl.MetadataAction">
-    <property name="pvpIdpCredentials">
-      <ref bean="PVPEndPointCredentialProvider" />
-    </property>
+        class="at.gv.egiz.eaaf.modules.pvp2.idp.impl.MetadataAction">
+    <property name="pvpIdpCredentials" ref="PVPEndPointCredentialProvider" />
   </bean>
 
   <bean id="PVPAuthenticationRequestAction"
-    class="at.gv.egiz.eaaf.modules.pvp2.idp.impl.AuthenticationAction">
-    <property name="pvpIdpCredentials">
-      <ref bean="PVPEndPointCredentialProvider" />
-    </property>
-    <property name="metadataProvider">
-      <ref bean="PVPMetadataProvider" />
-    </property>     
+        class="at.gv.egiz.eaaf.modules.pvp2.idp.impl.AuthenticationAction">
+    <property name="pvpIdpCredentials" ref="PVPEndPointCredentialProvider" />
+    <property name="metadataProvider" ref="PVPMetadataProvider" />
   </bean>
 
   <bean id="eaafProtocolAuthenticationService"
-    class="at.gv.egiz.eaaf.core.impl.idp.auth.services.ProtocolAuthenticationService">
+        class="at.gv.egiz.eaaf.core.impl.idp.auth.services.ProtocolAuthenticationService">
     <property name="guiBuilder" ref="mvcGUIBuilderImpl" />
   </bean>
 
@@ -86,43 +75,43 @@
         class="at.gv.egiz.eaaf.core.impl.idp.auth.services.DefaultErrorService"/>
 
   <bean id="securePendingRequestIdGeneration"
-    class="at.gv.egiz.eaaf.core.impl.utils.SecurePendingRequestIdGenerationStrategy" />
+        class="at.gv.egiz.eaaf.core.impl.utils.SecurePendingRequestIdGenerationStrategy" />
 
   <bean id="PVPMetadataProvider"
-    class="at.asitplus.eidas.specific.connector.provider.PvpMetadataProvider" />
+        class="at.asitplus.eidas.specific.connector.provider.PvpMetadataProvider" />
 
   <bean id="PVPSubjectNameGenerator"
-    class="at.asitplus.eidas.specific.connector.builder.PvpSubjectNameGenerator" />
+        class="at.asitplus.eidas.specific.connector.builder.PvpSubjectNameGenerator" />
 
   <bean id="LoALevelMapper"
-    class="at.asitplus.eidas.specific.connector.mapper.LoALevelMapper" />
+        class="at.asitplus.eidas.specific.connector.mapper.LoALevelMapper" />
 
   <bean id="GUIBuilderConfigurationFactory"
-    class="at.asitplus.eidas.specific.connector.gui.GuiBuilderConfigurationFactory" />
+        class="at.asitplus.eidas.specific.connector.gui.GuiBuilderConfigurationFactory" />
 
   <bean id="velocityGUIBuilderImpl"
-    class="at.asitplus.eidas.specific.connector.gui.DefaultVelocityGuiBuilderImpl" />
+        class="at.asitplus.eidas.specific.connector.gui.DefaultVelocityGuiBuilderImpl" />
 
   <bean id="mvcGUIBuilderImpl"
-    class="at.gv.egiz.eaaf.core.impl.gui.builder.SpringMvcGuiFormBuilderImpl" />
+        class="at.gv.egiz.eaaf.core.impl.gui.builder.SpringMvcGuiFormBuilderImpl" />
 
   <bean id="StatusMessageProvider"
-    class="at.asitplus.eidas.specific.connector.provider.StatusMessageProvider" />
+        class="at.asitplus.eidas.specific.connector.provider.StatusMessageProvider" />
 
   <bean id="eidasRevisionLogger"
-    class="at.asitplus.eidas.specific.connector.logger.RevisionLogger" />
+        class="at.asitplus.eidas.specific.connector.logger.RevisionLogger" />
 
   <bean id="eidasStatisticLogger"
-    class="at.asitplus.eidas.specific.connector.logger.StatisticLogger" />
+        class="at.asitplus.eidas.specific.connector.logger.StatisticLogger" />
 
 
   <!-- Tasks -->
   <bean id="GenerateCountrySelectionFrameTask"
-    class="at.asitplus.eidas.specific.connector.processes.tasks.GenerateCountrySelectionFrameTask"
-    scope="prototype" />
+        class="at.asitplus.eidas.specific.connector.processes.tasks.GenerateCountrySelectionFrameTask"
+        scope="prototype" />
 
   <bean id="EvaluateCountrySelectionTask"
-    class="at.asitplus.eidas.specific.connector.processes.tasks.EvaluateCountrySelectionTask"
-    scope="prototype" />
+        class="at.asitplus.eidas.specific.connector.processes.tasks.EvaluateCountrySelectionTask"
+        scope="prototype" />
 
 </beans>
\ No newline at end of file
-- 
cgit v1.2.3


From 2daed784e006d449de5b6151f6e109ab2a829749 Mon Sep 17 00:00:00 2001
From: Thomas <>
Date: Tue, 30 Mar 2021 15:08:07 +0200
Subject: add mandate functionality into eIDAS out-going process

---
 .../builder/AuthenticationDataBuilder.java         | 182 ++++++++++++++++++---
 1 file changed, 155 insertions(+), 27 deletions(-)

(limited to 'connector/src/main')

diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/builder/AuthenticationDataBuilder.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/builder/AuthenticationDataBuilder.java
index 2e70893b..629d015e 100644
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/builder/AuthenticationDataBuilder.java
+++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/builder/AuthenticationDataBuilder.java
@@ -24,19 +24,31 @@
 package at.asitplus.eidas.specific.connector.builder;
 
 import java.util.Date;
+import java.util.Optional;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 import org.springframework.stereotype.Service;
 
+import com.google.common.collect.Streams;
+
 import at.asitplus.eidas.specific.connector.MsEidasNodeConstants;
+import at.asitplus.eidas.specific.modules.auth.idaustria.IdAustriaAuthConstants;
+import at.asitplus.eidas.specific.modules.msproxyservice.MsProxyServiceConstants;
 import at.gv.egiz.eaaf.core.api.IRequest;
 import at.gv.egiz.eaaf.core.api.data.ExtendedPvpAttributeDefinitions;
+import at.gv.egiz.eaaf.core.api.data.PvpAttributeDefinitions;
 import at.gv.egiz.eaaf.core.api.data.PvpAttributeDefinitions.EidIdentityStatusLevelValues;
 import at.gv.egiz.eaaf.core.api.idp.IAuthData;
 import at.gv.egiz.eaaf.core.api.idp.ISpConfiguration;
 import at.gv.egiz.eaaf.core.api.idp.auth.data.IAuthProcessDataContainer;
+import at.gv.egiz.eaaf.core.exceptions.EaafAuthenticationException;
 import at.gv.egiz.eaaf.core.exceptions.EaafBuilderException;
 import at.gv.egiz.eaaf.core.exceptions.EaafException;
+import at.gv.egiz.eaaf.core.exceptions.EaafStorageException;
+import at.gv.egiz.eaaf.core.impl.builder.BpkBuilder;
 import at.gv.egiz.eaaf.core.impl.data.Pair;
+import at.gv.egiz.eaaf.core.impl.data.Triple;
 import at.gv.egiz.eaaf.core.impl.idp.AuthenticationData;
 import at.gv.egiz.eaaf.core.impl.idp.EidAuthenticationData;
 import at.gv.egiz.eaaf.core.impl.idp.auth.builder.AbstractAuthenticationDataBuilder;
@@ -46,55 +58,59 @@ import lombok.extern.slf4j.Slf4j;
 @Service("AuthenticationDataBuilder")
 @Slf4j
 public class AuthenticationDataBuilder extends AbstractAuthenticationDataBuilder {
-  
+
+  private static final String ERROR_B11 = "builder.11";
+
   @Override
-  protected IAuthData buildDeprecatedAuthData(IRequest pendingReq) throws EaafException {        
+  protected IAuthData buildDeprecatedAuthData(IRequest pendingReq) throws EaafException {
     final EidAuthProcessDataWrapper authProcessData =
-        pendingReq.getSessionData(EidAuthProcessDataWrapper.class);    
-    EidAuthenticationData authData = new EidAuthenticationData();
-    
-    //set basis infos
+        pendingReq.getSessionData(EidAuthProcessDataWrapper.class);
+    final EidAuthenticationData authData = new EidAuthenticationData();
+
+    // set basis infos
     super.generateDeprecatedBasicAuthData(authData, pendingReq, authProcessData);
-    
+
     // set specific informations
     authData.setSsoSessionValidTo(
         new Date(new Date().getTime() + MsEidasNodeConstants.DEFAULT_PVP_ASSERTION_VALIDITY * 60 * 1000));
-    
-    authData.setEidStatus(authProcessData.isTestIdentity() 
-        ? EidIdentityStatusLevelValues.TESTIDENTITY : EidIdentityStatusLevelValues.IDENTITY);
-    
+
+    authData.setEidStatus(authProcessData.isTestIdentity()
+        ? EidIdentityStatusLevelValues.TESTIDENTITY
+        : EidIdentityStatusLevelValues.IDENTITY);
+
     return authData;
 
   }
 
   @Override
-  protected void buildServiceSpecificAuthenticationData(IAuthData authData, IRequest pendingReq) 
+  protected void buildServiceSpecificAuthenticationData(IAuthData authData, IRequest pendingReq)
       throws EaafException {
     if (authData instanceof EidAuthenticationData) {
-      ((EidAuthenticationData)authData).setGenericData(
-          ExtendedPvpAttributeDefinitions.EID_PII_TRANSACTION_ID_NAME, 
+      ((EidAuthenticationData) authData).setGenericData(
+          ExtendedPvpAttributeDefinitions.EID_PII_TRANSACTION_ID_NAME,
           pendingReq.getUniquePiiTransactionIdentifier());
       log.trace("Inject piiTransactionId: {} into AuthData", pendingReq.getUniquePiiTransactionIdentifier());
-    
+
       // set specific informations
-      ((EidAuthenticationData)authData).setSsoSessionValidTo(
+      ((EidAuthenticationData) authData).setSsoSessionValidTo(
           new Date(new Date().getTime() + MsEidasNodeConstants.DEFAULT_PVP_ASSERTION_VALIDITY * 60 * 1000));
 
-      //set E-ID status-level
+      // set E-ID status-level
       final EidAuthProcessDataWrapper authProcessData =
-          pendingReq.getSessionData(EidAuthProcessDataWrapper.class);        
-      ((EidAuthenticationData)authData).setEidStatus(authProcessData.isTestIdentity() 
-          ? EidIdentityStatusLevelValues.TESTIDENTITY : EidIdentityStatusLevelValues.IDENTITY);
-      
-      
-      
-      
+          pendingReq.getSessionData(EidAuthProcessDataWrapper.class);
+      ((EidAuthenticationData) authData).setEidStatus(authProcessData.isTestIdentity()
+          ? EidIdentityStatusLevelValues.TESTIDENTITY
+          : EidIdentityStatusLevelValues.IDENTITY);
+
+      // handle mandate informations
+      buildMandateInformation((EidAuthenticationData) authData, pendingReq, authProcessData);
+
     } else {
-      throw new RuntimeException("Can not inject PiiTransactionId because AuthData is of unknown type: " 
+      throw new RuntimeException("Can not inject PiiTransactionId because AuthData is of unknown type: "
           + authData.getClass().getName());
-      
+
     }
-        
+
   }
 
   @Override
@@ -123,4 +139,116 @@ public class AuthenticationDataBuilder extends AbstractAuthenticationDataBuilder
 
   }
 
+  private void buildMandateInformation(EidAuthenticationData authData, IRequest pendingReq,
+      EidAuthProcessDataWrapper authProcessData) throws EaafAuthenticationException, EaafBuilderException,
+      EaafStorageException {
+    authData.setUseMandate(authProcessData.isMandateUsed());
+    if (authProcessData.isMandateUsed()) {
+      log.debug("Build mandate-releated authentication data ... ");
+      if (authProcessData.isForeigner()) {
+        buildMandateInformationForEidasIncoming();
+
+      } else {
+        buildMandateInformationForEidasOutgoing(authData, pendingReq, authProcessData);
+
+      }
+
+      // inject mandate information into authdata
+      final Set<String> mandateAttributes = Streams.concat(
+          IdAustriaAuthConstants.DEFAULT_REQUIRED_MANDATE_NAT_PVP_ATTRIBUTES.stream(),
+          IdAustriaAuthConstants.DEFAULT_REQUIRED_MANDATE_JUR_PVP_ATTRIBUTES.stream())
+          .map(el -> el.getFirst())
+          .collect(Collectors.toSet());
+
+      authProcessData.getGenericSessionDataStream()
+          .filter(el -> mandateAttributes.contains(el.getKey()))
+          .forEach(el -> {
+            try {
+              authData.setGenericData(el.getKey(), el.getValue());
+
+            } catch (final EaafStorageException e) {
+              log.error("Can not store attribute: {} into session.", el.getKey(), e);
+              throw new RuntimeException(e);
+
+            }
+          });
+    }
+  }
+
+  private void buildMandateInformationForEidasIncoming() {
+    log.debug("Find eIDAS incoming process. Generated mandate-information for ID-Austria system ... ");
+
+    // TODO: implement IDA specific processing of foreign mandate
+
+  }
+
+  private void buildMandateInformationForEidasOutgoing(EidAuthenticationData authData, IRequest pendingReq,
+      EidAuthProcessDataWrapper authProcessData) throws EaafAuthenticationException, EaafBuilderException,
+      EaafStorageException {
+    log.debug("Find eIDAS outgoing process. Generated mandate-information for other country ... ");
+    if (authProcessData.getGenericDataFromSession(
+        PvpAttributeDefinitions.MANDATE_NAT_PER_BPK_NAME) != null) {
+      final Optional<Triple<String, String, Boolean>> missingAttribute =
+          IdAustriaAuthConstants.DEFAULT_REQUIRED_MANDATE_NAT_PVP_ATTRIBUTES.stream()
+              .filter(el -> authProcessData.getGenericDataFromSession(el.getFirst()) == null)
+              .findFirst();
+      if (missingAttribute.isPresent()) {
+        log.error("ID-Austria response contains not all attributes for nat. person mandator. Missing: {}",
+            missingAttribute.get().getFirst());
+        throw new EaafAuthenticationException(ERROR_B11, new Object[] { "Nat. person mandate" });
+
+      } else {
+        log.trace("Find nat. person mandate. Mandate can be used as it is ");
+        authData.setGenericData(MsProxyServiceConstants.ATTR_EIDAS_NAT_MANDATOR_PERSONAL_IDENTIFIER,
+            extractBpkFromResponse(authProcessData.getGenericDataFromSession(
+                PvpAttributeDefinitions.MANDATE_NAT_PER_BPK_NAME, String.class)));
+
+      }
+
+    } else {
+      final Optional<Triple<String, String, Boolean>> missingAttribute =
+          IdAustriaAuthConstants.DEFAULT_REQUIRED_MANDATE_JUR_PVP_ATTRIBUTES.stream()
+              .filter(el -> authProcessData.getGenericDataFromSession(el.getFirst()) == null)
+              .findFirst();
+      if (missingAttribute.isPresent()) {
+        log.error("ID-Austria response contains not all attributes for legal. person mandator. Missing: {}",
+            missingAttribute.get().getFirst());
+        throw new EaafAuthenticationException(ERROR_B11, new Object[] { "Legal. person mandate" });
+
+      } else {
+        log.trace(
+            "Find jur. person mandate. Generate eIDAS identifier from legal-person sourcePin and type ... ");
+        final String sourcePin = authProcessData.getGenericDataFromSession(
+            PvpAttributeDefinitions.MANDATE_LEG_PER_SOURCE_PIN_NAME, String.class);
+        final String sourcePinType = authProcessData.getGenericDataFromSession(
+            PvpAttributeDefinitions.MANDATE_LEG_PER_SOURCE_PIN_TYPE_NAME, String.class);
+
+        // TODO: check if we should to this in such a way!
+        final Pair<String, String> leagalPersonIdentifier =
+            BpkBuilder.generateAreaSpecificPersonIdentifier(
+                sourcePinType + sourcePin,
+                sourcePinType,
+                pendingReq.getServiceProviderConfiguration().getAreaSpecificTargetIdentifier());
+
+        log.debug("Use legal-person eIDAS identifer: {} from baseId: {} and baseIdType: {}",
+            leagalPersonIdentifier.getFirst(), sourcePin, sourcePinType);
+        authData.setGenericData(MsProxyServiceConstants.ATTR_EIDAS_JUR_MANDATOR_PERSONAL_IDENTIFIER,
+            leagalPersonIdentifier.getFirst());
+
+      }
+    }
+  }
+
+  private String extractBpkFromResponse(String pvpBpkAttrValue) {
+    final String[] split = pvpBpkAttrValue.split(":", 2);
+    if (split.length == 2) {
+      return split[1];
+
+    } else {
+      log.warn("PVP bPK attribute: {} has wrong format. Use it as it is.", pvpBpkAttrValue);
+      return pvpBpkAttrValue;
+
+    }
+  }
+
 }
-- 
cgit v1.2.3


From 47c011420675af6e53f8d9019b28558076ff21ef Mon Sep 17 00:00:00 2001
From: Thomas <>
Date: Thu, 29 Apr 2021 15:15:44 +0200
Subject: change eIDAS LegalPersonId from bPK layout to sourcePinType +
 sourcePin

---
 .../builder/AuthenticationDataBuilder.java         | 25 ++++++++++++----------
 1 file changed, 14 insertions(+), 11 deletions(-)

(limited to 'connector/src/main')

diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/builder/AuthenticationDataBuilder.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/builder/AuthenticationDataBuilder.java
index 629d015e..05704de9 100644
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/builder/AuthenticationDataBuilder.java
+++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/builder/AuthenticationDataBuilder.java
@@ -46,7 +46,6 @@ import at.gv.egiz.eaaf.core.exceptions.EaafAuthenticationException;
 import at.gv.egiz.eaaf.core.exceptions.EaafBuilderException;
 import at.gv.egiz.eaaf.core.exceptions.EaafException;
 import at.gv.egiz.eaaf.core.exceptions.EaafStorageException;
-import at.gv.egiz.eaaf.core.impl.builder.BpkBuilder;
 import at.gv.egiz.eaaf.core.impl.data.Pair;
 import at.gv.egiz.eaaf.core.impl.data.Triple;
 import at.gv.egiz.eaaf.core.impl.idp.AuthenticationData;
@@ -223,17 +222,21 @@ public class AuthenticationDataBuilder extends AbstractAuthenticationDataBuilder
         final String sourcePinType = authProcessData.getGenericDataFromSession(
             PvpAttributeDefinitions.MANDATE_LEG_PER_SOURCE_PIN_TYPE_NAME, String.class);
 
-        // TODO: check if we should to this in such a way!
-        final Pair<String, String> leagalPersonIdentifier =
-            BpkBuilder.generateAreaSpecificPersonIdentifier(
-                sourcePinType + sourcePin,
-                sourcePinType,
-                pendingReq.getServiceProviderConfiguration().getAreaSpecificTargetIdentifier());
-
+        // build leagl-person identifier for eIDAS out-going 
+        final String[] splittedTarget =  
+            pendingReq.getServiceProviderConfiguration().getAreaSpecificTargetIdentifier().split("\\+");       
+        StringBuilder sb = new StringBuilder();
+        sb.append(splittedTarget[1])
+          .append("/")
+          .append(splittedTarget[2])
+          .append("/")
+          .append(sourcePinType)
+          .append("+")
+          .append(sourcePin);
+                
         log.debug("Use legal-person eIDAS identifer: {} from baseId: {} and baseIdType: {}",
-            leagalPersonIdentifier.getFirst(), sourcePin, sourcePinType);
-        authData.setGenericData(MsProxyServiceConstants.ATTR_EIDAS_JUR_MANDATOR_PERSONAL_IDENTIFIER,
-            leagalPersonIdentifier.getFirst());
+            sb.toString(), sourcePin, sourcePinType);
+        authData.setGenericData(MsProxyServiceConstants.ATTR_EIDAS_JUR_MANDATOR_PERSONAL_IDENTIFIER, sb.toString());
 
       }
     }
-- 
cgit v1.2.3


From 4d33e943238ba29eca894a23e27ba3bedc85632c Mon Sep 17 00:00:00 2001
From: Thomas <>
Date: Thu, 29 Apr 2021 15:16:18 +0200
Subject: fix some problemes with new eaaf-components API

---
 connector/src/main/resources/specific_eIDAS_connector.beans.xml | 3 +++
 1 file changed, 3 insertions(+)

(limited to 'connector/src/main')

diff --git a/connector/src/main/resources/specific_eIDAS_connector.beans.xml b/connector/src/main/resources/specific_eIDAS_connector.beans.xml
index ecf6d348..0372edcf 100644
--- a/connector/src/main/resources/specific_eIDAS_connector.beans.xml
+++ b/connector/src/main/resources/specific_eIDAS_connector.beans.xml
@@ -104,6 +104,9 @@
   <bean id="eidasStatisticLogger"
         class="at.asitplus.eidas.specific.connector.logger.StatisticLogger" />
 
+  <bean id="defaultErrorHandler"
+        class="at.gv.egiz.eaaf.core.impl.idp.auth.services.DefaultErrorService"/>
+  
 
   <!-- Tasks -->
   <bean id="GenerateCountrySelectionFrameTask"
-- 
cgit v1.2.3


From 45b0a790ad412e6b7118f1c937b620c66a32fd64 Mon Sep 17 00:00:00 2001
From: Thomas <>
Date: Fri, 14 May 2021 11:50:01 +0200
Subject: add some TODO's for eIDAS Proxy-Service with mandates and fix some
 rebase errors

---
 connector/src/main/resources/specific_eIDAS_connector.beans.xml | 3 ---
 1 file changed, 3 deletions(-)

(limited to 'connector/src/main')

diff --git a/connector/src/main/resources/specific_eIDAS_connector.beans.xml b/connector/src/main/resources/specific_eIDAS_connector.beans.xml
index 0372edcf..34fd088b 100644
--- a/connector/src/main/resources/specific_eIDAS_connector.beans.xml
+++ b/connector/src/main/resources/specific_eIDAS_connector.beans.xml
@@ -71,9 +71,6 @@
     <property name="guiBuilder" ref="mvcGUIBuilderImpl" />
   </bean>
 
-  <bean id="defaultErrorHandler"
-        class="at.gv.egiz.eaaf.core.impl.idp.auth.services.DefaultErrorService"/>
-
   <bean id="securePendingRequestIdGeneration"
         class="at.gv.egiz.eaaf.core.impl.utils.SecurePendingRequestIdGenerationStrategy" />
 
-- 
cgit v1.2.3


From a2eba5646b5b43d549993859849cdcf2baae5eb2 Mon Sep 17 00:00:00 2001
From: Thomas <>
Date: Mon, 24 May 2021 14:49:48 +0200
Subject: select mandate based on eIDAS Proxy-Service request information

---
 connector/src/main/resources/application.properties | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

(limited to 'connector/src/main')

diff --git a/connector/src/main/resources/application.properties b/connector/src/main/resources/application.properties
index f6d9bb7e..e4f30544 100644
--- a/connector/src/main/resources/application.properties
+++ b/connector/src/main/resources/application.properties
@@ -186,6 +186,19 @@ eidas.ms.configuration.sp.disableRegistrationRequirement=false
 eidas.ms.auth.eIDAS.node_v2.proxy.entityId=ownSpecificProxy
 #eidas.ms.auth.eIDAS.node_v2.proxy.forward.endpoint=
 
+# Mandate configuration
+eidas.ms.auth.eIDAS.proxy.mandates.enabled=false
+#eidas.ms.auth.eIDAS.proxy.mandates.profiles.natural.default=
+#eidas.ms.auth.eIDAS.proxy.mandates.profiles.legal.default=
+
+
+## special foreign eIDAS-Connector configuration
+#eidas.ms.connector.0.uniqueID=https://demo.egiz.gv.at/demoportal_moaid-2.0/sp/eidas/metadata
+#eidas.ms.connector.0.countryCode=CC
+#eidas.ms.connector.0.mandates.enabled=false
+#eidas.ms.connector.0.mandates.natural=
+#eidas.ms.connector.0.mandates.legal=
+
 
 ## PVP2 S-Profile communication with ID Austria System 
 # EntityId and optional metadata of ID Austria System
@@ -210,3 +223,5 @@ eidas.ms.modules.idaustriaauth.keystore.type=jks
 #eidas.ms.modules.idaustriaauth.truststore.path=
 #eidas.ms.modules.idaustriaauth.truststore.password=
 
+
+
-- 
cgit v1.2.3


From 94327cc9170639bcbceb2c9acc55351858e050e1 Mon Sep 17 00:00:00 2001
From: Thomas <>
Date: Tue, 25 May 2021 15:17:56 +0200
Subject: add configuration-property to set ID Austria stage of a each eIDAS
 Connector

---
 connector/src/main/resources/application.properties | 1 +
 1 file changed, 1 insertion(+)

(limited to 'connector/src/main')

diff --git a/connector/src/main/resources/application.properties b/connector/src/main/resources/application.properties
index e4f30544..e3bbedd1 100644
--- a/connector/src/main/resources/application.properties
+++ b/connector/src/main/resources/application.properties
@@ -198,6 +198,7 @@ eidas.ms.auth.eIDAS.proxy.mandates.enabled=false
 #eidas.ms.connector.0.mandates.enabled=false
 #eidas.ms.connector.0.mandates.natural=
 #eidas.ms.connector.0.mandates.legal=
+#eidas.ms.connector.0.auth.idaustria.entityId=
 
 
 ## PVP2 S-Profile communication with ID Austria System 
-- 
cgit v1.2.3


From cb2ec2a6deaf92036f3dc9b3dc12a6a9ba6d9099 Mon Sep 17 00:00:00 2001
From: Thomas <>
Date: Fri, 28 May 2021 13:39:30 +0200
Subject: change log level in transaction store

---
 .../specific/connector/storage/EidasCacheTransactionStoreDecorator.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'connector/src/main')

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 1ea5a280..634b3797 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
@@ -171,7 +171,7 @@ public class EidasCacheTransactionStoreDecorator implements ITransactionStorage,
   @Override
   public void remove(String key) {
     if (containsKey(key)) {
-      log.debug("Remove element with key: " + key + " from " + ITransactionStorage.class.getName());
+      log.trace("Remove element with key: " + key + " from " + ITransactionStorage.class.getName());
       boolean delResult = storage.remove(key);
       log.trace("Object: {} removed from cache: {}", key, delResult);
 
-- 
cgit v1.2.3


From 04024b007f29c0261c6b231e71877df60f9703b2 Mon Sep 17 00:00:00 2001
From: Thomas <>
Date: Fri, 25 Jun 2021 10:24:06 +0200
Subject: fix bug in combination with EidasNode v2.5 and DE Middleware

---
 connector/src/main/resources/application.properties | 1 -
 1 file changed, 1 deletion(-)

(limited to 'connector/src/main')

diff --git a/connector/src/main/resources/application.properties b/connector/src/main/resources/application.properties
index e3bbedd1..13216e92 100644
--- a/connector/src/main/resources/application.properties
+++ b/connector/src/main/resources/application.properties
@@ -94,7 +94,6 @@ eidas.ms.auth.eIDAS.node_v2.requesterId.lu.useStaticRequesterForAll=true
 ## set provider name for all public SPs
 eidas.ms.auth.eIDAS.node_v2.workarounds.addAlwaysProviderName=false
 
-
 #eidas.ms.auth.eIDAS.node_v2.requested.nameIdFormat=
 eidas.ms.auth.eIDAS.node_v2.loa.requested.minimum=http://eidas.europa.eu/LoA/high
 
-- 
cgit v1.2.3


From 8bc8fb35e950e2e956e2bdca708c6f4aad380167 Mon Sep 17 00:00:00 2001
From: Thomas <>
Date: Tue, 6 Jul 2021 17:04:12 +0200
Subject: set default NameIDFormat to unspecified to fix problems with DE
 middleware 1.2.x

---
 connector/src/main/resources/application.properties | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

(limited to 'connector/src/main')

diff --git a/connector/src/main/resources/application.properties b/connector/src/main/resources/application.properties
index 13216e92..74e86aed 100644
--- a/connector/src/main/resources/application.properties
+++ b/connector/src/main/resources/application.properties
@@ -94,7 +94,9 @@ eidas.ms.auth.eIDAS.node_v2.requesterId.lu.useStaticRequesterForAll=true
 ## set provider name for all public SPs
 eidas.ms.auth.eIDAS.node_v2.workarounds.addAlwaysProviderName=false
 
-#eidas.ms.auth.eIDAS.node_v2.requested.nameIdFormat=
+## set NameIdPolicy to 'unspecified' as work-around for DE Middleware v1.2.x
+eidas.ms.auth.eIDAS.node_v2.requested.nameIdFormat=urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
+
 eidas.ms.auth.eIDAS.node_v2.loa.requested.minimum=http://eidas.europa.eu/LoA/high
 
 #eidas.ms.auth.eIDAS.szrclient.useTestService=true
-- 
cgit v1.2.3


From 81ec57b676488700c38b6059fe56d905eba0ae6a Mon Sep 17 00:00:00 2001
From: Thomas <>
Date: Wed, 14 Jul 2021 17:08:20 +0200
Subject: update StatusMessageProvider to Spring based form to use message
 properties from modules

---
 .../connector/provider/StatusMessageProvider.java  | 95 ++++++++++++++++------
 1 file changed, 69 insertions(+), 26 deletions(-)

(limited to 'connector/src/main')

diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/provider/StatusMessageProvider.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/provider/StatusMessageProvider.java
index e83d9d49..5565bc63 100644
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/provider/StatusMessageProvider.java
+++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/provider/StatusMessageProvider.java
@@ -31,13 +31,18 @@ import java.util.ResourceBundle;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.context.MessageSource;
+import org.springframework.context.MessageSourceAware;
+import org.springframework.context.NoSuchMessageException;
+import org.springframework.context.i18n.LocaleContextHolder;
 import org.springframework.stereotype.Service;
 
 import at.gv.egiz.eaaf.core.api.IStatusMessenger;
 import at.gv.egiz.eaaf.core.exceptions.EaafException;
+import at.gv.egiz.eaaf.core.impl.logging.LogMessageProviderFactory;
 
 @Service("StatusMessageProvider")
-public class StatusMessageProvider implements IStatusMessenger {
+public class StatusMessageProvider implements IStatusMessenger, MessageSourceAware {
   private static final Logger log = LoggerFactory.getLogger(StatusMessageProvider.class);
 
   private static final String ERROR_MESSAGES_UNAVAILABLE =
@@ -48,49 +53,78 @@ public class StatusMessageProvider implements IStatusMessenger {
       "External error-codes can NOT be load from application. Only internal errorCode: {0} is availabe";
   private static final String ERROR_NO_EXTERNALERROR_CODE =
       "No external error for internal error with number.={0}";
-
-  // internal messanges
-  private static final String DEFAULT_MESSAGE_RESOURCES = "properties/status_messages_en";
-  private static final Locale DEFAULT_MESSAGE_LOCALES = new Locale("en", "GB");
-  private ResourceBundle messages;
-
+  private static final String MSG_WARN_NO_SOURCE = "MessageCode: {} is NOT SET for locale: {}";
+  private static final String MSG_INFO = "Use locale: {} as default";
+  
   // external error codes
   private static final String DEFAULT_EXTERNALERROR_RESOURCES = "properties/external_statuscodes_map";
   private static final Locale DEFAULT_EXTERNALERROR_LOCALES = new Locale("en", "GB");
   private ResourceBundle externalError = null;
 
+  //internal messanges
+  private MessageSource messageSource;
+
   @Override
-  public String getMessageWithoutDefault(String messageId, Object[] parameters) {
-    // initialize messages
-    if (messages == null) {
-      this.messages = ResourceBundle.getBundle(
-          DEFAULT_MESSAGE_RESOURCES,
-          DEFAULT_MESSAGE_LOCALES);
+  public String getMessageWithoutDefault(final String messageId, final Object[] parameters) {
+    if (messageSource == null) {
+      return null;
 
-    }
+    } else {
+      try {
+        final Locale locale = LocaleContextHolder.getLocale();
+        return messageSource.getMessage(messageId, parameters, locale);
 
-    // create the message
-    if (messages == null) {
-      return MessageFormat.format(ERROR_MESSAGES_UNAVAILABLE, new Object[] { messageId });
+      } catch (final NoSuchMessageException e) {
+        log.info(MSG_WARN_NO_SOURCE, messageId, LocaleContextHolder.getLocale());
+        log.debug(MSG_INFO, Locale.ENGLISH);
 
-    } else {
-      final String rawMessage = messages.getString(messageId);
-      return MessageFormat.format(rawMessage, parameters);
+        try {
+          return messageSource.getMessage(messageId, parameters, Locale.ENGLISH);
+
+        } catch (final NoSuchMessageException e2) {
+          log.info(MSG_WARN_NO_SOURCE, messageId, Locale.ENGLISH);
+
+        }
 
+      } catch (final MissingResourceException e2) {
+        log.warn("No message source", e2);
+
+      }
     }
+
+    return null;
+
   }
 
   @Override
-  public String getMessage(String messageId, Object[] parameters) {
-    try {
-      return getMessageWithoutDefault(messageId, parameters);
+  public String getMessage(final String messageId, final Object[] parameters) {
+    if (messageSource == null) {
+      return MessageFormat.format(ERROR_MESSAGES_UNAVAILABLE, new Object[]{messageId});
+
+    } else {
+      try {
+        final Locale locale = LocaleContextHolder.getLocale();
+        return messageSource.getMessage(messageId, parameters, locale);
+
+      } catch (final NoSuchMessageException e) {
+        log.info(MSG_WARN_NO_SOURCE, messageId, LocaleContextHolder.getLocale());
+        log.debug(MSG_INFO, Locale.ENGLISH);
+
+        try {
+          return messageSource.getMessage(messageId, parameters, Locale.ENGLISH);
+
+        } catch (final NoSuchMessageException e2) {
+          return MessageFormat.format(ERROR_NO_MESSAGE, new Object[]{messageId});
+
+        }
 
-    } catch (final MissingResourceException e2) {
-      return MessageFormat.format(ERROR_NO_MESSAGE, new Object[] { messageId });
+      } catch (final MissingResourceException e2) {
+        return MessageFormat.format(ERROR_NO_MESSAGE, new Object[]{messageId});
 
+      }
     }
   }
-
+  
   @Override
   public String getResponseErrorCode(Throwable throwable) {
     String errorCode = IStatusMessenger.CODES_EXTERNAL_ERROR_GENERIC;
@@ -136,4 +170,13 @@ public class StatusMessageProvider implements IStatusMessenger {
     }
   }
 
+  @Override
+  public void setMessageSource(MessageSource messageSource) {
+    this.messageSource = messageSource;
+
+    log.info("Injecting 'StatusMessanger' into 'LogMessageProviderFactory'");
+    LogMessageProviderFactory.setStatusMessager(this);
+    
+  }
+
 }
-- 
cgit v1.2.3


From 300bd1b44f521a2b33c259be1f8d21eba58c1a31 Mon Sep 17 00:00:00 2001
From: Thomas <>
Date: Tue, 8 Mar 2022 13:41:31 +0100
Subject: refactor(core): split 'ms-connector' WebApp into 'core' and
 'ms-connector' to reuse some code for 'ms-proxy' WebApp

---
 .../MsSpecificEidasNodeSpringResourceProvider.java |  10 +-
 .../connector/SpringContextCloseHandler.java       | 170 --------------
 .../attributes/AuthBlockAttributeBuilder.java      |   4 +-
 .../attributes/EidasBindAttributeBuilder.java      |  13 +-
 .../connector/auth/AuthenticationManager.java      |  60 -----
 .../builder/AuthenticationDataBuilder.java         | 257 ---------------------
 .../connector/config/PvpEndPointConfiguration.java |   2 +-
 .../connector/config/PvpMetadataConfiguration.java |   2 +-
 .../config/StaticResourceConfiguration.java        | 220 ------------------
 .../controller/ProcessEngineSignalController.java  |   2 +-
 .../connector/controller/Pvp2SProfileEndpoint.java |   2 +-
 .../health/EidasNodeMetadataHealthIndicator.java   |  69 ------
 .../health/IgniteClusterHealthIndicator.java       |  52 -----
 .../WebFrontEndSecurityInterceptor.java            |  90 --------
 .../specific/connector/logger/RevisionLogger.java  | 110 ---------
 .../specific/connector/logger/StatisticLogger.java | 141 -----------
 .../specific/connector/mapper/LoALevelMapper.java  |  60 -----
 .../processes/CountrySelectionProcessImpl.java     |   2 +-
 .../tasks/EvaluateCountrySelectionTask.java        |   2 +-
 .../tasks/GenerateCountrySelectionFrameTask.java   |   6 +-
 .../provider/PvpEndPointCredentialProvider.java    |   2 +-
 .../connector/provider/PvpMetadataProvider.java    |   2 +-
 .../connector/provider/StatusMessageProvider.java  | 182 ---------------
 .../connector/storage/CacheWithEidasBackend.java   |  35 ---
 .../EidasCacheTransactionStoreDecorator.java       | 180 ---------------
 .../storage/SimpleInMemoryTransactionStorage.java  | 169 --------------
 .../connector/storage/TransactionStoreElement.java |  70 ------
 .../verification/AuthnRequestValidator.java        |   4 +-
 .../src/main/resources/applicationContext.xml      |  19 +-
 .../resources/specific_eIDAS_connector.beans.xml   |  45 +---
 .../specific_eIDAS_connector.storage.beans.xml     |  52 -----
 31 files changed, 31 insertions(+), 2003 deletions(-)
 delete mode 100644 connector/src/main/java/at/asitplus/eidas/specific/connector/SpringContextCloseHandler.java
 delete mode 100644 connector/src/main/java/at/asitplus/eidas/specific/connector/auth/AuthenticationManager.java
 delete mode 100644 connector/src/main/java/at/asitplus/eidas/specific/connector/builder/AuthenticationDataBuilder.java
 delete mode 100644 connector/src/main/java/at/asitplus/eidas/specific/connector/config/StaticResourceConfiguration.java
 delete mode 100644 connector/src/main/java/at/asitplus/eidas/specific/connector/health/EidasNodeMetadataHealthIndicator.java
 delete mode 100644 connector/src/main/java/at/asitplus/eidas/specific/connector/health/IgniteClusterHealthIndicator.java
 delete mode 100644 connector/src/main/java/at/asitplus/eidas/specific/connector/interceptor/WebFrontEndSecurityInterceptor.java
 delete mode 100644 connector/src/main/java/at/asitplus/eidas/specific/connector/logger/RevisionLogger.java
 delete mode 100644 connector/src/main/java/at/asitplus/eidas/specific/connector/logger/StatisticLogger.java
 delete mode 100644 connector/src/main/java/at/asitplus/eidas/specific/connector/mapper/LoALevelMapper.java
 delete mode 100644 connector/src/main/java/at/asitplus/eidas/specific/connector/provider/StatusMessageProvider.java
 delete mode 100644 connector/src/main/java/at/asitplus/eidas/specific/connector/storage/CacheWithEidasBackend.java
 delete mode 100644 connector/src/main/java/at/asitplus/eidas/specific/connector/storage/EidasCacheTransactionStoreDecorator.java
 delete mode 100644 connector/src/main/java/at/asitplus/eidas/specific/connector/storage/SimpleInMemoryTransactionStorage.java
 delete mode 100644 connector/src/main/java/at/asitplus/eidas/specific/connector/storage/TransactionStoreElement.java
 delete mode 100644 connector/src/main/resources/specific_eIDAS_connector.storage.beans.xml

(limited to 'connector/src/main')

diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/MsSpecificEidasNodeSpringResourceProvider.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/MsSpecificEidasNodeSpringResourceProvider.java
index 40ed283b..45e5c7d4 100644
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/MsSpecificEidasNodeSpringResourceProvider.java
+++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/MsSpecificEidasNodeSpringResourceProvider.java
@@ -33,14 +33,12 @@ public class MsSpecificEidasNodeSpringResourceProvider implements SpringResource
   @Override
   public Resource[] getResourcesToLoad() {
     final ClassPathResource generic =
-        new ClassPathResource("/applicationContext.xml", MsSpecificEidasNodeSpringResourceProvider.class);
-    
+        new ClassPathResource("/applicationContext.xml", MsSpecificEidasNodeSpringResourceProvider.class);   
     final ClassPathResource msEidasNode = new ClassPathResource(
         "/specific_eIDAS_connector.beans.xml", MsSpecificEidasNodeSpringResourceProvider.class);
+        
+    return new Resource[] { generic, msEidasNode};
     
-    final ClassPathResource msEidasNodeStorage = new ClassPathResource(
-        "/specific_eIDAS_connector.storage.beans.xml", MsSpecificEidasNodeSpringResourceProvider.class);
-    return new Resource[] { generic, msEidasNode, msEidasNodeStorage };
   }
 
   @Override
@@ -50,7 +48,7 @@ public class MsSpecificEidasNodeSpringResourceProvider implements SpringResource
 
   @Override
   public String getName() {
-    return "MS-specific eIDAS Node SpringResourceProvider";
+    return "MS-specific eIDAS-Connector SpringResourceProvider";
   }
 
 }
diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/SpringContextCloseHandler.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/SpringContextCloseHandler.java
deleted file mode 100644
index e884b5c6..00000000
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/SpringContextCloseHandler.java
+++ /dev/null
@@ -1,170 +0,0 @@
-package at.asitplus.eidas.specific.connector;
-
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import org.slf4j.Logger;
-import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.config.BeanPostProcessor;
-import org.springframework.context.ApplicationContext;
-import org.springframework.context.ApplicationContextAware;
-import org.springframework.context.ApplicationListener;
-import org.springframework.context.event.ContextClosedEvent;
-import org.springframework.context.event.EventListener;
-import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
-import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
-
-import at.gv.egiz.components.spring.api.IDestroyableObject;
-import eu.eidas.auth.cache.IgniteInstanceInitializerSpecificCommunication;
-
-/**
- * SpringContext CloseHandler.
- *
- * @author tlenz
- *
- */
-
-public class SpringContextCloseHandler
-    implements ApplicationListener<ContextClosedEvent>, ApplicationContextAware, BeanPostProcessor {
-
-  private static final Logger log =
-      org.slf4j.LoggerFactory.getLogger(SpringContextCloseHandler.class);
-
-  private ApplicationContext context;
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.springframework.context.ApplicationListener#onApplicationEvent(org.
-   * springframework.context. ApplicationEvent)
-   */
-  @Override
-  @EventListener
-  public void onApplicationEvent(final ContextClosedEvent arg0) {
-    log.info("MS-specific eIDAS-Node shutdown process started ...");
-
-    try {
-      log.debug("CleanUp objects with implements the IDestroyable interface ... ");
-      final Map<String, IDestroyableObject> objectsToDestroy =
-          context.getBeansOfType(IDestroyableObject.class);
-      internalIDestroyableObject(objectsToDestroy);
-      log.info("Object cleanUp complete");
-
-      log.debug("Stopping Spring Thread-Pools ... ");
-      // shut-down task schedulers
-      final Map<String, ThreadPoolTaskScheduler> schedulers =
-          context.getBeansOfType(ThreadPoolTaskScheduler.class);
-      internalThreadPoolTaskScheduler(schedulers);
-
-      // shut-down task executors
-      final Map<String, ThreadPoolTaskExecutor> executers =
-          context.getBeansOfType(ThreadPoolTaskExecutor.class);
-      internalThreadPoolTaskExecutor(executers);
-      log.debug("Spring Thread-Pools stopped");
-      
-      
-      //clean-up eIDAS node
-      Map<String, IgniteInstanceInitializerSpecificCommunication> nodeIgnite = 
-          context.getBeansOfType(IgniteInstanceInitializerSpecificCommunication.class);
-      log.info("Find #{} Apache Ignite instances from eIDAS Ref. impl.", nodeIgnite.size());
-      for (Entry<String, IgniteInstanceInitializerSpecificCommunication> el : nodeIgnite.entrySet()) {
-        if (el.getValue().getInstance() != null) {
-          el.getValue().getInstance().close();
-          el.getValue().destroyInstance();
-          log.debug("Shutdown Apache-Ignite: {}", el.getKey());
-          
-        }        
-      }
-            
-      log.info("MS-specific eIDAS-Node shutdown process finished");
-
-    } catch (final Exception e) {
-      log.warn("MS-specific eIDAS-Node shutdown process has an error.", e);
-
-    }
-
-  }
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.springframework.beans.factory.config.BeanPostProcessor#
-   * postProcessAfterInitialization(java. lang.Object, java.lang.String)
-   */
-  @Override
-  public Object postProcessAfterInitialization(final Object arg0, final String arg1)
-      throws BeansException {
-    if (arg0 instanceof ThreadPoolTaskScheduler) {
-      ((ThreadPoolTaskScheduler) arg0).setWaitForTasksToCompleteOnShutdown(true);
-    }
-    if (arg0 instanceof ThreadPoolTaskExecutor) {
-      ((ThreadPoolTaskExecutor) arg0).setWaitForTasksToCompleteOnShutdown(true);
-    }
-    return arg0;
-
-  }
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see org.springframework.beans.factory.config.BeanPostProcessor#
-   * postProcessBeforeInitialization(java .lang.Object, java.lang.String)
-   */
-  @Override
-  public Object postProcessBeforeInitialization(final Object arg0, final String arg1)
-      throws BeansException {
-    return arg0;
-
-  }
-
-  /*
-   * (non-Javadoc)
-   *
-   * @see
-   * org.springframework.context.ApplicationContextAware#setApplicationContext(org
-   * .springframework. context.ApplicationContext)
-   */
-  @Override
-  public void setApplicationContext(final ApplicationContext arg0) throws BeansException {
-    this.context = arg0;
-
-  }
-
-  private void internalThreadPoolTaskExecutor(final Map<String, ThreadPoolTaskExecutor> executers) {
-    for (final ThreadPoolTaskExecutor executor : executers.values()) {
-      executor.shutdown();
-      log.debug("Executer {} with active {} work has killed", executor.getThreadNamePrefix(),
-          executor.getActiveCount());
-
-    }
-
-  }
-
-  // Not required at the moment
-  private void internalThreadPoolTaskScheduler(
-      final Map<String, ThreadPoolTaskScheduler> schedulers) {
-    log.trace("Stopping #{} task-schedulers", schedulers.size());
-    
-  }
-
-  private void internalIDestroyableObject(final Map<String, IDestroyableObject> objectsToDestroy) {
-    if (objectsToDestroy != null) {
-      final Iterator<Entry<String, IDestroyableObject>> interator =
-          objectsToDestroy.entrySet().iterator();
-      while (interator.hasNext()) {
-        final Entry<String, IDestroyableObject> object = interator.next();
-        try {
-          object.getValue().fullyDestroy();
-          log.debug("Object with ID: {} is destroyed", object.getKey());
-
-        } catch (final Exception e) {
-          log.warn("Destroing object with ID: {} FAILED!", object.getKey(), null, e);
-
-        }
-      }
-    }
-
-  }
-
-}
diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/attributes/AuthBlockAttributeBuilder.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/attributes/AuthBlockAttributeBuilder.java
index 1833f377..17eb0704 100644
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/attributes/AuthBlockAttributeBuilder.java
+++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/attributes/AuthBlockAttributeBuilder.java
@@ -27,7 +27,7 @@ import java.util.Base64;
 
 import org.apache.commons.lang3.StringUtils;
 
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;
+import at.asitplus.eidas.specific.core.MsEidasNodeConstants;
 import at.gv.egiz.eaaf.core.api.idp.IAttributeGenerator;
 import at.gv.egiz.eaaf.core.api.idp.IAuthData;
 import at.gv.egiz.eaaf.core.api.idp.IPvpAttributeBuilder;
@@ -49,7 +49,7 @@ public class AuthBlockAttributeBuilder implements IPvpAttributeBuilder {
   public <ATT> ATT build(final ISpConfiguration oaParam, final IAuthData authData,
                          final IAttributeGenerator<ATT> g) throws AttributeBuilderException {
 
-    String authBlock = authData.getGenericData(Constants.SZR_AUTHBLOCK, String.class);
+    String authBlock = authData.getGenericData(MsEidasNodeConstants.AUTH_DATA_SZR_AUTHBLOCK, String.class);
     if (StringUtils.isNotEmpty(authBlock)) {
       return g.buildStringAttribute(EID_AUTHBLOCK_SIGNED_FRIENDLY_NAME, EID_AUTHBLOCK_SIGNED_NAME, 
           Base64.getEncoder().encodeToString(authBlock.getBytes(StandardCharsets.UTF_8)));
diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/attributes/EidasBindAttributeBuilder.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/attributes/EidasBindAttributeBuilder.java
index a4fe8c6c..18eb74f8 100644
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/attributes/EidasBindAttributeBuilder.java
+++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/attributes/EidasBindAttributeBuilder.java
@@ -19,7 +19,12 @@
 
 package at.asitplus.eidas.specific.connector.attributes;
 
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;
+import static at.gv.egiz.eaaf.core.api.data.ExtendedPvpAttributeDefinitions.EID_EIDBIND_FRIENDLY_NAME;
+import static at.gv.egiz.eaaf.core.api.data.ExtendedPvpAttributeDefinitions.EID_EIDBIND_NAME;
+
+import org.apache.commons.lang3.StringUtils;
+
+import at.asitplus.eidas.specific.core.MsEidasNodeConstants;
 import at.gv.egiz.eaaf.core.api.idp.IAttributeGenerator;
 import at.gv.egiz.eaaf.core.api.idp.IAuthData;
 import at.gv.egiz.eaaf.core.api.idp.IPvpAttributeBuilder;
@@ -27,10 +32,6 @@ import at.gv.egiz.eaaf.core.api.idp.ISpConfiguration;
 import at.gv.egiz.eaaf.core.exceptions.AttributeBuilderException;
 import at.gv.egiz.eaaf.core.exceptions.UnavailableAttributeException;
 import at.gv.egiz.eaaf.core.impl.idp.builder.attributes.PvpMetadata;
-import org.apache.commons.lang3.StringUtils;
-
-import static at.gv.egiz.eaaf.core.api.data.ExtendedPvpAttributeDefinitions.EID_EIDBIND_FRIENDLY_NAME;
-import static at.gv.egiz.eaaf.core.api.data.ExtendedPvpAttributeDefinitions.EID_EIDBIND_NAME;
 
 @PvpMetadata
 public class EidasBindAttributeBuilder implements IPvpAttributeBuilder {
@@ -45,7 +46,7 @@ public class EidasBindAttributeBuilder implements IPvpAttributeBuilder {
   public <ATT> ATT build(final ISpConfiguration oaParam, final IAuthData authData,
                          final IAttributeGenerator<ATT> g) throws AttributeBuilderException {
 
-    String eidasBind = authData.getGenericData(Constants.EIDAS_BIND, String.class);
+    String eidasBind = authData.getGenericData(MsEidasNodeConstants.AUTH_DATA_EIDAS_BIND, String.class);
     if (StringUtils.isNotEmpty(eidasBind)) {
       return g.buildStringAttribute(EID_EIDBIND_FRIENDLY_NAME, EID_EIDBIND_NAME, eidasBind);
 
diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/auth/AuthenticationManager.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/auth/AuthenticationManager.java
deleted file mode 100644
index abda468d..00000000
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/auth/AuthenticationManager.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright 2018 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.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 License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * 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.auth;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Service;
-
-import at.gv.egiz.eaaf.core.api.IRequest;
-import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext;
-import at.gv.egiz.eaaf.core.api.idp.slo.ISloInformationContainer;
-import at.gv.egiz.eaaf.core.exceptions.EaafException;
-import at.gv.egiz.eaaf.core.impl.idp.auth.AbstractAuthenticationManager;
-import at.gv.egiz.eaaf.core.impl.idp.controller.protocols.RequestImpl;
-
-@Service("AuthenticationManager")
-public class AuthenticationManager extends AbstractAuthenticationManager {
-  private static final Logger log = LoggerFactory.getLogger(AuthenticationManager.class);
-
-  @Override
-  public ISloInformationContainer performSingleLogOut(HttpServletRequest httpReq,
-      HttpServletResponse httpResp,
-      IRequest pendingReq, String internalSsoId) throws EaafException {
-    throw new RuntimeException("Single LogOut is NOT supported by this implementation");
-
-  }
-
-  @Override
-  protected void populateExecutionContext(ExecutionContext executionContext,
-      RequestImpl pendingReq, HttpServletRequest httpReq)
-      throws EaafException {
-    log.trace("No implementation-specific population of execution-context required ... ");
-
-  }
-
-}
diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/builder/AuthenticationDataBuilder.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/builder/AuthenticationDataBuilder.java
deleted file mode 100644
index 05704de9..00000000
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/builder/AuthenticationDataBuilder.java
+++ /dev/null
@@ -1,257 +0,0 @@
-/*
- * Copyright 2018 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.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 License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * 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.builder;
-
-import java.util.Date;
-import java.util.Optional;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-import org.springframework.stereotype.Service;
-
-import com.google.common.collect.Streams;
-
-import at.asitplus.eidas.specific.connector.MsEidasNodeConstants;
-import at.asitplus.eidas.specific.modules.auth.idaustria.IdAustriaAuthConstants;
-import at.asitplus.eidas.specific.modules.msproxyservice.MsProxyServiceConstants;
-import at.gv.egiz.eaaf.core.api.IRequest;
-import at.gv.egiz.eaaf.core.api.data.ExtendedPvpAttributeDefinitions;
-import at.gv.egiz.eaaf.core.api.data.PvpAttributeDefinitions;
-import at.gv.egiz.eaaf.core.api.data.PvpAttributeDefinitions.EidIdentityStatusLevelValues;
-import at.gv.egiz.eaaf.core.api.idp.IAuthData;
-import at.gv.egiz.eaaf.core.api.idp.ISpConfiguration;
-import at.gv.egiz.eaaf.core.api.idp.auth.data.IAuthProcessDataContainer;
-import at.gv.egiz.eaaf.core.exceptions.EaafAuthenticationException;
-import at.gv.egiz.eaaf.core.exceptions.EaafBuilderException;
-import at.gv.egiz.eaaf.core.exceptions.EaafException;
-import at.gv.egiz.eaaf.core.exceptions.EaafStorageException;
-import at.gv.egiz.eaaf.core.impl.data.Pair;
-import at.gv.egiz.eaaf.core.impl.data.Triple;
-import at.gv.egiz.eaaf.core.impl.idp.AuthenticationData;
-import at.gv.egiz.eaaf.core.impl.idp.EidAuthenticationData;
-import at.gv.egiz.eaaf.core.impl.idp.auth.builder.AbstractAuthenticationDataBuilder;
-import at.gv.egiz.eaaf.core.impl.idp.auth.data.EidAuthProcessDataWrapper;
-import lombok.extern.slf4j.Slf4j;
-
-@Service("AuthenticationDataBuilder")
-@Slf4j
-public class AuthenticationDataBuilder extends AbstractAuthenticationDataBuilder {
-
-  private static final String ERROR_B11 = "builder.11";
-
-  @Override
-  protected IAuthData buildDeprecatedAuthData(IRequest pendingReq) throws EaafException {
-    final EidAuthProcessDataWrapper authProcessData =
-        pendingReq.getSessionData(EidAuthProcessDataWrapper.class);
-    final EidAuthenticationData authData = new EidAuthenticationData();
-
-    // set basis infos
-    super.generateDeprecatedBasicAuthData(authData, pendingReq, authProcessData);
-
-    // set specific informations
-    authData.setSsoSessionValidTo(
-        new Date(new Date().getTime() + MsEidasNodeConstants.DEFAULT_PVP_ASSERTION_VALIDITY * 60 * 1000));
-
-    authData.setEidStatus(authProcessData.isTestIdentity()
-        ? EidIdentityStatusLevelValues.TESTIDENTITY
-        : EidIdentityStatusLevelValues.IDENTITY);
-
-    return authData;
-
-  }
-
-  @Override
-  protected void buildServiceSpecificAuthenticationData(IAuthData authData, IRequest pendingReq)
-      throws EaafException {
-    if (authData instanceof EidAuthenticationData) {
-      ((EidAuthenticationData) authData).setGenericData(
-          ExtendedPvpAttributeDefinitions.EID_PII_TRANSACTION_ID_NAME,
-          pendingReq.getUniquePiiTransactionIdentifier());
-      log.trace("Inject piiTransactionId: {} into AuthData", pendingReq.getUniquePiiTransactionIdentifier());
-
-      // set specific informations
-      ((EidAuthenticationData) authData).setSsoSessionValidTo(
-          new Date(new Date().getTime() + MsEidasNodeConstants.DEFAULT_PVP_ASSERTION_VALIDITY * 60 * 1000));
-
-      // set E-ID status-level
-      final EidAuthProcessDataWrapper authProcessData =
-          pendingReq.getSessionData(EidAuthProcessDataWrapper.class);
-      ((EidAuthenticationData) authData).setEidStatus(authProcessData.isTestIdentity()
-          ? EidIdentityStatusLevelValues.TESTIDENTITY
-          : EidIdentityStatusLevelValues.IDENTITY);
-
-      // handle mandate informations
-      buildMandateInformation((EidAuthenticationData) authData, pendingReq, authProcessData);
-
-    } else {
-      throw new RuntimeException("Can not inject PiiTransactionId because AuthData is of unknown type: "
-          + authData.getClass().getName());
-
-    }
-
-  }
-
-  @Override
-  protected IAuthData getAuthDataInstance(IRequest arg0) throws EaafException {
-    return new EidAuthenticationData();
-
-  }
-
-  @Override
-  protected Pair<String, String> buildOAspecificbPK(IRequest pendingReq, AuthenticationData authData)
-      throws EaafBuilderException {
-    return super.buildOAspecificbPK(pendingReq, authData);
-
-  }
-
-  @Override
-  protected Pair<String, String> getEncryptedBpkFromPvpAttribute(IAuthProcessDataContainer arg0,
-      AuthenticationData arg1, ISpConfiguration arg2) throws EaafBuilderException {
-    return null;
-
-  }
-
-  @Override
-  protected Pair<String, String> getbaseIdFromSzr(AuthenticationData arg0, String arg1, String arg2) {
-    return null;
-
-  }
-
-  private void buildMandateInformation(EidAuthenticationData authData, IRequest pendingReq,
-      EidAuthProcessDataWrapper authProcessData) throws EaafAuthenticationException, EaafBuilderException,
-      EaafStorageException {
-    authData.setUseMandate(authProcessData.isMandateUsed());
-    if (authProcessData.isMandateUsed()) {
-      log.debug("Build mandate-releated authentication data ... ");
-      if (authProcessData.isForeigner()) {
-        buildMandateInformationForEidasIncoming();
-
-      } else {
-        buildMandateInformationForEidasOutgoing(authData, pendingReq, authProcessData);
-
-      }
-
-      // inject mandate information into authdata
-      final Set<String> mandateAttributes = Streams.concat(
-          IdAustriaAuthConstants.DEFAULT_REQUIRED_MANDATE_NAT_PVP_ATTRIBUTES.stream(),
-          IdAustriaAuthConstants.DEFAULT_REQUIRED_MANDATE_JUR_PVP_ATTRIBUTES.stream())
-          .map(el -> el.getFirst())
-          .collect(Collectors.toSet());
-
-      authProcessData.getGenericSessionDataStream()
-          .filter(el -> mandateAttributes.contains(el.getKey()))
-          .forEach(el -> {
-            try {
-              authData.setGenericData(el.getKey(), el.getValue());
-
-            } catch (final EaafStorageException e) {
-              log.error("Can not store attribute: {} into session.", el.getKey(), e);
-              throw new RuntimeException(e);
-
-            }
-          });
-    }
-  }
-
-  private void buildMandateInformationForEidasIncoming() {
-    log.debug("Find eIDAS incoming process. Generated mandate-information for ID-Austria system ... ");
-
-    // TODO: implement IDA specific processing of foreign mandate
-
-  }
-
-  private void buildMandateInformationForEidasOutgoing(EidAuthenticationData authData, IRequest pendingReq,
-      EidAuthProcessDataWrapper authProcessData) throws EaafAuthenticationException, EaafBuilderException,
-      EaafStorageException {
-    log.debug("Find eIDAS outgoing process. Generated mandate-information for other country ... ");
-    if (authProcessData.getGenericDataFromSession(
-        PvpAttributeDefinitions.MANDATE_NAT_PER_BPK_NAME) != null) {
-      final Optional<Triple<String, String, Boolean>> missingAttribute =
-          IdAustriaAuthConstants.DEFAULT_REQUIRED_MANDATE_NAT_PVP_ATTRIBUTES.stream()
-              .filter(el -> authProcessData.getGenericDataFromSession(el.getFirst()) == null)
-              .findFirst();
-      if (missingAttribute.isPresent()) {
-        log.error("ID-Austria response contains not all attributes for nat. person mandator. Missing: {}",
-            missingAttribute.get().getFirst());
-        throw new EaafAuthenticationException(ERROR_B11, new Object[] { "Nat. person mandate" });
-
-      } else {
-        log.trace("Find nat. person mandate. Mandate can be used as it is ");
-        authData.setGenericData(MsProxyServiceConstants.ATTR_EIDAS_NAT_MANDATOR_PERSONAL_IDENTIFIER,
-            extractBpkFromResponse(authProcessData.getGenericDataFromSession(
-                PvpAttributeDefinitions.MANDATE_NAT_PER_BPK_NAME, String.class)));
-
-      }
-
-    } else {
-      final Optional<Triple<String, String, Boolean>> missingAttribute =
-          IdAustriaAuthConstants.DEFAULT_REQUIRED_MANDATE_JUR_PVP_ATTRIBUTES.stream()
-              .filter(el -> authProcessData.getGenericDataFromSession(el.getFirst()) == null)
-              .findFirst();
-      if (missingAttribute.isPresent()) {
-        log.error("ID-Austria response contains not all attributes for legal. person mandator. Missing: {}",
-            missingAttribute.get().getFirst());
-        throw new EaafAuthenticationException(ERROR_B11, new Object[] { "Legal. person mandate" });
-
-      } else {
-        log.trace(
-            "Find jur. person mandate. Generate eIDAS identifier from legal-person sourcePin and type ... ");
-        final String sourcePin = authProcessData.getGenericDataFromSession(
-            PvpAttributeDefinitions.MANDATE_LEG_PER_SOURCE_PIN_NAME, String.class);
-        final String sourcePinType = authProcessData.getGenericDataFromSession(
-            PvpAttributeDefinitions.MANDATE_LEG_PER_SOURCE_PIN_TYPE_NAME, String.class);
-
-        // build leagl-person identifier for eIDAS out-going 
-        final String[] splittedTarget =  
-            pendingReq.getServiceProviderConfiguration().getAreaSpecificTargetIdentifier().split("\\+");       
-        StringBuilder sb = new StringBuilder();
-        sb.append(splittedTarget[1])
-          .append("/")
-          .append(splittedTarget[2])
-          .append("/")
-          .append(sourcePinType)
-          .append("+")
-          .append(sourcePin);
-                
-        log.debug("Use legal-person eIDAS identifer: {} from baseId: {} and baseIdType: {}",
-            sb.toString(), sourcePin, sourcePinType);
-        authData.setGenericData(MsProxyServiceConstants.ATTR_EIDAS_JUR_MANDATOR_PERSONAL_IDENTIFIER, sb.toString());
-
-      }
-    }
-  }
-
-  private String extractBpkFromResponse(String pvpBpkAttrValue) {
-    final String[] split = pvpBpkAttrValue.split(":", 2);
-    if (split.length == 2) {
-      return split[1];
-
-    } else {
-      log.warn("PVP bPK attribute: {} has wrong format. Use it as it is.", pvpBpkAttrValue);
-      return pvpBpkAttrValue;
-
-    }
-  }
-
-}
diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/config/PvpEndPointConfiguration.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/config/PvpEndPointConfiguration.java
index d7d88017..c62cbeef 100644
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/config/PvpEndPointConfiguration.java
+++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/config/PvpEndPointConfiguration.java
@@ -41,7 +41,7 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import at.asitplus.eidas.specific.connector.MsEidasNodeConstants;
+import at.asitplus.eidas.specific.core.MsEidasNodeConstants;
 import at.gv.egiz.eaaf.core.api.idp.IConfiguration;
 import at.gv.egiz.eaaf.core.exceptions.EaafConfigurationException;
 import at.gv.egiz.eaaf.core.exceptions.EaafException;
diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/config/PvpMetadataConfiguration.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/config/PvpMetadataConfiguration.java
index 0fc061ff..e83fd4cf 100644
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/config/PvpMetadataConfiguration.java
+++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/config/PvpMetadataConfiguration.java
@@ -34,7 +34,7 @@ import org.opensaml.saml.saml2.metadata.RequestedAttribute;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import at.asitplus.eidas.specific.connector.MsEidasNodeConstants;
+import at.asitplus.eidas.specific.core.MsEidasNodeConstants;
 import at.gv.egiz.eaaf.core.api.idp.IConfiguration;
 import at.gv.egiz.eaaf.core.exceptions.EaafException;
 import at.gv.egiz.eaaf.modules.pvp2.api.IPvp2BasicConfiguration;
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
deleted file mode 100644
index b4d58cdd..00000000
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/config/StaticResourceConfiguration.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * 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.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 License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * 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;
-import java.util.List;
-
-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.ResourceHandlerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-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;
-import at.gv.egiz.eaaf.core.api.logging.IMessageSourceLocation;
-import at.gv.egiz.eaaf.core.impl.utils.FileUtils;
-
-/**
- * Spring configurator for Web resources.
- * 
- * @author tlenz
- *
- */
-@Configuration
-public class StaticResourceConfiguration implements WebMvcConfigurer {
-  private static final Logger log = LoggerFactory.getLogger(StaticResourceConfiguration.class);
-  private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {
-      "/"
-  };
-
-  private static final String DEFAULT_MESSAGE_SOURCE = "classpath:properties/status_messages";
-
-  @Autowired
-  private IConfiguration basicConfig;
-
-  @Override
-  public void addResourceHandlers(ResourceHandlerRegistry registry) {
-    final String staticResources = basicConfig.getBasicConfiguration(
-        MsEidasNodeConstants.PROP_CONFIG_WEBCONTENT_STATIC_PATH);
-    try {
-      if (StringUtils.isNotEmpty(staticResources)) {
-        String absPath = FileUtils.makeAbsoluteUrl(staticResources, basicConfig
-            .getConfigurationRootDirectory());
-        if (!absPath.endsWith("/")) {
-          absPath += "/";
-        }
-
-        registry.addResourceHandler("/static/**").addResourceLocations(absPath);
-        log.info("Add Ressourcefolder: " + absPath + " for static Web content");
-
-      } else {
-        log.debug("No Ressourcefolder for static Web content");
-      }
-
-    } catch (final MalformedURLException e) {
-      log.warn("Can NOT initialize ressourcefolder for static Web content", e);
-
-    }
-
-    registry.addResourceHandler("/**").addResourceLocations(CLASSPATH_RESOURCE_LOCATIONS);
-
-  }
-
-  /**
-   * Get a message source with only internal message properties.
-   *
-   * @param ressourceLocations List of source-locations
-   * @return
-   */
-  @Bean
-  public ReloadableResourceBundleMessageSource internalMessageSource(
-      @Autowired(required = false) final List<IMessageSourceLocation> ressourceLocations) {
-    final ReloadableResourceBundleMessageSource messageSource =
-        new ReloadableResourceBundleMessageSource();
-
-    // add default message source
-    messageSource.setBasename(DEFAULT_MESSAGE_SOURCE);
-
-    if (ressourceLocations != null) {
-      // load more message sources
-      for (final IMessageSourceLocation el : ressourceLocations) {
-        if (el.getMessageSourceLocation() != null) {
-          for (final String source : el.getMessageSourceLocation()) {
-            messageSource.addBasenames(source);
-            log.debug("Add additional messageSources: {}", el.getMessageSourceLocation().toArray());
-
-          }
-        }
-      }
-    }
-
-    messageSource.setDefaultEncoding("UTF-8");
-    return messageSource;
-
-  }
-
-  /**
-   * Get full message source with internal and external message-properties files.
-   *
-   * @param ressourceLocations List of source-locations
-   * @return
-   */
-  @Bean
-  public ReloadableResourceBundleMessageSource messageSource(
-      @Autowired(required = false) final List<IMessageSourceLocation> ressourceLocations) {
-    final ReloadableResourceBundleMessageSource messageSource =
-        new ReloadableResourceBundleMessageSource();
-    messageSource.setDefaultEncoding("UTF-8");
-    messageSource.setParentMessageSource(internalMessageSource(ressourceLocations));
-
-    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;
-
-  }
-    
-  /**
-   * Get a i18n resolver based on cookies.
-   *
-   * @return
-   */
-  @Bean
-  public CookieLocaleResolver localeResolver() {
-    final CookieLocaleResolver localeResolver = new CookieLocaleResolver();
-    localeResolver.setCookieName("currentLanguage");
-    localeResolver.setCookieMaxAge(3600);
-    return localeResolver;
-    
-  }
-  
-  /**
-   * Get a Tyhmeleaf Template-Resolver with external configuration path.
-   *
-   * @return
-   */
-  @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("HTML");
-        viewResolver.setCacheable(false);
-
-        log.info("Add Ressourcefolder: {} for dynamic Web content templates", absPath);
-        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);
-
-    }
-
-    throw new RuntimeException("Can NOT initialize HTML template resolver");
-
-  }
-}
diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/controller/ProcessEngineSignalController.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/controller/ProcessEngineSignalController.java
index 1bf1ad67..e649fd3a 100644
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/controller/ProcessEngineSignalController.java
+++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/controller/ProcessEngineSignalController.java
@@ -32,7 +32,7 @@ import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 
-import at.asitplus.eidas.specific.connector.MsEidasNodeConstants;
+import at.asitplus.eidas.specific.core.MsEidasNodeConstants;
 import at.gv.egiz.eaaf.core.exceptions.EaafException;
 import at.gv.egiz.eaaf.core.impl.idp.controller.AbstractProcessEngineSignalController;
 
diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/controller/Pvp2SProfileEndpoint.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/controller/Pvp2SProfileEndpoint.java
index d2ec5a7c..923864cc 100644
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/controller/Pvp2SProfileEndpoint.java
+++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/controller/Pvp2SProfileEndpoint.java
@@ -30,7 +30,7 @@ import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 
-import at.asitplus.eidas.specific.connector.MsEidasNodeConstants;
+import at.asitplus.eidas.specific.core.MsEidasNodeConstants;
 import at.gv.egiz.eaaf.core.exceptions.EaafException;
 import at.gv.egiz.eaaf.modules.pvp2.idp.impl.AbstractPvp2XProtocol;
 import at.gv.egiz.eaaf.modules.pvp2.idp.impl.PvpSProfilePendingRequest;
diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/health/EidasNodeMetadataHealthIndicator.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/health/EidasNodeMetadataHealthIndicator.java
deleted file mode 100644
index f160916c..00000000
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/health/EidasNodeMetadataHealthIndicator.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package at.asitplus.eidas.specific.connector.health;
-
-import java.io.ByteArrayInputStream;
-
-import javax.xml.transform.TransformerFactoryConfigurationError;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.http.StatusLine;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.methods.HttpUriRequest;
-import org.apache.http.client.utils.URIBuilder;
-import org.apache.http.entity.ContentType;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.actuate.health.Health;
-import org.springframework.boot.actuate.health.HealthIndicator;
-
-import at.asitplus.eidas.specific.connector.MsEidasNodeConstants;
-import at.gv.egiz.eaaf.core.api.idp.IConfiguration;
-import at.gv.egiz.eaaf.core.impl.data.Triple;
-import at.gv.egiz.eaaf.core.impl.http.HttpUtils;
-import at.gv.egiz.eaaf.core.impl.http.IHttpClientFactory;
-import at.gv.egiz.eaaf.core.impl.utils.DomUtils;
-import lombok.extern.slf4j.Slf4j;
-
-@Slf4j
-public class EidasNodeMetadataHealthIndicator implements HealthIndicator {
-
-  @Autowired IConfiguration config;
-  @Autowired IHttpClientFactory httpClientFactory;
-  
-  @Override
-  public Health health() {
-    try {
-      final String urlString = config.getBasicConfiguration(
-          MsEidasNodeConstants.PROP_CONFIG_MONITORING_EIDASNODE_METADATAURL);
-      if (StringUtils.isEmpty(urlString)) {
-        log.trace("No eIDASNode metadata URL. Skipping test ... ");
-        return Health.unknown().build();
-
-      }
-
-      // create HTTP client
-      CloseableHttpClient httpClient = httpClientFactory.getHttpClient();      
-      URIBuilder uriBuilder = new URIBuilder(urlString);      
-      HttpUriRequest request = new HttpGet(uriBuilder.build());
-
-      final Triple<StatusLine, ByteArrayInputStream, ContentType> respCode = httpClient.execute(request,
-          HttpUtils.bodyStatusCodeResponseHandler());
-      if (respCode.getFirst().getStatusCode() != 200) {
-        log.warn("Monitoring: Get http StatusCode: {} from eIDAS-Node Metadata endpoint", 
-            respCode.getFirst().getStatusCode());
-        return Health.down().withDetail("http StatusCode", respCode.getFirst().getStatusCode()).build();
-
-      }
-
-      // parse metadata
-      DomUtils.parseXmlNonValidating(respCode.getSecond());
-
-      return Health.up().build();
-
-    } catch (Exception | TransformerFactoryConfigurationError e) {
-      log.warn("Monitoring: Can not read SAML2 metadata from eIDAS-Node", e);
-      return Health.down().down(e).build();
-
-    }
-  }
-
-}
diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/health/IgniteClusterHealthIndicator.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/health/IgniteClusterHealthIndicator.java
deleted file mode 100644
index 10517565..00000000
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/health/IgniteClusterHealthIndicator.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package at.asitplus.eidas.specific.connector.health;
-
-import org.apache.ignite.Ignite;
-import org.springframework.boot.actuate.health.Health;
-import org.springframework.boot.actuate.health.HealthIndicator;
-
-import eu.eidas.auth.cache.IgniteInstanceInitializerSpecificCommunication;
-import lombok.Setter;
-import lombok.extern.slf4j.Slf4j;
-
-/**
- * HealthCheck that validate Nodes in Apache-Ignite Cluster.
- * 
- * @author tlenz
- *
- */
-@Slf4j
-public class IgniteClusterHealthIndicator implements HealthIndicator {
-
-  @Setter
-  protected IgniteInstanceInitializerSpecificCommunication igniteInstanceInitializerSpecificCommunication;
-
-  @Override
-  public Health health() {
-    final Ignite instance = igniteInstanceInitializerSpecificCommunication.getInstance();
-
-    // check if Apache Ignite cluster is active
-    if (!instance.cluster().active()) {
-      return Health.outOfService().build();
-
-    }
-
-    final Health.Builder healthBuilder;
-    // Status UP requires more than 1 node because MS-Connector and eIDAS-Node operations as
-    // micro-services
-    if (instance.cluster().nodes().size() > 1) {
-      healthBuilder = Health.up();
-
-    } else {
-      // Something looks wrong if only a single node was found because MS-Connector and eIDAS-Node
-      // operations as micro-services
-      healthBuilder = Health.outOfService();
-
-    }
-
-    healthBuilder.withDetail("#Nodes", instance.cluster().nodes().size());
-    log.trace("Ignite state. #Nodes: {}", instance.cluster().nodes().size());
-    return healthBuilder.build();
-
-  }
-
-}
diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/interceptor/WebFrontEndSecurityInterceptor.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/interceptor/WebFrontEndSecurityInterceptor.java
deleted file mode 100644
index d90cd22b..00000000
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/interceptor/WebFrontEndSecurityInterceptor.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright 2018 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.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 License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * 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.interceptor;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.springframework.web.servlet.HandlerInterceptor;
-import org.springframework.web.servlet.ModelAndView;
-
-/**
- * Spring interceptor to inject securtiy headers into http response.
- * 
- * @author tlenz
- *
- */
-public class WebFrontEndSecurityInterceptor implements HandlerInterceptor {
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see
-   * org.springframework.web.servlet.HandlerInterceptor#preHandle(javax.servlet.
-   * http.HttpServletRequest, javax.servlet.http.HttpServletResponse,
-   * java.lang.Object)
-   */
-  @Override
-  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
-      throws Exception {
-
-    // set security headers
-    response.setHeader("Expires", "Sat, 6 May 1995 12:00:00 GMT");
-    response.setHeader("Pragma", "no-cache");
-    response.setHeader("Cache-control", "no-store, no-cache, must-revalidate");
-
-    return true;
-
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see
-   * org.springframework.web.servlet.HandlerInterceptor#postHandle(javax.servlet.
-   * http.HttpServletRequest, javax.servlet.http.HttpServletResponse,
-   * java.lang.Object, org.springframework.web.servlet.ModelAndView)
-   */
-  @Override
-  public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
-      ModelAndView modelAndView) throws Exception {
-
-  }
-
-  /*
-   * (non-Javadoc)
-   * 
-   * @see
-   * org.springframework.web.servlet.HandlerInterceptor#afterCompletion(javax.
-   * servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse,
-   * java.lang.Object, java.lang.Exception)
-   */
-  @Override
-  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
-      Exception ex)
-      throws Exception {
-
-  }
-
-}
diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/logger/RevisionLogger.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/logger/RevisionLogger.java
deleted file mode 100644
index 16385e10..00000000
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/logger/RevisionLogger.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright 2018 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.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 License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * 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.logger;
-
-import java.util.Date;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import at.asitplus.eidas.specific.connector.MsEidasNodeConstants;
-import at.gv.egiz.components.eventlog.api.Event;
-import at.gv.egiz.components.eventlog.api.EventConstants;
-import at.gv.egiz.components.eventlog.api.EventLogFactory;
-import at.gv.egiz.components.eventlog.api.EventLoggingException;
-import at.gv.egiz.eaaf.core.api.IRequest;
-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.logging.IRevisionLogger;
-
-public class RevisionLogger extends EventLogFactory implements IRevisionLogger {
-  private static final Logger log = LoggerFactory.getLogger(RevisionLogger.class);
-
-  @Autowired
-  private IConfiguration basicConfig;
-
-  @Override
-  public void logEvent(ISpConfiguration oaConfig, int eventCode, String message) {
-    logEvent(createNewEvent(new Date().getTime(), eventCode, message));
-
-  }
-
-  @Override
-  public void logEvent(IRequest pendingRequest, int eventCode) {
-    logEvent(createNewEvent(new Date().getTime(), eventCode,
-        pendingRequest.getUniqueSessionIdentifier(), pendingRequest.getUniqueTransactionIdentifier()));
-
-  }
-
-  @Override
-  public void logEvent(IRequest pendingRequest, int eventCode, String message) {
-    logEvent(createNewEvent(new Date().getTime(), eventCode, message,
-        pendingRequest.getUniqueSessionIdentifier(), pendingRequest.getUniqueTransactionIdentifier()));
-
-  }
-
-  @Override
-  public void logEvent(int eventCode, String message) {
-    logEvent(createNewEvent(new Date().getTime(), eventCode, message));
-
-  }
-
-  @Override
-  public void logEvent(String sessionID, String transactionID, int eventCode, String message) {
-    logEvent(createNewEvent(new Date().getTime(), eventCode, message, sessionID, transactionID));
-
-  }
-
-  @Override
-  public void logEvent(String sessionID, String transactionID, int eventCode) {
-    logEvent(createNewEvent(new Date().getTime(), eventCode, sessionID, transactionID));
-
-  }
-
-  private void logEvent(Event event) {
-    try {
-      if (event.getEventCode() >= 1100) {
-        if (event.getEventCode() == EventConstants.TRANSACTION_IP
-            && !basicConfig.getBasicConfigurationBoolean(
-                MsEidasNodeConstants.PROP_CONFIG_REVISIONLOG_LOG_IP_ADDRESS_OF_USER, true)) {
-          log.trace("Ignore Event: " + event.getEventCode() + " because IP adresse logging prohibited");
-          return;
-
-        }
-
-        getEventLog().logEvent(event);
-
-      } else {
-        log.trace("Ignore Event: " + event.getEventCode()
-            + " because session functionallity is not implemented");
-      }
-
-    } catch (final EventLoggingException e) {
-      log.warn("Event logging FAILED! Reason: " + e.getMessage());
-
-    }
-
-  }
-}
diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/logger/StatisticLogger.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/logger/StatisticLogger.java
deleted file mode 100644
index 3483f367..00000000
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/logger/StatisticLogger.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright 2018 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.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 License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * 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.logger;
-
-import org.apache.commons.lang3.StringUtils;
-import org.joda.time.DateTime;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import at.asitplus.eidas.specific.connector.MsEidasNodeConstants;
-import at.gv.egiz.eaaf.core.api.IRequest;
-import at.gv.egiz.eaaf.core.api.idp.IAuthData;
-import at.gv.egiz.eaaf.core.api.logging.IStatisticLogger;
-import at.gv.egiz.eaaf.core.exceptions.EaafException;
-
-public class StatisticLogger implements IStatisticLogger {
-
-  private static final Logger log = LoggerFactory.getLogger(StatisticLogger.class);
-
-  private static final String DATEFORMATER = "yyyy.MM.dd-HH:mm:ss+z";
-  private static final String STATUS_SUCCESS = "success";
-  private static final String STATUS_ERROR = "error";
-
-  @Override
-  public void logSuccessOperation(IRequest protocolRequest, IAuthData authData, boolean isSsoSession) {
-    log.info(buildLogMessage(
-        protocolRequest.getUniqueTransactionIdentifier(),
-        protocolRequest.getSpEntityId(),
-        protocolRequest.getRawData(MsEidasNodeConstants.DATA_REQUESTERID),
-        protocolRequest.getServiceProviderConfiguration().getAreaSpecificTargetIdentifier(),
-        authData.getCiticenCountryCode(),
-        STATUS_SUCCESS,
-        StringUtils.EMPTY,
-        StringUtils.EMPTY));
-
-  }
-
-  @Override
-  public void logErrorOperation(Throwable throwable) {
-    String errorId = "TODO";
-    if (throwable instanceof EaafException) {
-      errorId = ((EaafException) throwable).getErrorId();
-    }
-
-    log.info(buildLogMessage(
-        StringUtils.EMPTY,
-        StringUtils.EMPTY,
-        StringUtils.EMPTY,
-        StringUtils.EMPTY,
-        StringUtils.EMPTY,
-        STATUS_ERROR,
-        errorId,
-        throwable.getMessage()));
-
-  }
-
-  @Override
-  public void logErrorOperation(Throwable throwable, IRequest errorRequest) {
-    String errorId = "TODO";
-    if (throwable instanceof EaafException) {
-      errorId = ((EaafException) throwable).getErrorId();
-    }
-
-    if (errorRequest != null) {
-      log.info(buildLogMessage(
-          errorRequest.getUniqueTransactionIdentifier(),
-          errorRequest.getSpEntityId(),
-          errorRequest.getRawData(MsEidasNodeConstants.DATA_REQUESTERID),
-          errorRequest.getServiceProviderConfiguration().getAreaSpecificTargetIdentifier(),
-          StringUtils.EMPTY,
-          STATUS_ERROR,
-          errorId,
-          throwable.getMessage()));
-    } else {
-      log.info(buildLogMessage(
-          StringUtils.EMPTY,
-          StringUtils.EMPTY,
-          StringUtils.EMPTY,
-          StringUtils.EMPTY,
-          StringUtils.EMPTY,
-          STATUS_ERROR,
-          errorId,
-          throwable.getMessage()));
-    }
-
-  }
-
-  @Override
-  public void internalTesting() throws Exception {
-    log.trace("Not implemented for a File-based logger");
-
-  }
-
-  private String buildLogMessage(String transId, String entityId, Object requesterId, String target,
-      String cc,
-      String status, String errorCode, String errorMsg) {
-    String logMsg = StringUtils.EMPTY;
-
-    // data,tId,MOAID-Id,SP-Id,bPKTarget,CC,status,error-code,error-msg
-
-    logMsg += DateTime.now().toString(DATEFORMATER) + ",";
-    logMsg += transId + ",";
-    logMsg += entityId + ",";
-
-    if (requesterId instanceof String && StringUtils.isNotEmpty((String) requesterId)) {
-      logMsg += (String) requesterId + ",";
-    } else {
-      logMsg += StringUtils.EMPTY + ",";
-    }
-
-    logMsg += target + ",";
-    logMsg += cc + ",";
-
-    logMsg += status + ",";
-    logMsg += errorCode + ",";
-    logMsg += errorMsg;
-
-    return logMsg;
-  }
-}
diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/mapper/LoALevelMapper.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/mapper/LoALevelMapper.java
deleted file mode 100644
index 564160be..00000000
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/mapper/LoALevelMapper.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright 2018 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.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 License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * 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.mapper;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Service;
-
-import at.gv.egiz.eaaf.core.api.data.EaafConstants;
-import at.gv.egiz.eaaf.core.api.data.ILoALevelMapper;
-
-@Service("LoALevelMapper")
-public class LoALevelMapper implements ILoALevelMapper {
-  private static final Logger log = LoggerFactory.getLogger(LoALevelMapper.class);
-
-  @Override
-  public String mapToSecClass(String loa) {
-    log.info("Mapping to PVP SecClass is NOT supported");
-    return null;
-  }
-
-  @Override
-  public String mapToEidasLoa(String loa) {
-    if (loa.startsWith(EaafConstants.EIDAS_LOA_PREFIX)) {
-      return loa;
-    } else {
-      log.info("Can NOT map '" + loa + "' to eIDAS LoA");
-    }
-
-    return null;
-
-  }
-
-  @Override
-  public String mapEidasQaaToStorkQaa(String eidasqaaLevel) {
-    return null;
-  }
-
-}
diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/processes/CountrySelectionProcessImpl.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/processes/CountrySelectionProcessImpl.java
index 805148f7..2ec86f53 100644
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/processes/CountrySelectionProcessImpl.java
+++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/processes/CountrySelectionProcessImpl.java
@@ -25,7 +25,7 @@ package at.asitplus.eidas.specific.connector.processes;
 
 import org.apache.commons.lang3.StringUtils;
 
-import at.asitplus.eidas.specific.connector.MsEidasNodeConstants;
+import at.asitplus.eidas.specific.core.MsEidasNodeConstants;
 import at.gv.egiz.eaaf.core.api.IRequest;
 import at.gv.egiz.eaaf.core.api.idp.auth.modules.AuthModule;
 import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext;
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 727653b3..b2c5c51d 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
@@ -34,7 +34,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
 
-import at.asitplus.eidas.specific.connector.MsEidasNodeConstants;
+import at.asitplus.eidas.specific.core.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;
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 d3b8116a..e87979fb 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
@@ -29,9 +29,9 @@ import javax.servlet.http.HttpServletResponse;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import at.asitplus.eidas.specific.connector.MsConnectorEventCodes;
-import at.asitplus.eidas.specific.connector.MsEidasNodeConstants;
-import at.asitplus.eidas.specific.connector.gui.StaticGuiBuilderConfiguration;
+import at.asitplus.eidas.specific.core.MsConnectorEventCodes;
+import at.asitplus.eidas.specific.core.MsEidasNodeConstants;
+import at.asitplus.eidas.specific.core.gui.StaticGuiBuilderConfiguration;
 import at.gv.egiz.eaaf.core.api.gui.IGuiBuilderConfiguration;
 import at.gv.egiz.eaaf.core.api.gui.ISpringMvcGuiFormBuilder;
 import at.gv.egiz.eaaf.core.api.idp.IConfiguration;
diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/provider/PvpEndPointCredentialProvider.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/provider/PvpEndPointCredentialProvider.java
index 3a3e9664..98e88eff 100644
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/provider/PvpEndPointCredentialProvider.java
+++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/provider/PvpEndPointCredentialProvider.java
@@ -25,7 +25,7 @@ package at.asitplus.eidas.specific.connector.provider;
 
 import org.springframework.beans.factory.annotation.Autowired;
 
-import at.asitplus.eidas.specific.connector.MsEidasNodeConstants;
+import at.asitplus.eidas.specific.core.MsEidasNodeConstants;
 import at.gv.egiz.eaaf.core.api.idp.IConfiguration;
 import at.gv.egiz.eaaf.core.exceptions.EaafConfigurationException;
 import at.gv.egiz.eaaf.core.impl.credential.KeyStoreConfiguration;
diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/provider/PvpMetadataProvider.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/provider/PvpMetadataProvider.java
index 8dbb74c7..6161c271 100644
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/provider/PvpMetadataProvider.java
+++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/provider/PvpMetadataProvider.java
@@ -41,7 +41,7 @@ import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import at.asitplus.eidas.specific.connector.MsEidasNodeConstants;
+import at.asitplus.eidas.specific.core.MsEidasNodeConstants;
 import at.gv.egiz.eaaf.core.api.idp.IConfigurationWithSP;
 import at.gv.egiz.eaaf.core.api.idp.ISpConfiguration;
 import at.gv.egiz.eaaf.core.exceptions.EaafConfigurationException;
diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/provider/StatusMessageProvider.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/provider/StatusMessageProvider.java
deleted file mode 100644
index 5565bc63..00000000
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/provider/StatusMessageProvider.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * Copyright 2018 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.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 License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * 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.provider;
-
-import java.text.MessageFormat;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.context.MessageSource;
-import org.springframework.context.MessageSourceAware;
-import org.springframework.context.NoSuchMessageException;
-import org.springframework.context.i18n.LocaleContextHolder;
-import org.springframework.stereotype.Service;
-
-import at.gv.egiz.eaaf.core.api.IStatusMessenger;
-import at.gv.egiz.eaaf.core.exceptions.EaafException;
-import at.gv.egiz.eaaf.core.impl.logging.LogMessageProviderFactory;
-
-@Service("StatusMessageProvider")
-public class StatusMessageProvider implements IStatusMessenger, MessageSourceAware {
-  private static final Logger log = LoggerFactory.getLogger(StatusMessageProvider.class);
-
-  private static final String ERROR_MESSAGES_UNAVAILABLE =
-      "Error messages can NOT be load from application. Only errorCode: {0} is availabe";
-  private static final String ERROR_NO_MESSAGE = "No errormesseage for error with number.={0}";
-
-  private static final String ERROR_EXTERNALERROR_CODES_UNAVAILABLE =
-      "External error-codes can NOT be load from application. Only internal errorCode: {0} is availabe";
-  private static final String ERROR_NO_EXTERNALERROR_CODE =
-      "No external error for internal error with number.={0}";
-  private static final String MSG_WARN_NO_SOURCE = "MessageCode: {} is NOT SET for locale: {}";
-  private static final String MSG_INFO = "Use locale: {} as default";
-  
-  // external error codes
-  private static final String DEFAULT_EXTERNALERROR_RESOURCES = "properties/external_statuscodes_map";
-  private static final Locale DEFAULT_EXTERNALERROR_LOCALES = new Locale("en", "GB");
-  private ResourceBundle externalError = null;
-
-  //internal messanges
-  private MessageSource messageSource;
-
-  @Override
-  public String getMessageWithoutDefault(final String messageId, final Object[] parameters) {
-    if (messageSource == null) {
-      return null;
-
-    } else {
-      try {
-        final Locale locale = LocaleContextHolder.getLocale();
-        return messageSource.getMessage(messageId, parameters, locale);
-
-      } catch (final NoSuchMessageException e) {
-        log.info(MSG_WARN_NO_SOURCE, messageId, LocaleContextHolder.getLocale());
-        log.debug(MSG_INFO, Locale.ENGLISH);
-
-        try {
-          return messageSource.getMessage(messageId, parameters, Locale.ENGLISH);
-
-        } catch (final NoSuchMessageException e2) {
-          log.info(MSG_WARN_NO_SOURCE, messageId, Locale.ENGLISH);
-
-        }
-
-      } catch (final MissingResourceException e2) {
-        log.warn("No message source", e2);
-
-      }
-    }
-
-    return null;
-
-  }
-
-  @Override
-  public String getMessage(final String messageId, final Object[] parameters) {
-    if (messageSource == null) {
-      return MessageFormat.format(ERROR_MESSAGES_UNAVAILABLE, new Object[]{messageId});
-
-    } else {
-      try {
-        final Locale locale = LocaleContextHolder.getLocale();
-        return messageSource.getMessage(messageId, parameters, locale);
-
-      } catch (final NoSuchMessageException e) {
-        log.info(MSG_WARN_NO_SOURCE, messageId, LocaleContextHolder.getLocale());
-        log.debug(MSG_INFO, Locale.ENGLISH);
-
-        try {
-          return messageSource.getMessage(messageId, parameters, Locale.ENGLISH);
-
-        } catch (final NoSuchMessageException e2) {
-          return MessageFormat.format(ERROR_NO_MESSAGE, new Object[]{messageId});
-
-        }
-
-      } catch (final MissingResourceException e2) {
-        return MessageFormat.format(ERROR_NO_MESSAGE, new Object[]{messageId});
-
-      }
-    }
-  }
-  
-  @Override
-  public String getResponseErrorCode(Throwable throwable) {
-    String errorCode = IStatusMessenger.CODES_EXTERNAL_ERROR_GENERIC;
-    if (throwable instanceof EaafException) {
-      errorCode = ((EaafException) throwable).getErrorId();
-      
-    }
-        
-    return errorCode;
-
-  }
-
-  @Override
-  public String mapInternalErrorToExternalError(String intErrorCode) {
-    // initialize messages
-    if (externalError == null) {
-      this.externalError = ResourceBundle.getBundle(
-          DEFAULT_EXTERNALERROR_RESOURCES,
-          DEFAULT_EXTERNALERROR_LOCALES);
-
-    }
-
-    // create the message
-    if (externalError == null) {
-      log.warn(MessageFormat.format(ERROR_EXTERNALERROR_CODES_UNAVAILABLE, new Object[] { intErrorCode }));
-      return IStatusMessenger.CODES_EXTERNAL_ERROR_GENERIC;
-
-    } else {
-      try {
-        if (StringUtils.isNotEmpty(intErrorCode)) {
-          return externalError.getString(intErrorCode);
-
-        } else {
-          return IStatusMessenger.CODES_EXTERNAL_ERROR_GENERIC;
-
-        }
-
-      } catch (final MissingResourceException e2) {
-        log.info(MessageFormat.format(ERROR_NO_EXTERNALERROR_CODE, new Object[] { intErrorCode }));
-        return IStatusMessenger.CODES_EXTERNAL_ERROR_GENERIC;
-
-      }
-    }
-  }
-
-  @Override
-  public void setMessageSource(MessageSource messageSource) {
-    this.messageSource = messageSource;
-
-    log.info("Injecting 'StatusMessanger' into 'LogMessageProviderFactory'");
-    LogMessageProviderFactory.setStatusMessager(this);
-    
-  }
-
-}
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
deleted file mode 100644
index 87ebda92..00000000
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/storage/CacheWithEidasBackend.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright 2018 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.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 License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * 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.storage;
-
-import eu.eidas.auth.commons.cache.ConcurrentCacheService;
-import eu.eidas.auth.commons.tx.AbstractCache;
-
-public class CacheWithEidasBackend extends AbstractCache<String, TransactionStoreElement> {
-
-  protected CacheWithEidasBackend(ConcurrentCacheService concurrentMapService) {
-    super(concurrentMapService);
-  }
-  
-}
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
deleted file mode 100644
index 634b3797..00000000
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/storage/EidasCacheTransactionStoreDecorator.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright 2018 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.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 License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * 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.storage;
-
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.actuate.health.Health;
-import org.springframework.boot.actuate.health.HealthIndicator;
-
-import at.gv.egiz.eaaf.core.api.storage.ITransactionStorage;
-import at.gv.egiz.eaaf.core.exceptions.EaafException;
-import at.gv.egiz.eaaf.core.exceptions.EaafStorageException;
-import at.gv.egiz.eaaf.core.impl.utils.Random;
-
-public class EidasCacheTransactionStoreDecorator implements ITransactionStorage, HealthIndicator {
-  private static final Logger log = LoggerFactory.getLogger(EidasCacheTransactionStoreDecorator.class);
-
-  @Autowired(required = true)
-  private CacheWithEidasBackend storage;
-
-  @Override
-  public Health health() {
-    try {
-      final String key = Random.nextHexRandom16();
-      final String value = Random.nextHexRandom16();
-
-      this.put(key, value, -1);
-      final String result = this.get(key, String.class);
-      this.remove(key);
-
-      if (result != null && result.equals(value)) {
-        return Health.up().build();
-      
-      } else {
-        log.warn("Montioring: TestValue: " + value + " does NOT match in Storage test");
-        return Health.down().build();
-        
-      }
-
-    } catch (final EaafException e) {
-      log.warn("Montioring: Can not read/write to storage.", e);
-      return Health.down().down(e).build();
-      
-    }
-  }
-  
-  @Override
-  public void changeKey(String oldKey, String newKey, Object value) throws EaafException {
-    if (containsKey(oldKey)) {
-      final TransactionStoreElement el = storage.get(oldKey);
-      el.setKey(newKey);
-      el.setData(value);
-      storage.put(newKey, el);
-      boolean delResult = storage.remove(oldKey);
-      log.trace("Object: {} removed from cache: {}", oldKey, delResult);
-
-    } else {
-      throw new EaafStorageException("No element in TransactionStorage with key: " + oldKey);
-    }
-
-  }
-
-  @Override
-  public List<String> clean(Date now, long dataTimeOut) {
-    log.info("Clean is NOT implemented, because its not needed");
-    return Arrays.asList();
-
-  }
-
-  @Override
-  public boolean containsKey(String key) {
-    return storage.containsKey(key);
-
-  }
-
-  @Override
-  public Object get(String key) throws EaafException {
-    if (key != null && containsKey(key)) {
-      final TransactionStoreElement element = storage.get(key);
-      return element.getData();
-
-    } else {
-      return null;
-    }
-  }
-
-  @Override
-  public <T> T get(String key, Class<T> type) throws EaafException {
-    return get(key, type, -1);
-
-  }
-
-  @Override
-  public <T> T get(String key, Class<T> type, long dataTimeOut) throws EaafException {
-    if (key != null && containsKey(key)) {
-      final TransactionStoreElement value = storage.get(key);
-
-      if (dataTimeOut > -1) {
-        final long now = new Date().getTime();
-        if (now - value.getCreated().getTime() > dataTimeOut) {
-          log.info("Transaction-Data with key: " + key + " is out of time.");
-          throw new EaafStorageException("Transaction-Data with key: " + key + " is out of time.");
-
-        }
-      }
-
-      if (type.isAssignableFrom(value.getData().getClass())) {
-        return (T) value.getData();
-
-      } else {
-        log.warn("Can NOT cast '" + value.getClass() + "' to '" + type + "'");
-      }
-
-    }
-
-    return null;
-  }
-
-  @Override
-  public Object getRaw(String key) throws EaafException {
-    return storage.get(key);
-
-  }
-
-  @Override
-  public void put(String key, Object value, int dataTimeOut) throws EaafException {
-    final TransactionStoreElement element = new TransactionStoreElement();
-    element.setKey(key);
-    element.setData(value);
-    storage.put(key, element);
-
-  }
-
-  @Override
-  public void putRaw(String key, Object value) throws EaafException {
-    if (value instanceof TransactionStoreElement) {
-      storage.put(((TransactionStoreElement) value).getKey(), (TransactionStoreElement) value);
-    } else {
-      log.info(value.getClass().getName() + " is NOT a RAW element of " + ITransactionStorage.class
-          .getName());
-    }
-
-  }
-
-  @Override
-  public void remove(String key) {
-    if (containsKey(key)) {
-      log.trace("Remove element with key: " + key + " from " + ITransactionStorage.class.getName());
-      boolean delResult = storage.remove(key);
-      log.trace("Object: {} removed from cache: {}", key, delResult);
-
-    }
-  }
-}
diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/storage/SimpleInMemoryTransactionStorage.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/storage/SimpleInMemoryTransactionStorage.java
deleted file mode 100644
index 3bda2932..00000000
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/storage/SimpleInMemoryTransactionStorage.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Copyright 2018 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.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 License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * 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.storage;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import at.gv.egiz.eaaf.core.api.storage.ITransactionStorage;
-import at.gv.egiz.eaaf.core.exceptions.EaafException;
-import at.gv.egiz.eaaf.core.exceptions.EaafStorageException;
-
-public class SimpleInMemoryTransactionStorage implements ITransactionStorage {
-  private static final Logger log = LoggerFactory.getLogger(SimpleInMemoryTransactionStorage.class);
-
-  private final Map<String, TransactionStoreElement> storage =
-      new ConcurrentHashMap<>();
-
-  @Override
-  public void changeKey(String oldKey, String newKey, Object value) throws EaafException {
-    if (containsKey(oldKey)) {
-      final TransactionStoreElement el = storage.get(oldKey);
-      el.setKey(newKey);
-      storage.put(newKey, el);
-      storage.remove(oldKey);
-
-    } else {
-      throw new EaafStorageException("No element in TransactionStorage with key: " + oldKey);
-    }
-
-  }
-
-  @Override
-  public List<String> clean(Date now, long dataTimeOut) {
-    final List<String> result = new ArrayList<>();
-    final Iterator<Entry<String, TransactionStoreElement>> iterator = storage.entrySet().iterator();
-    while (iterator.hasNext()) {
-      final Entry<String, TransactionStoreElement> key = iterator.next();
-      synchronized (storage) {
-        if (storage.containsKey(key.getKey())) {
-          final TransactionStoreElement element = key.getValue();
-          if (now.getTime() - element.getCreated().getTime() > dataTimeOut) {
-            result.add(key.getKey());
-          }
-        }
-      }
-    }
-
-    return result;
-
-  }
-
-  @Override
-  public boolean containsKey(String key) {
-    if (key != null) {
-      return storage.containsKey(key);
-    } else {
-      return false;
-    }
-
-  }
-
-  @Override
-  public Object get(String key) throws EaafException {
-    if (key != null && containsKey(key)) {
-      final TransactionStoreElement element = storage.get(key);
-      return element.getData();
-
-    } else {
-      return null;
-    }
-  }
-
-  @Override
-  public <T> T get(String key, Class<T> type) throws EaafException {
-    return get(key, type, -1);
-
-  }
-
-  @Override
-  public <T> T get(String key, Class<T> type, long dataTimeOut) throws EaafException {
-    if (key != null && containsKey(key)) {
-      final TransactionStoreElement value = storage.get(key);
-
-      if (dataTimeOut > -1) {
-        final long now = new Date().getTime();
-        if (now - value.getCreated().getTime() > dataTimeOut) {
-          log.info("Transaction-Data with key: " + key + " is out of time.");
-          throw new EaafStorageException("Transaction-Data with key: " + key + " is out of time.");
-
-        }
-      }
-
-      if (type.isAssignableFrom(value.getData().getClass())) {
-        return (T) value.getData();
-
-      } else {
-        log.warn("Can NOT cast '" + value.getClass() + "' to '" + type + "'");
-      }
-
-    }
-
-    return null;
-  }
-
-  @Override
-  public Object getRaw(String key) throws EaafException {
-    return storage.get(key);
-
-  }
-
-  @Override
-  public void put(String key, Object value, int dataTimeOut) throws EaafException {
-    final TransactionStoreElement element = new TransactionStoreElement();
-    element.setKey(key);
-    element.setData(value);
-    storage.put(key, element);
-
-  }
-
-  @Override
-  public void putRaw(String key, Object value) throws EaafException {
-    if (value instanceof TransactionStoreElement) {
-      storage.put(((TransactionStoreElement) value).getKey(), (TransactionStoreElement) value);
-    } else {
-      log.info(value.getClass().getName() + " is NOT a RAW element of " + ITransactionStorage.class
-          .getName());
-    }
-
-  }
-
-  @Override
-  public void remove(String key) {
-    if (containsKey(key)) {
-      log.debug("Remove element with key: " + key + " from " + ITransactionStorage.class.getName());
-      storage.remove(key);
-
-    }
-  }
-
-}
diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/storage/TransactionStoreElement.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/storage/TransactionStoreElement.java
deleted file mode 100644
index 4e9e737f..00000000
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/storage/TransactionStoreElement.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright 2018 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.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 License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * 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.storage;
-
-import java.io.Serializable;
-import java.util.Date;
-
-public class TransactionStoreElement implements Serializable {
-
-  private static final long serialVersionUID = 1L;
-  private String key = null;
-  private Object data = null;
-  private Date created;
-
-  public String getKey() {
-    return key;
-  }
-
-  public void setKey(String key) {
-    this.key = key;
-  }
-
-  public Object getData() {
-    return data;
-  }
-
-  public void setData(Object data) {
-    this.data = data;
-  }
-
-  public Date getCreated() {
-    return copyOrNull(created);
-  }
-
-  public void setCreated(Date created) {
-    this.created = copyOrNull(created);
-  }
-
-  private Date copyOrNull(Date in) {
-    if (in != null) {
-      return new Date(in.getTime());
-      
-    } 
-    
-    return null;
-      
-  }
-  
-}
diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/verification/AuthnRequestValidator.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/verification/AuthnRequestValidator.java
index e4c68004..23702264 100644
--- a/connector/src/main/java/at/asitplus/eidas/specific/connector/verification/AuthnRequestValidator.java
+++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/verification/AuthnRequestValidator.java
@@ -42,8 +42,8 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 
-import at.asitplus.eidas.specific.connector.MsEidasNodeConstants;
-import at.asitplus.eidas.specific.connector.config.ServiceProviderConfiguration;
+import at.asitplus.eidas.specific.core.MsEidasNodeConstants;
+import at.asitplus.eidas.specific.core.config.ServiceProviderConfiguration;
 import at.gv.egiz.eaaf.core.api.IRequest;
 import at.gv.egiz.eaaf.core.api.data.EaafConstants;
 import at.gv.egiz.eaaf.core.api.data.ExtendedPvpAttributeDefinitions;
diff --git a/connector/src/main/resources/applicationContext.xml b/connector/src/main/resources/applicationContext.xml
index 15ce0a55..ec8e79f4 100644
--- a/connector/src/main/resources/applicationContext.xml
+++ b/connector/src/main/resources/applicationContext.xml
@@ -15,16 +15,10 @@
 
   <context:annotation-config />
   <context:component-scan base-package="at.gv.egiz.eaaf.utils.springboot.ajp"/>
-
-<!--
-  <context:annotation-config />
-  <mvc:annotation-driven />
-  <mvc:default-servlet-handler />
--->
     
   <mvc:interceptors>
     <bean
-      class="at.asitplus.eidas.specific.connector.interceptor.WebFrontEndSecurityInterceptor" />
+      class="at.asitplus.eidas.specific.core.interceptor.WebFrontEndSecurityInterceptor" />
     <bean
       class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
       <property name="paramName" value="lang" />
@@ -32,22 +26,17 @@
   </mvc:interceptors>
 
   <bean id="springContextClosingHandler"
-        class="at.asitplus.eidas.specific.connector.SpringContextCloseHandler" />
-
-<!-- 
-  <context:property-placeholder
-    location="${eidas.ms.configuration}" />
-  -->
+        class="at.asitplus.eidas.specific.core.SpringContextCloseHandler" />
 
   <beans profile="deprecatedConfig">
   <bean id="BasicMSSpecificNodeConfig"
-    class="at.asitplus.eidas.specific.connector.config.BasicConfigurationProvider">
+    class="at.asitplus.eidas.specific.core.config.BasicConfigurationProvider">
     <constructor-arg value="#{systemProperties['eidas.ms.configuration']}" />
   </bean>
   </beans>
   <beans profile="!deprecatedConfig">
     <bean id="springBootMsSpecificNodeConfig"
-          class="at.asitplus.eidas.specific.connector.config.SpringBootBasicConfigurationProvider" />
+          class="at.asitplus.eidas.specific.core.config.SpringBootBasicConfigurationProvider" />
           
   </beans>
 
diff --git a/connector/src/main/resources/specific_eIDAS_connector.beans.xml b/connector/src/main/resources/specific_eIDAS_connector.beans.xml
index 34fd088b..7ac6236c 100644
--- a/connector/src/main/resources/specific_eIDAS_connector.beans.xml
+++ b/connector/src/main/resources/specific_eIDAS_connector.beans.xml
@@ -11,10 +11,8 @@
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
     http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
 
-  <import resource="common_gui.beans.xml"/>
+  <import resource="specific_eIDAS_core.beans.xml"/>
 
-  <bean id="WebResourceConfiguration"
-        class="at.asitplus.eidas.specific.connector.config.StaticResourceConfiguration" />
 
   <bean id="processEngineSignalController"
         class="at.asitplus.eidas.specific.connector.controller.ProcessEngineSignalController" />
@@ -24,15 +22,6 @@
     <property name="pvpIdpCredentials" ref="PVPEndPointCredentialProvider" />
   </bean>
 
-  <bean id="eidasNodeMetadata"
-        class="at.asitplus.eidas.specific.connector.health.EidasNodeMetadataHealthIndicator" />
-
-  <bean id="AuthenticationManager"
-        class="at.asitplus.eidas.specific.connector.auth.AuthenticationManager" />
-
-  <bean id="AuthenticationDataBuilder"
-        class="at.asitplus.eidas.specific.connector.builder.AuthenticationDataBuilder" />
-
   <bean id="PVPEndPointConfiguration"
         class="at.asitplus.eidas.specific.connector.config.PvpEndPointConfiguration" />
 
@@ -66,44 +55,12 @@
     <property name="metadataProvider" ref="PVPMetadataProvider" />
   </bean>
 
-  <bean id="eaafProtocolAuthenticationService"
-        class="at.gv.egiz.eaaf.core.impl.idp.auth.services.ProtocolAuthenticationService">
-    <property name="guiBuilder" ref="mvcGUIBuilderImpl" />
-  </bean>
-
-  <bean id="securePendingRequestIdGeneration"
-        class="at.gv.egiz.eaaf.core.impl.utils.SecurePendingRequestIdGenerationStrategy" />
-
   <bean id="PVPMetadataProvider"
         class="at.asitplus.eidas.specific.connector.provider.PvpMetadataProvider" />
 
   <bean id="PVPSubjectNameGenerator"
         class="at.asitplus.eidas.specific.connector.builder.PvpSubjectNameGenerator" />
 
-  <bean id="LoALevelMapper"
-        class="at.asitplus.eidas.specific.connector.mapper.LoALevelMapper" />
-
-  <bean id="GUIBuilderConfigurationFactory"
-        class="at.asitplus.eidas.specific.connector.gui.GuiBuilderConfigurationFactory" />
-
-  <bean id="velocityGUIBuilderImpl"
-        class="at.asitplus.eidas.specific.connector.gui.DefaultVelocityGuiBuilderImpl" />
-
-  <bean id="mvcGUIBuilderImpl"
-        class="at.gv.egiz.eaaf.core.impl.gui.builder.SpringMvcGuiFormBuilderImpl" />
-
-  <bean id="StatusMessageProvider"
-        class="at.asitplus.eidas.specific.connector.provider.StatusMessageProvider" />
-
-  <bean id="eidasRevisionLogger"
-        class="at.asitplus.eidas.specific.connector.logger.RevisionLogger" />
-
-  <bean id="eidasStatisticLogger"
-        class="at.asitplus.eidas.specific.connector.logger.StatisticLogger" />
-
-  <bean id="defaultErrorHandler"
-        class="at.gv.egiz.eaaf.core.impl.idp.auth.services.DefaultErrorService"/>
-  
 
   <!-- Tasks -->
   <bean id="GenerateCountrySelectionFrameTask"
diff --git a/connector/src/main/resources/specific_eIDAS_connector.storage.beans.xml b/connector/src/main/resources/specific_eIDAS_connector.storage.beans.xml
deleted file mode 100644
index 2e4d1742..00000000
--- a/connector/src/main/resources/specific_eIDAS_connector.storage.beans.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xmlns:context="http://www.springframework.org/schema/context"
-  xmlns:tx="http://www.springframework.org/schema/tx"
-  xmlns:aop="http://www.springframework.org/schema/aop"
-  xmlns:mvc="http://www.springframework.org/schema/mvc"
-  xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
-    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
-    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
-    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
-    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
-
-  <import
-    resource="classpath:specificCommunicationDefinitionApplicationContext.xml" />
-
-  <!-- <bean id="SimpleInMemoryTransactionStorage" class="at.asitplus.eidas.specific.connector.storage.SimpleInMemoryTransactionStorage" 
-    /> -->
-
-  <bean id="eIDASCacheTransactionStoreDecorator"
-    class="at.asitplus.eidas.specific.connector.storage.EidasCacheTransactionStoreDecorator" />
-
-  <bean id="CacheWitheIDASBackend"
-    class="at.asitplus.eidas.specific.connector.storage.CacheWithEidasBackend">
-    <constructor-arg ref="msNodeCacheImpl" />
-  </bean>
-
-  <bean id="msNodeCacheImpl"
-    class="eu.eidas.auth.cache.ConcurrentCacheServiceIgniteSpecificCommunicationImpl">
-    <property name="igniteInstanceInitializerSpecificCommunication" ref="eidasIgniteInstanceInitializerSpecificCommunication" />
-    <property name="cacheName" value="msConnectorCache" />
-  </bean>
-
-  <bean id="IgniteClusterState"
-        class="at.asitplus.eidas.specific.connector.health.IgniteClusterHealthIndicator">
-    <property name="igniteInstanceInitializerSpecificCommunication" ref="eidasIgniteInstanceInitializerSpecificCommunication" />        
-  </bean>
-
-
-  <!-- bean id="defaultHazelcastInstance" class="java.lang.String"> <constructor-arg 
-    value="eidasHazelcastInstance"/> </bean> <bean id="eidasHazelcastInstanceInitializer" 
-    class=" eu.eidas.auth.commons.cache.HazelcastInstanceInitializer" init-method="initializeInstance" 
-    lazy-init="true"> <property name="hazelcastConfigfileName" value="#{eidasConfigRepository}hazelcast.xml"/> 
-    <property name="hazelcastInstanceName" ref="defaultHazelcastInstance"/> </bean> 
-    <bean id="springServiceCMapspecificMSSpCorProviderProd" class="eu.eidas.auth.commons.cache.ConcurrentMapServiceDistributedImpl" 
-    lazy-init="true"> <property name="hazelcastInstanceInitializer" ref="eidasHazelcastInstanceInitializer"/> 
-    <property name="cacheName" value="specificSpRequestCorrelationCacheService"/> 
-    </bean> <bean id="springServiceCMapspecificMSSpCorProviderDev" class="eu.eidas.auth.commons.cache.ConcurrentMapServiceDefaultImpl"> 
-    <property name="expireAfterAccess" value="1800"/> <property name="maximumSize" 
-    value="1000"/> </bean -->
-
-</beans>
\ No newline at end of file
-- 
cgit v1.2.3