aboutsummaryrefslogtreecommitdiff
path: root/connector/src
diff options
context:
space:
mode:
Diffstat (limited to 'connector/src')
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/MsSpecificEidasNodeSpringResourceProvider.java10
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/SpringContextCloseHandler.java170
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/attributes/AuthBlockAttributeBuilder.java4
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/attributes/EidasBindAttributeBuilder.java13
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/auth/AuthenticationManager.java60
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/builder/AuthenticationDataBuilder.java257
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/config/PvpEndPointConfiguration.java2
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/config/PvpMetadataConfiguration.java2
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/config/StaticResourceConfiguration.java220
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/controller/ProcessEngineSignalController.java2
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/controller/Pvp2SProfileEndpoint.java2
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/health/EidasNodeMetadataHealthIndicator.java69
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/health/IgniteClusterHealthIndicator.java52
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/interceptor/WebFrontEndSecurityInterceptor.java90
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/logger/RevisionLogger.java110
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/logger/StatisticLogger.java141
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/mapper/LoALevelMapper.java60
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/processes/CountrySelectionProcessImpl.java2
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/processes/tasks/EvaluateCountrySelectionTask.java2
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/processes/tasks/GenerateCountrySelectionFrameTask.java6
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/provider/PvpEndPointCredentialProvider.java2
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/provider/PvpMetadataProvider.java2
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/provider/StatusMessageProvider.java182
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/storage/CacheWithEidasBackend.java35
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/storage/EidasCacheTransactionStoreDecorator.java180
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/storage/SimpleInMemoryTransactionStorage.java169
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/storage/TransactionStoreElement.java70
-rw-r--r--connector/src/main/java/at/asitplus/eidas/specific/connector/verification/AuthnRequestValidator.java4
-rw-r--r--connector/src/main/resources/applicationContext.xml19
-rw-r--r--connector/src/main/resources/specific_eIDAS_connector.beans.xml45
-rw-r--r--connector/src/main/resources/specific_eIDAS_connector.storage.beans.xml52
-rw-r--r--connector/src/test/java/at/asitplus/eidas/specific/connector/test/attributes/AuthBlockAttributeBuilderTest.java8
-rw-r--r--connector/src/test/java/at/asitplus/eidas/specific/connector/test/attributes/EidasBindAttributeBuilderTest.java9
-rw-r--r--connector/src/test/java/at/asitplus/eidas/specific/connector/test/config/BasicConfigurationTest.java4
-rw-r--r--connector/src/test/java/at/asitplus/eidas/specific/connector/test/controller/ProcessEngineSignalControllerTest.java2
-rw-r--r--connector/src/test/java/at/asitplus/eidas/specific/connector/test/health/EidasNodeMetadataHealthIndicatorNoEndpointTest.java70
-rw-r--r--connector/src/test/java/at/asitplus/eidas/specific/connector/test/health/EidasNodeMetadataHealthIndicatorTest.java102
-rw-r--r--connector/src/test/java/at/asitplus/eidas/specific/connector/test/saml2/Pvp2SProfileEndPointTest.java4
-rw-r--r--connector/src/test/java/at/asitplus/eidas/specific/connector/test/task/EvaluateCountrySelectionTaskTest.java4
-rw-r--r--connector/src/test/java/at/asitplus/eidas/specific/connector/test/task/GenerateCountrySelectionFrameTaskTest.java2
-rw-r--r--connector/src/test/java/at/asitplus/eidas/specific/connector/test/utils/AuthenticationDataBuilderTest.java636
-rw-r--r--connector/src/test/java/at/asitplus/eidas/specific/connector/test/utils/AuthnRequestValidatorTest.java8
-rw-r--r--connector/src/test/java/at/asitplus/eidas/specific/connector/test/utils/CountrySelectionProcessImplTest.java2
-rw-r--r--connector/src/test/resources/config/logback_config.xml4
-rw-r--r--connector/src/test/resources/spring/SpringTest-context_basic_test.xml22
-rw-r--r--connector/src/test/resources/spring/SpringTest-context_healthcheck.xml22
-rw-r--r--connector/src/test/resources/spring/SpringTest-context_simple_storage.xml15
-rw-r--r--connector/src/test/resources/spring/SpringTest_connector.beans.xml61
48 files changed, 56 insertions, 2953 deletions
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
diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/attributes/AuthBlockAttributeBuilderTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/attributes/AuthBlockAttributeBuilderTest.java
index 5c0a1420..6c6276c3 100644
--- a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/attributes/AuthBlockAttributeBuilderTest.java
+++ b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/attributes/AuthBlockAttributeBuilderTest.java
@@ -14,7 +14,7 @@ import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import at.asitplus.eidas.specific.connector.attributes.AuthBlockAttributeBuilder;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;
+import at.asitplus.eidas.specific.core.MsEidasNodeConstants;
import at.gv.egiz.eaaf.core.api.data.ExtendedPvpAttributeDefinitions;
import at.gv.egiz.eaaf.core.api.idp.IAttributeBuilder;
import at.gv.egiz.eaaf.core.api.idp.IAuthData;
@@ -62,7 +62,7 @@ public class AuthBlockAttributeBuilderTest extends AbstractAttributeBuilderTest
log.info("starting: " + mTestName);
try {
final IAuthData authData = buildAuthData();
- ((AuthenticationData) authData).setGenericData(Constants.SZR_AUTHBLOCK, JSW);
+ ((AuthenticationData) authData).setGenericData(MsEidasNodeConstants.AUTH_DATA_SZR_AUTHBLOCK, JSW);
final String value = attrBuilde.build(spConfig, authData, gen);
@@ -80,7 +80,7 @@ public class AuthBlockAttributeBuilderTest extends AbstractAttributeBuilderTest
log.info("starting: " + mTestName);
try {
final IAuthData authData = buildAuthData();
- ((AuthenticationData) authData).setGenericData(Constants.SZR_AUTHBLOCK, null);
+ ((AuthenticationData) authData).setGenericData(MsEidasNodeConstants.AUTH_DATA_SZR_AUTHBLOCK, null);
final String value = attrBuilde.build(spConfig, authData, gen);
Assert.fail("Attr. Builder provide no 'UnavailableAttributeException'");
@@ -99,7 +99,7 @@ public class AuthBlockAttributeBuilderTest extends AbstractAttributeBuilderTest
log.info("starting: " + mTestName);
try {
final IAuthData authData = buildAuthData();
- ((AuthenticationData) authData).setGenericData(Constants.SZR_AUTHBLOCK, "");
+ ((AuthenticationData) authData).setGenericData(MsEidasNodeConstants.AUTH_DATA_SZR_AUTHBLOCK, "");
final String value = attrBuilde.build(spConfig, authData, gen);
Assert.fail("Attr. Builder provide no 'UnavailableAttributeException'");
diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/attributes/EidasBindAttributeBuilderTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/attributes/EidasBindAttributeBuilderTest.java
index 9a2c6cdc..969a22fb 100644
--- a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/attributes/EidasBindAttributeBuilderTest.java
+++ b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/attributes/EidasBindAttributeBuilderTest.java
@@ -1,7 +1,5 @@
package at.asitplus.eidas.specific.connector.test.attributes;
-import static at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants.EIDAS_BIND;
-
import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
@@ -12,6 +10,7 @@ import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import at.asitplus.eidas.specific.connector.attributes.EidasBindAttributeBuilder;
+import at.asitplus.eidas.specific.core.MsEidasNodeConstants;
import at.gv.egiz.eaaf.core.api.data.ExtendedPvpAttributeDefinitions;
import at.gv.egiz.eaaf.core.api.idp.IAttributeBuilder;
import at.gv.egiz.eaaf.core.api.idp.IAuthData;
@@ -54,7 +53,7 @@ public class EidasBindAttributeBuilderTest extends AbstractAttributeBuilderTest
log.info("starting: " + mTestName);
try {
final IAuthData authData = buildAuthData();
- ((AuthenticationData) authData).setGenericData(EIDAS_BIND, "vuG8w29GT0");
+ ((AuthenticationData) authData).setGenericData(MsEidasNodeConstants.AUTH_DATA_EIDAS_BIND, "vuG8w29GT0");
final String value = attrBuilde.build(spConfig, authData, gen);
@@ -70,7 +69,7 @@ public class EidasBindAttributeBuilderTest extends AbstractAttributeBuilderTest
log.info("starting: " + mTestName);
try {
final IAuthData authData = buildAuthData();
- ((AuthenticationData) authData).setGenericData(EIDAS_BIND, null);
+ ((AuthenticationData) authData).setGenericData(MsEidasNodeConstants.AUTH_DATA_EIDAS_BIND, null);
final String value = attrBuilde.build(spConfig, authData, gen);
Assert.fail("Attr. Builder provide no 'UnavailableAttributeException'");
@@ -89,7 +88,7 @@ public class EidasBindAttributeBuilderTest extends AbstractAttributeBuilderTest
log.info("starting: " + mTestName);
try {
final IAuthData authData = buildAuthData();
- ((AuthenticationData) authData).setGenericData(EIDAS_BIND, "");
+ ((AuthenticationData) authData).setGenericData(MsEidasNodeConstants.AUTH_DATA_EIDAS_BIND, "");
final String value = attrBuilde.build(spConfig, authData, gen);
Assert.fail("Attr. Builder provide no 'UnavailableAttributeException'");
diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/config/BasicConfigurationTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/config/BasicConfigurationTest.java
index 80307ea2..f9a43b52 100644
--- a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/config/BasicConfigurationTest.java
+++ b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/config/BasicConfigurationTest.java
@@ -17,7 +17,7 @@ import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
-import at.asitplus.eidas.specific.connector.config.ServiceProviderConfiguration;
+import at.asitplus.eidas.specific.core.config.ServiceProviderConfiguration;
import at.gv.egiz.eaaf.core.api.data.EaafConstants;
import at.gv.egiz.eaaf.core.api.idp.IConfigurationWithSP;
import at.gv.egiz.eaaf.core.api.idp.ISpConfiguration;
@@ -28,7 +28,7 @@ import net.shibboleth.utilities.java.support.component.ComponentInitializationEx
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({
"/applicationContext.xml",
- "/specific_eIDAS_connector.beans.xml",
+ "/spring/SpringTest_connector.beans.xml",
"/eaaf_core.beans.xml",
"/eaaf_pvp.beans.xml",
"/eaaf_pvp_idp.beans.xml",
diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/controller/ProcessEngineSignalControllerTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/controller/ProcessEngineSignalControllerTest.java
index 5b612036..499c5937 100644
--- a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/controller/ProcessEngineSignalControllerTest.java
+++ b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/controller/ProcessEngineSignalControllerTest.java
@@ -25,7 +25,7 @@ import at.gv.egiz.eaaf.core.exceptions.EaafStorageException;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({
"/applicationContext.xml",
- "/specific_eIDAS_connector.beans.xml",
+ "/spring/SpringTest_connector.beans.xml",
"/eaaf_core.beans.xml",
"/eaaf_pvp.beans.xml",
"/eaaf_pvp_idp.beans.xml",
diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/health/EidasNodeMetadataHealthIndicatorNoEndpointTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/health/EidasNodeMetadataHealthIndicatorNoEndpointTest.java
deleted file mode 100644
index b04a5bdb..00000000
--- a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/health/EidasNodeMetadataHealthIndicatorNoEndpointTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package at.asitplus.eidas.specific.connector.test.health;
-
-import java.io.IOException;
-
-import org.apache.commons.io.IOUtils;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.actuate.health.Health;
-import org.springframework.http.MediaType;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.TestPropertySource;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.test.context.web.WebAppConfiguration;
-
-import at.asitplus.eidas.specific.connector.health.EidasNodeMetadataHealthIndicator;
-import okhttp3.mockwebserver.MockResponse;
-import okhttp3.mockwebserver.MockWebServer;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration({
- "/spring/SpringTest-context_healthcheck.xml" })
-@TestPropertySource(locations = {"classpath:/config/junit_config_2_springboot.properties"})
-@WebAppConfiguration
-public class EidasNodeMetadataHealthIndicatorNoEndpointTest {
-
- @Autowired EidasNodeMetadataHealthIndicator health;
-
- private static MockWebServer mockWebServer = null;
-
- /**
- * Testclass initializer.
- *
- * @throws IOException In case of an error
- */
- @BeforeClass
- public static void classInitializer() throws IOException {
- mockWebServer = new MockWebServer();
- mockWebServer.start(40900);
- mockWebServer.url("/mockup");
-
- }
-
- @AfterClass
- public static void resetTestEnviroment() throws NoSuchFieldException, SecurityException,
- IllegalArgumentException, IllegalAccessException, IOException {
- mockWebServer.shutdown();
-
- }
-
- @Test
- public void noEndpointInConfiguration() throws IOException {
- //set-up status
- mockWebServer.enqueue(new MockResponse().setResponseCode(200)
- .setBody(IOUtils.toString(EidasNodeMetadataHealthIndicatorNoEndpointTest.class
- .getResourceAsStream("/config/log4j.properties"), "UTF-8"))
- .setHeader("Content-Type", MediaType.APPLICATION_XML));
-
- //perform test
- Health status = health.health();
-
- //validate state
- Assert.assertEquals("wrong healthState", Health.unknown().build().getStatus(), status.getStatus());
-
- }
-
-}
diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/health/EidasNodeMetadataHealthIndicatorTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/health/EidasNodeMetadataHealthIndicatorTest.java
deleted file mode 100644
index b044d4d2..00000000
--- a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/health/EidasNodeMetadataHealthIndicatorTest.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package at.asitplus.eidas.specific.connector.test.health;
-
-import java.io.IOException;
-
-import org.apache.commons.io.IOUtils;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.actuate.health.Health;
-import org.springframework.http.MediaType;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.TestPropertySource;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.test.context.web.WebAppConfiguration;
-
-import at.asitplus.eidas.specific.connector.health.EidasNodeMetadataHealthIndicator;
-import okhttp3.mockwebserver.MockResponse;
-import okhttp3.mockwebserver.MockWebServer;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration({
- "/spring/SpringTest-context_healthcheck.xml" })
-@TestPropertySource(locations = {"classpath:/config/junit_config_1_springboot.properties"})
-@WebAppConfiguration
-public class EidasNodeMetadataHealthIndicatorTest {
-
- @Autowired EidasNodeMetadataHealthIndicator health;
-
- private static MockWebServer mockWebServer = null;
-
- /**
- * Testclass initializer.
- *
- * @throws IOException In case of an error
- */
- @BeforeClass
- public static void classInitializer() throws IOException {
- mockWebServer = new MockWebServer();
- mockWebServer.start(40900);
- mockWebServer.url("/mockup");
-
- }
-
- @AfterClass
- public static void resetTestEnviroment() throws NoSuchFieldException, SecurityException,
- IllegalArgumentException, IllegalAccessException, IOException {
- mockWebServer.shutdown();
-
- }
-
- @Test
- public void httpStatusCode500() throws IOException {
- //set-up status
- mockWebServer.enqueue(new MockResponse().setResponseCode(500)
- .setBody(IOUtils.toString(EidasNodeMetadataHealthIndicatorTest.class
- .getResourceAsStream("/data/metadata_valid.xml"), "UTF-8"))
- .setHeader("Content-Type", MediaType.APPLICATION_XML));
-
- //perform test
- Health status = health.health();
-
- //validate state
- Assert.assertEquals("wrong healthState", Health.down().build().getStatus(), status.getStatus());
-
- }
-
- @Test
- public void httpStatusCode200() throws IOException {
- //set-up status
- mockWebServer.enqueue(new MockResponse().setResponseCode(200)
- .setBody(IOUtils.toString(EidasNodeMetadataHealthIndicatorTest.class
- .getResourceAsStream("/data/metadata_valid.xml"), "UTF-8"))
- .setHeader("Content-Type", MediaType.APPLICATION_XML));
-
- //perform test
- Health status = health.health();
-
- //validate state
- Assert.assertEquals("wrong healthState", Health.up().build().getStatus(), status.getStatus());
-
- }
-
- @Test
- public void noXmlResponse() throws IOException {
- //set-up status
- mockWebServer.enqueue(new MockResponse().setResponseCode(200)
- .setBody(IOUtils.toString(EidasNodeMetadataHealthIndicatorTest.class
- .getResourceAsStream("/config/log4j.properties"), "UTF-8"))
- .setHeader("Content-Type", MediaType.APPLICATION_XML));
-
- //perform test
- Health status = health.health();
-
- //validate state
- Assert.assertEquals("wrong healthState", Health.down().build().getStatus(), status.getStatus());
-
- }
-
-}
diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/saml2/Pvp2SProfileEndPointTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/saml2/Pvp2SProfileEndPointTest.java
index 6b39bd76..ebc07680 100644
--- a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/saml2/Pvp2SProfileEndPointTest.java
+++ b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/saml2/Pvp2SProfileEndPointTest.java
@@ -47,10 +47,10 @@ import org.springframework.util.Base64Utils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
-import at.asitplus.eidas.specific.connector.MsEidasNodeConstants;
import at.asitplus.eidas.specific.connector.controller.Pvp2SProfileEndpoint;
import at.asitplus.eidas.specific.connector.provider.PvpEndPointCredentialProvider;
import at.asitplus.eidas.specific.connector.provider.PvpMetadataProvider;
+import at.asitplus.eidas.specific.core.MsEidasNodeConstants;
import at.gv.egiz.eaaf.core.api.IRequest;
import at.gv.egiz.eaaf.core.api.IRequestStorage;
import at.gv.egiz.eaaf.core.exceptions.EaafException;
@@ -64,7 +64,7 @@ import net.shibboleth.utilities.java.support.xml.XMLParserException;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({
"/applicationContext.xml",
- "/specific_eIDAS_connector.beans.xml",
+ "/spring/SpringTest_connector.beans.xml",
"/eaaf_core.beans.xml",
"/eaaf_pvp.beans.xml",
"/eaaf_pvp_idp.beans.xml",
diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/task/EvaluateCountrySelectionTaskTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/task/EvaluateCountrySelectionTaskTest.java
index 4bff9416..abfc60ff 100644
--- a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/task/EvaluateCountrySelectionTaskTest.java
+++ b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/task/EvaluateCountrySelectionTaskTest.java
@@ -19,8 +19,8 @@ import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
-import at.asitplus.eidas.specific.connector.MsEidasNodeConstants;
import at.asitplus.eidas.specific.connector.processes.tasks.EvaluateCountrySelectionTask;
+import at.asitplus.eidas.specific.core.MsEidasNodeConstants;
import at.gv.egiz.eaaf.core.api.data.EaafConstants;
import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException;
import at.gv.egiz.eaaf.core.impl.idp.controller.tasks.AbstractLocaleAuthServletTask;
@@ -30,7 +30,7 @@ import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({
"/applicationContext.xml",
- "/specific_eIDAS_connector.beans.xml",
+ "/spring/SpringTest_connector.beans.xml",
"/eaaf_core.beans.xml",
"/eaaf_pvp.beans.xml",
"/eaaf_pvp_idp.beans.xml",
diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/task/GenerateCountrySelectionFrameTaskTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/task/GenerateCountrySelectionFrameTaskTest.java
index 2aab286f..746c8375 100644
--- a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/task/GenerateCountrySelectionFrameTaskTest.java
+++ b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/task/GenerateCountrySelectionFrameTaskTest.java
@@ -29,7 +29,7 @@ import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({
"/applicationContext.xml",
- "/specific_eIDAS_connector.beans.xml",
+ "/spring/SpringTest_connector.beans.xml",
"/eaaf_core.beans.xml",
"/eaaf_pvp.beans.xml",
"/eaaf_pvp_idp.beans.xml",
diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/utils/AuthenticationDataBuilderTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/utils/AuthenticationDataBuilderTest.java
deleted file mode 100644
index cd183088..00000000
--- a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/utils/AuthenticationDataBuilderTest.java
+++ /dev/null
@@ -1,636 +0,0 @@
-package at.asitplus.eidas.specific.connector.test.utils;
-
-import static at.asitplus.eidas.specific.connector.MsEidasNodeConstants.PROP_CONFIG_SP_NEW_EID_MODE;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertThrows;
-import static org.junit.Assert.assertTrue;
-
-import java.io.IOException;
-import java.security.PublicKey;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.xml.transform.TransformerException;
-
-import org.apache.commons.lang3.RandomStringUtils;
-import org.apache.commons.lang3.RandomUtils;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.opensaml.core.config.InitializationException;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.i18n.LocaleContextHolder;
-import org.springframework.mock.web.MockHttpServletRequest;
-import org.springframework.mock.web.MockHttpServletResponse;
-import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import org.springframework.test.context.web.WebAppConfiguration;
-import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.context.request.ServletRequestAttributes;
-import org.w3c.dom.Element;
-
-import at.asitplus.eidas.specific.connector.builder.AuthenticationDataBuilder;
-import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;
-import at.asitplus.eidas.specific.modules.msproxyservice.MsProxyServiceConstants;
-import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants;
-import at.gv.egiz.eaaf.core.api.data.EaafConstants;
-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.IConfiguration;
-import at.gv.egiz.eaaf.core.api.idp.auth.data.IIdentityLink;
-import at.gv.egiz.eaaf.core.exceptions.EaafAuthenticationException;
-import at.gv.egiz.eaaf.core.exceptions.EaafBuilderException;
-import at.gv.egiz.eaaf.core.exceptions.EaafParserException;
-import at.gv.egiz.eaaf.core.exceptions.EaafStorageException;
-import at.gv.egiz.eaaf.core.impl.builder.BpkBuilder;
-import at.gv.egiz.eaaf.core.impl.idp.EidAuthenticationData;
-import at.gv.egiz.eaaf.core.impl.idp.auth.data.AuthProcessDataWrapper;
-import at.gv.egiz.eaaf.core.impl.idp.auth.data.EidAuthProcessDataWrapper;
-import at.gv.egiz.eaaf.core.impl.idp.auth.data.SimpleIdentityLinkAssertionParser;
-import at.gv.egiz.eaaf.core.impl.idp.module.test.DummySpConfiguration;
-import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl;
-import at.gv.egiz.eaaf.modules.pvp2.impl.opensaml.initialize.EaafOpenSaml3xInitializer;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-
-@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration({ "/applicationContext.xml", "/spring/SpringTest_connector.beans.xml", "/eaaf_core.beans.xml",
- "/eaaf_pvp.beans.xml", "/eaaf_pvp_idp.beans.xml", "/spring/SpringTest-context_simple_storage.xml" })
-@ActiveProfiles(profiles = {"deprecatedConfig"})
-@WebAppConfiguration
-public class AuthenticationDataBuilderTest {
-
- @Autowired
- private AuthenticationDataBuilder authenticationDataBuilder;
-
- @Autowired(required = true)
- private IConfiguration basicConfig;
-
- private MockHttpServletRequest httpReq;
- private MockHttpServletResponse httpResp;
- private TestRequestImpl pendingReq;
-
- private DummySpConfiguration oaParam;
- private Map<String, String> spConfig;
-
- private String eidasBind;
- private String authBlock;
-
- @BeforeClass
- public static void classInitializer() throws InitializationException, ComponentInitializationException {
- final String current = new java.io.File(".").toURI().toString();
- System.setProperty("eidas.ms.configuration", current
- + "src/test/resources/config/junit_config_3.properties");
-
- EaafOpenSaml3xInitializer.eaafInitialize();
- }
-
- @Before
- public void initialize() throws EaafStorageException {
- httpReq = new MockHttpServletRequest("POST", "https://localhost/ms_connector");
- httpResp = new MockHttpServletResponse();
- RequestContextHolder.resetRequestAttributes();
- RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp));
-
- spConfig = new HashMap<>();
- spConfig.put(EaafConfigConstants.SERVICE_UNIQUEIDENTIFIER, "testSp");
- spConfig.put("target", "urn:publicid:gv.at:cdid+XX");
- spConfig.put(PROP_CONFIG_SP_NEW_EID_MODE, "true");
- oaParam = new DummySpConfiguration(spConfig, basicConfig);
-
- pendingReq = new TestRequestImpl();
- pendingReq.setAuthUrl("https://localhost/ms_connector");
- pendingReq.setPendingReqId(RandomStringUtils.randomAlphanumeric(10));
- pendingReq.setPiiTransactionId(RandomStringUtils.randomAlphanumeric(10));
- pendingReq.setSpConfig(oaParam);
- authBlock = RandomStringUtils.randomAlphanumeric(20);
- eidasBind = RandomStringUtils.randomAlphanumeric(20);
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setQaaLevel(EaafConstants.EIDAS_LOA_PREFIX + RandomStringUtils.randomAlphabetic(5));
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setGenericDataToSession(
- PvpAttributeDefinitions.EID_ISSUING_NATION_NAME,
- RandomStringUtils.randomAlphabetic(2).toUpperCase());
-
- LocaleContextHolder.resetLocaleContext();
-
- }
-
- @Test
- public void eidasProxyMode() throws EaafAuthenticationException, EaafStorageException {
- // initialize state
- boolean isTestIdentity = RandomUtils.nextBoolean();
- pendingReq.getSessionData(EidAuthProcessDataWrapper.class).setTestIdentity(isTestIdentity);
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setEidProcess(true);
-
- String givenName = RandomStringUtils.randomAlphabetic(10);
- String familyName = RandomStringUtils.randomAlphabetic(10);
- String dateOfBirth = "1956-12-08";
- String bpk = RandomStringUtils.randomAlphanumeric(10);
- String cc = pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .getGenericDataFromSession(PvpAttributeDefinitions.EID_ISSUING_NATION_NAME, String.class);
- String spC = RandomStringUtils.randomAlphabetic(2).toUpperCase();
-
- spConfig.put("target", EaafConstants.URN_PREFIX_EIDAS + cc + "+" + spC);
-
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setEidProcess(true);
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setForeigner(false);
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(PvpAttributeDefinitions.GIVEN_NAME_NAME, givenName);
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(PvpAttributeDefinitions.PRINCIPAL_NAME_NAME, familyName);
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(PvpAttributeDefinitions.BIRTHDATE_NAME, dateOfBirth);
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(MsProxyServiceConstants.ATTR_EIDAS_PERSONAL_IDENTIFIER, bpk);
-
- //set LoA level attribute instead of explicit session-data
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(PvpAttributeDefinitions.EID_CITIZEN_EIDAS_QAA_LEVEL_NAME,
- pendingReq.getSessionData(AuthProcessDataWrapper.class).getQaaLevel());
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setQaaLevel(null);
-
-
-
- // execute test
- IAuthData authData = authenticationDataBuilder.buildAuthenticationData(pendingReq);
-
-
- // validate state
- Assert.assertNotNull("AuthData null", authData);
- Assert.assertNull("authBlock null", authData.getGenericData(Constants.SZR_AUTHBLOCK, String.class));
- Assert.assertNull("eidasBind null", authData.getGenericData(Constants.EIDAS_BIND, String.class));
-
- Assert.assertEquals("LoA", pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .getGenericDataFromSession(PvpAttributeDefinitions.EID_CITIZEN_EIDAS_QAA_LEVEL_NAME, String.class),
- authData.getEidasQaaLevel());
- Assert.assertEquals("CitizenCountry", cc, authData.getCiticenCountryCode());
- Assert.assertEquals("familyName", familyName, authData.getFamilyName());
- Assert.assertEquals("givenName", givenName, authData.getGivenName());
- Assert.assertEquals("DateOfBirth", dateOfBirth, authData.getDateOfBirth());
-
- Assert.assertEquals("bPK", pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .getGenericDataFromSession(MsProxyServiceConstants.ATTR_EIDAS_PERSONAL_IDENTIFIER, String.class),
- authData.getGenericData(MsProxyServiceConstants.ATTR_EIDAS_PERSONAL_IDENTIFIER, String.class));
-
- Assert.assertEquals("testIdentity flag",
- isTestIdentity ? EidIdentityStatusLevelValues.TESTIDENTITY : EidIdentityStatusLevelValues.IDENTITY,
- ((EidAuthenticationData)authData).getEidStatus());
- assertFalse("mandate flag", ((EidAuthenticationData)authData).isUseMandate());
-
- }
-
- @Test
- public void eidasProxyModeWithJurMandate() throws EaafAuthenticationException, EaafStorageException {
- // initialize state
- injectRepresentativeInfosIntoSession();
-
- String commonMandate = RandomStringUtils.randomAlphabetic(10);
-
- // set constant country-code and sourcePin to check hashed eIDAS identifier
- String sourcePinMandate = "asfdsadfsadfsafsdafsadfasr";
- spConfig.put("target", EaafConstants.URN_PREFIX_EIDAS + "AT+EE");
-
- // set nat. person mandate information
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setUseMandates(true);
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_LEG_PER_FULL_NAME_NAME, commonMandate);
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_LEG_PER_SOURCE_PIN_NAME, sourcePinMandate);
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_LEG_PER_SOURCE_PIN_TYPE_NAME,
- EaafConstants.URN_PREFIX_BASEID + "+XFN");
-
- // execute test
- IAuthData authData = authenticationDataBuilder.buildAuthenticationData(pendingReq);
-
-
- // validate state
- Assert.assertNotNull("AuthData null", authData);
- assertTrue("mandate flag", ((EidAuthenticationData)authData).isUseMandate());
-
- //check mandate informations
- checkGenericAttribute(authData, PvpAttributeDefinitions.MANDATE_LEG_PER_FULL_NAME_NAME, commonMandate);
- checkGenericAttribute(authData, MsProxyServiceConstants.ATTR_EIDAS_JUR_MANDATOR_PERSONAL_IDENTIFIER,
- "AT/EE/urn:publicid:gv.at:baseid+XFN+asfdsadfsadfsafsdafsadfasr");
-
- }
-
- @Test
- public void eidasProxyModeWithJurMandateMissingAttribute() throws EaafAuthenticationException, EaafStorageException {
- // initialize state
- injectRepresentativeInfosIntoSession();
-
- // set constant country-code and sourcePin to check hashed eIDAS identifier
- String sourcePinMandate = "asfdsadfsadfsafsdafsadfasr";
- spConfig.put("target", EaafConstants.URN_PREFIX_EIDAS + "AT+EE");
-
- // set nat. person mandate information
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setUseMandates(true);
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_LEG_PER_SOURCE_PIN_NAME, sourcePinMandate);
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_LEG_PER_SOURCE_PIN_TYPE_NAME,
- EaafConstants.URN_PREFIX_BASEID + "+XFN");
-
- // execute test
- // execute test
- EaafAuthenticationException error = assertThrows(EaafAuthenticationException.class,
- () -> authenticationDataBuilder.buildAuthenticationData(pendingReq));
- Assert.assertEquals("wrong errorId", "builder.11", error.getErrorId());
-
- }
-
- @Test
- public void eidasProxyModeWithNatMandate() throws EaafAuthenticationException, EaafStorageException {
- // initialize state
- injectRepresentativeInfosIntoSession();
-
- String givenNameMandate = RandomStringUtils.randomAlphabetic(10);
- String familyNameMandate = RandomStringUtils.randomAlphabetic(10);
- String dateOfBirthMandate = "1957-09-15";
- String bpkMandate = RandomStringUtils.randomAlphanumeric(10);
-
- // set nat. person mandate information
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setUseMandates(true);
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_GIVEN_NAME_NAME, givenNameMandate);
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_FAMILY_NAME_NAME, familyNameMandate);
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_BIRTHDATE_NAME, dateOfBirthMandate);
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_BPK_NAME, "AT+XX:" + bpkMandate);
-
- // execute test
- IAuthData authData = authenticationDataBuilder.buildAuthenticationData(pendingReq);
-
-
- // validate state
- Assert.assertNotNull("AuthData null", authData);
- assertTrue("mandate flag", ((EidAuthenticationData)authData).isUseMandate());
-
- //check mandate informations
- checkGenericAttribute(authData, PvpAttributeDefinitions.MANDATE_NAT_PER_GIVEN_NAME_NAME, givenNameMandate);
- checkGenericAttribute(authData, PvpAttributeDefinitions.MANDATE_NAT_PER_FAMILY_NAME_NAME, familyNameMandate);
- checkGenericAttribute(authData, PvpAttributeDefinitions.MANDATE_NAT_PER_BIRTHDATE_NAME, "1957-09-15");
- checkGenericAttribute(authData, MsProxyServiceConstants.ATTR_EIDAS_NAT_MANDATOR_PERSONAL_IDENTIFIER, bpkMandate);
-
- }
-
- @Test
- public void eidasProxyModeWithNatMandateWrongBpkFormat() throws EaafAuthenticationException, EaafStorageException {
- // initialize state
- injectRepresentativeInfosIntoSession();
-
- String givenNameMandate = RandomStringUtils.randomAlphabetic(10);
- String familyNameMandate = RandomStringUtils.randomAlphabetic(10);
- String dateOfBirthMandate = "1957-09-15";
- String bpkMandate = RandomStringUtils.randomAlphanumeric(10);
-
- // set nat. person mandate information
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setUseMandates(true);
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_GIVEN_NAME_NAME, givenNameMandate);
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_FAMILY_NAME_NAME, familyNameMandate);
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_BIRTHDATE_NAME, dateOfBirthMandate);
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_BPK_NAME, bpkMandate);
-
- // execute test
- IAuthData authData = authenticationDataBuilder.buildAuthenticationData(pendingReq);
-
-
- // validate state
- Assert.assertNotNull("AuthData null", authData);
- assertTrue("mandate flag", ((EidAuthenticationData)authData).isUseMandate());
-
- //check mandate informations
- checkGenericAttribute(authData, PvpAttributeDefinitions.MANDATE_NAT_PER_GIVEN_NAME_NAME, givenNameMandate);
- checkGenericAttribute(authData, PvpAttributeDefinitions.MANDATE_NAT_PER_FAMILY_NAME_NAME, familyNameMandate);
- checkGenericAttribute(authData, PvpAttributeDefinitions.MANDATE_NAT_PER_BIRTHDATE_NAME, "1957-09-15");
- checkGenericAttribute(authData, MsProxyServiceConstants.ATTR_EIDAS_NAT_MANDATOR_PERSONAL_IDENTIFIER, bpkMandate);
-
- }
-
- @Test
- public void eidasProxyModeWithNatMandateMissingAttribute() throws EaafAuthenticationException, EaafStorageException {
- // initialize state
- injectRepresentativeInfosIntoSession();
-
- String familyNameMandate = RandomStringUtils.randomAlphabetic(10);
- String dateOfBirthMandate = "1957-09-15";
- String bpkMandate = RandomStringUtils.randomAlphanumeric(10);
-
- // set nat. person mandate information
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setUseMandates(true);
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_FAMILY_NAME_NAME, familyNameMandate);
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_BIRTHDATE_NAME, dateOfBirthMandate);
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(PvpAttributeDefinitions.MANDATE_NAT_PER_BPK_NAME, bpkMandate);
-
- // execute test
- EaafAuthenticationException error = assertThrows(EaafAuthenticationException.class,
- () -> authenticationDataBuilder.buildAuthenticationData(pendingReq));
- Assert.assertEquals("wrong errorId", "builder.11", error.getErrorId());
-
- }
-
- @Test
- public void eidMode() throws EaafAuthenticationException, EaafStorageException {
- // initialize state
- boolean isTestIdentity = RandomUtils.nextBoolean();
- pendingReq.getSessionData(EidAuthProcessDataWrapper.class).setTestIdentity(isTestIdentity);
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setEidProcess(true);
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(Constants.SZR_AUTHBLOCK, authBlock);
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(Constants.EIDAS_BIND, eidasBind);
-
- // execute
- IAuthData authData = authenticationDataBuilder.buildAuthenticationData(pendingReq);
-
- // validate state
- Assert.assertNotNull("AuthData null", authData);
- Assert.assertNotNull("authBlock null", authData.getGenericData(Constants.SZR_AUTHBLOCK, String.class));
- Assert.assertNotNull("eidasBind null", authData.getGenericData(Constants.EIDAS_BIND, String.class));
- Assert.assertNotNull("LoA null", authData.getEidasQaaLevel());
- Assert.assertEquals("testIdentity flag",
- isTestIdentity ? EidIdentityStatusLevelValues.TESTIDENTITY : EidIdentityStatusLevelValues.IDENTITY,
- ((EidAuthenticationData)authData).getEidStatus());
-
- String authBlock = authData.getGenericData(Constants.SZR_AUTHBLOCK, String.class);
- String eidasBind = authData.getGenericData(Constants.EIDAS_BIND, String.class);
-
- Assert.assertEquals("authBlock not equal", this.authBlock, authBlock);
- Assert.assertEquals("eidasBind not equal", this.eidasBind, eidasBind);
- Assert.assertEquals("piiTransactionId",
- authData.getGenericData(ExtendedPvpAttributeDefinitions.EID_PII_TRANSACTION_ID_NAME, String.class),
- this.pendingReq.getUniquePiiTransactionIdentifier());
- Assert.assertNotNull("assertion validTo", authData.getSsoSessionValidTo());
- Assert.assertEquals("LoA", pendingReq.getSessionData(AuthProcessDataWrapper.class).getQaaLevel(),
- authData.getEidasQaaLevel());
- Assert.assertEquals("EID-ISSUING-NATION",
- pendingReq.getSessionData(AuthProcessDataWrapper.class).getGenericDataFromSession(
- PvpAttributeDefinitions.EID_ISSUING_NATION_NAME),
- authData.getCiticenCountryCode());
-
- Assert.assertNull("bPK", authData.getBpk());
- Assert.assertNull("bPKType", authData.getBpkType());
- Assert.assertNull("FamilyName", authData.getFamilyName());
- Assert.assertNull("GivenName", authData.getGivenName());
- Assert.assertNull("DateOfBirth", authData.getDateOfBirth());
- Assert.assertNull("baseId", authData.getIdentificationValue());
- Assert.assertNull("baseIdType", authData.getIdentificationType());
- Assert.assertNull("IDL", authData.getIdentityLink());
-
- }
-
- @Test
- public void moaIdMode() throws EaafAuthenticationException, EaafBuilderException {
- //initialize state
- boolean isTestIdentity = RandomUtils.nextBoolean();
- pendingReq.getSessionData(EidAuthProcessDataWrapper.class).setTestIdentity(isTestIdentity);
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setEidProcess(false);
- IIdentityLink idl = buildDummyIdl();
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setIdentityLink(idl);
-
- //execute
- IAuthData authData = authenticationDataBuilder.buildAuthenticationData(pendingReq);
-
- //validate state
- Assert.assertNotNull("AuthData null", authData);
- Assert.assertNull("authBlock null", authData.getGenericData(Constants.SZR_AUTHBLOCK, String.class));
- Assert.assertNull("eidasBind null", authData.getGenericData(Constants.EIDAS_BIND, String.class));
- Assert.assertNull("piiTransactionId",
- authData.getGenericData(ExtendedPvpAttributeDefinitions.EID_PII_TRANSACTION_ID_NAME, String.class));
-
- Assert.assertEquals("testIdentity flag",
- isTestIdentity ? EidIdentityStatusLevelValues.TESTIDENTITY : EidIdentityStatusLevelValues.IDENTITY,
- ((EidAuthenticationData)authData).getEidStatus());
-
- Assert.assertNotNull("assertion validTo", authData.getSsoSessionValidTo());
- Assert.assertNotNull("LoA null", authData.getEidasQaaLevel());
- Assert.assertEquals("LoA", pendingReq.getSessionData(AuthProcessDataWrapper.class).getQaaLevel(),
- authData.getEidasQaaLevel());
- Assert.assertEquals("EID-ISSUING-NATION",
- pendingReq.getSessionData(AuthProcessDataWrapper.class).getGenericDataFromSession(
- PvpAttributeDefinitions.EID_ISSUING_NATION_NAME),
- authData.getCiticenCountryCode());
-
- Assert.assertEquals("FamilyName", idl.getFamilyName(), authData.getFamilyName());
- Assert.assertEquals("GivenName", idl.getGivenName(), authData.getGivenName());
- Assert.assertEquals("DateOfBirth", idl.getDateOfBirth(), authData.getDateOfBirth());
- Assert.assertEquals("bPK",
- BpkBuilder.generateAreaSpecificPersonIdentifier(
- idl.getIdentificationValue(), EaafConstants.URN_PREFIX_CDID + "XX").getFirst(),
- authData.getBpk());
- Assert.assertEquals("bPKType", EaafConstants.URN_PREFIX_CDID + "XX", authData.getBpkType());
- Assert.assertNotNull("IDL", authData.getIdentityLink());
-
-
- }
-
- private void injectRepresentativeInfosIntoSession() throws EaafStorageException {
- boolean isTestIdentity = RandomUtils.nextBoolean();
- pendingReq.getSessionData(EidAuthProcessDataWrapper.class).setTestIdentity(isTestIdentity);
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setEidProcess(true);
-
- String givenName = RandomStringUtils.randomAlphabetic(10);
- String familyName = RandomStringUtils.randomAlphabetic(10);
- String dateOfBirth = "1956-12-08";
- String bpk = RandomStringUtils.randomAlphanumeric(10);
- String cc = pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .getGenericDataFromSession(PvpAttributeDefinitions.EID_ISSUING_NATION_NAME, String.class);
- String spC = RandomStringUtils.randomAlphabetic(2).toUpperCase();
- spConfig.put("target", EaafConstants.URN_PREFIX_EIDAS + cc + "+" + spC);
-
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setEidProcess(true);
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setForeigner(false);
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(PvpAttributeDefinitions.GIVEN_NAME_NAME, givenName);
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(PvpAttributeDefinitions.PRINCIPAL_NAME_NAME, familyName);
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(PvpAttributeDefinitions.BIRTHDATE_NAME, dateOfBirth);
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(MsProxyServiceConstants.ATTR_EIDAS_PERSONAL_IDENTIFIER, bpk);
-
- //set LoA level attribute instead of explicit session-data
- pendingReq.getSessionData(AuthProcessDataWrapper.class)
- .setGenericDataToSession(PvpAttributeDefinitions.EID_CITIZEN_EIDAS_QAA_LEVEL_NAME,
- pendingReq.getSessionData(AuthProcessDataWrapper.class).getQaaLevel());
- pendingReq.getSessionData(AuthProcessDataWrapper.class).setQaaLevel(null);
-
- }
-
- private void checkGenericAttribute(IAuthData authData, String attrName, String expected) {
- assertEquals("Wrong: " + attrName, expected, authData.getGenericData(attrName, String.class));
-
- }
-
- private IIdentityLink buildDummyIdl() {
- return new IIdentityLink() {
-
- String familyName = RandomStringUtils.randomAlphabetic(10);
- String givenName = RandomStringUtils.randomAlphabetic(10);
- String dateOfBirth = "1955-02-03";
- String baseId = RandomStringUtils.randomAlphanumeric(20);
- String saml2Serialized = RandomStringUtils.randomAlphanumeric(150);
-
-
-
- @Override
- public void setSamlAssertion(Element arg0) throws TransformerException, IOException {
-
- }
-
- @Override
- public void setPublicKey(PublicKey[] arg0) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void setPrPerson(Element arg0) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void setIssueInstant(String arg0) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void setIdentificationValue(String arg0) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void setIdentificationType(String arg0) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void setGivenName(String arg0) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void setFamilyName(String arg0) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void setDsigReferenceTransforms(Element[] arg0) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public void setDateOfBirth(String arg0) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public String getSerializedSamlAssertion() {
- return this.saml2Serialized;
- }
-
- @Override
- public Element getSamlAssertion() {
- IIdentityLink fullIdl;
- try {
- fullIdl = new SimpleIdentityLinkAssertionParser(
- AuthenticationDataBuilderTest.class.getResourceAsStream("/data/test_idl_1.xml")).parseIdentityLink();
- return fullIdl.getSamlAssertion();
-
- } catch (EaafParserException e) {
- e.printStackTrace();
- }
-
- return null;
-
- }
-
- @Override
- public PublicKey[] getPublicKey() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public Element getPrPerson() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public String getName() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public Date getIssueInstantDate() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public String getIssueInstant() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public String getIdentificationValue() {
- return this.baseId;
- }
-
- @Override
- public String getIdentificationType() {
- return EaafConstants.URN_PREFIX_BASEID;
- }
-
- @Override
- public String getGivenName() {
- return this.givenName;
- }
-
- @Override
- public String getFamilyName() {
- return this.familyName;
- }
-
- @Override
- public Element[] getDsigReferenceTransforms() {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public String getDateOfBirth() {
- return this.dateOfBirth;
-
- }
- };
- }
-
-}
diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/utils/AuthnRequestValidatorTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/utils/AuthnRequestValidatorTest.java
index c57515a0..ea163e61 100644
--- a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/utils/AuthnRequestValidatorTest.java
+++ b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/utils/AuthnRequestValidatorTest.java
@@ -31,8 +31,8 @@ import org.springframework.web.context.request.ServletRequestAttributes;
import org.w3c.dom.Element;
import org.xml.sax.SAXException;
-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.data.EaafConfigConstants;
import at.gv.egiz.eaaf.core.api.idp.IConfigurationWithSP;
import at.gv.egiz.eaaf.core.exceptions.AuthnRequestValidatorException;
@@ -48,11 +48,11 @@ import net.shibboleth.utilities.java.support.component.ComponentInitializationEx
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({
"/applicationContext.xml",
- "/specific_eIDAS_connector.beans.xml",
+ "/spring/SpringTest_connector.beans.xml",
"/eaaf_core.beans.xml",
"/eaaf_pvp.beans.xml",
"/eaaf_pvp_idp.beans.xml",
- "/spring/SpringTest-context_simple_storage.xml" })
+ "/spring/SpringTest-context_simple_storage.xml"})
@ActiveProfiles(profiles = {"deprecatedConfig"})
@WebAppConfiguration
@DirtiesContext(classMode = ClassMode.BEFORE_CLASS)
diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/utils/CountrySelectionProcessImplTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/utils/CountrySelectionProcessImplTest.java
index d0343eba..368a8e4e 100644
--- a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/utils/CountrySelectionProcessImplTest.java
+++ b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/utils/CountrySelectionProcessImplTest.java
@@ -17,8 +17,8 @@ import org.springframework.test.annotation.DirtiesContext.ClassMode;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-import at.asitplus.eidas.specific.connector.MsEidasNodeConstants;
import at.asitplus.eidas.specific.connector.processes.CountrySelectionProcessImpl;
+import at.asitplus.eidas.specific.core.MsEidasNodeConstants;
import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants;
import at.gv.egiz.eaaf.core.api.idp.IConfiguration;
import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext;
diff --git a/connector/src/test/resources/config/logback_config.xml b/connector/src/test/resources/config/logback_config.xml
index fa27a46a..bb3de3e8 100644
--- a/connector/src/test/resources/config/logback_config.xml
+++ b/connector/src/test/resources/config/logback_config.xml
@@ -89,10 +89,10 @@
<logger name="at.gv.egiz.eidas.specific" additivity="false" level="info">
<appender-ref ref="msnode"/>
</logger>
- <logger name="at.gv.egiz.eidas.specific.connector.logger.RevisionLogger" additivity="false" level="info">
+ <logger name="at.gv.egiz.eidas.specific.core.logger.RevisionLogger" additivity="false" level="info">
<appender-ref ref="reversion"/>
</logger>
- <logger name="at.gv.egiz.eidas.specific.connector.logger.StatisticLogger" additivity="false" level="info">
+ <logger name="at.gv.egiz.eidas.specific.core.logger.StatisticLogger" additivity="false" level="info">
<appender-ref ref="statistic"/>
</logger>
<root level="warn">
diff --git a/connector/src/test/resources/spring/SpringTest-context_basic_test.xml b/connector/src/test/resources/spring/SpringTest-context_basic_test.xml
deleted file mode 100644
index 5d052be9..00000000
--- a/connector/src/test/resources/spring/SpringTest-context_basic_test.xml
+++ /dev/null
@@ -1,22 +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"
- xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
-
- <context:annotation-config />
-
- <import resource="classpath:/SpringTest-context_authManager.xml" />
-
- <bean id="BasicMSSpecificNodeConfig"
- class="at.asitplus.eidas.specific.connector.config.BasicConfigurationProvider">
- <constructor-arg
- value="#{systemProperties['eidas.ms.configuration']}" />
- </bean>
-
-</beans> \ No newline at end of file
diff --git a/connector/src/test/resources/spring/SpringTest-context_healthcheck.xml b/connector/src/test/resources/spring/SpringTest-context_healthcheck.xml
deleted file mode 100644
index 3bac88e3..00000000
--- a/connector/src/test/resources/spring/SpringTest-context_healthcheck.xml
+++ /dev/null
@@ -1,22 +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"
- xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
-
- <context:annotation-config />
-
- <import resource="classpath:/SpringTest-context_authManager.xml" />
-
- <bean id="basicConfig"
- class="at.asitplus.eidas.specific.connector.config.SpringBootBasicConfigurationProvider" />
-
- <bean id="eidasNodeMetadata"
- class="at.asitplus.eidas.specific.connector.health.EidasNodeMetadataHealthIndicator" />
-
-</beans> \ No newline at end of file
diff --git a/connector/src/test/resources/spring/SpringTest-context_simple_storage.xml b/connector/src/test/resources/spring/SpringTest-context_simple_storage.xml
deleted file mode 100644
index 5ee3e0b8..00000000
--- a/connector/src/test/resources/spring/SpringTest-context_simple_storage.xml
+++ /dev/null
@@ -1,15 +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"
- 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">
-
- <bean id="SimpleInMemoryTransactionStorage"
- class="at.asitplus.eidas.specific.connector.storage.SimpleInMemoryTransactionStorage" />
-
-</beans> \ No newline at end of file
diff --git a/connector/src/test/resources/spring/SpringTest_connector.beans.xml b/connector/src/test/resources/spring/SpringTest_connector.beans.xml
index 5a1e3f36..9c66ca0f 100644
--- a/connector/src/test/resources/spring/SpringTest_connector.beans.xml
+++ b/connector/src/test/resources/spring/SpringTest_connector.beans.xml
@@ -10,23 +10,12 @@
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">
-
- <context:annotation-config />
- <mvc:annotation-driven />
- <mvc:default-servlet-handler />
-
- <bean id="WebResourceConfiguration"
- class="at.asitplus.eidas.specific.connector.config.StaticResourceConfiguration" />
+
+ <import resource="classpath:/spring/SpringTest_core.beans.xml"/>
<bean id="ProcessEngineSignalController"
class="at.asitplus.eidas.specific.connector.controller.ProcessEngineSignalController" />
- <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" />
@@ -45,10 +34,6 @@
<bean id="AuthnRequestValidator"
class="at.asitplus.eidas.specific.connector.verification.AuthnRequestValidator" />
- <!-- 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">
@@ -62,54 +47,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="templateEngine"
- class="org.thymeleaf.spring5.SpringTemplateEngine">
- <property name="templateResolver" ref="templateResolver" />
- </bean>
-
- <bean class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
- <property name="order" value="2" />
- <property name="templateEngine" ref="templateEngine" />
- <property name="characterEncoding" value="UTF-8" />
- </bean>
-
- <bean id="StatusMessageProvider"
- class="at.asitplus.eidas.specific.connector.provider.StatusMessageProvider" />
-
- <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"