diff options
27 files changed, 275 insertions, 193 deletions
| diff --git a/basicConfig/eIDAS/igniteSpecificCommunication.xml b/basicConfig/eIDAS/igniteSpecificCommunication.xml deleted file mode 100644 index da61cbf1..00000000 --- a/basicConfig/eIDAS/igniteSpecificCommunication.xml +++ /dev/null @@ -1,126 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<!-- -  ~ Copyright (c) 2018 by European Commission -  ~ -  ~ Licensed under the EUPL, Version 1.2 or - as soon they will be -  ~ approved by the European Commission - subsequent versions of the -  ~ EUPL (the "Licence"); -  ~ You may not use this work except in compliance with the Licence. -  ~ You may obtain a copy of the Licence at: -  ~ https://joinup.ec.europa.eu/page/eupl-text-11-12 -  ~ -  ~ Unless required by applicable law or agreed to in writing, software -  ~ distributed under the Licence is distributed on an "AS IS" basis, -  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -  ~ implied. -  ~ See the Licence for the specific language governing permissions and -  ~ limitations under the Licence. -  --> - -<!-- -    Ignite Spring configuration file to startup Ignite cache. - -    This file demonstrates how to configure cache using Spring. Provided cache -    will be created on node startup. - -    Use this configuration file when running HTTP REST examples (see 'examples/rest' folder). - -    When starting a standalone node, you need to execute the following command: -    {IGNITE_HOME}/bin/ignite.{bat|sh} examples/config/ignite-cache.xml - -    When starting Ignite from Java IDE, pass path to this file to Ignition: -    Ignition.start("examples/config/ignite-cache.xml"); ---> - - -<beans xmlns="http://www.springframework.org/schema/beans" -       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" -       xsi:schemaLocation=" -        http://www.springframework.org/schema/beans -        http://www.springframework.org/schema/beans/spring-beans.xsd"> - -    <bean id="igniteSpecificCommunication.cfg" class="org.apache.ignite.configuration.IgniteConfiguration"> - -        <property name="igniteInstanceName" value="igniteSpecificCommunication"/> - -        <property name="cacheConfiguration"> -            <list> - -                <!--Specific Communication Caches--> -                <!-- Partitioned cache example configuration (Atomic mode). --> -                <bean class="org.apache.ignite.configuration.CacheConfiguration"> -                    <property name="name" value="specificNodeConnectorRequestCache"/> -                    <property name="atomicityMode" value="ATOMIC"/> -                    <property name="backups" value="1"/> -                    <property name="expiryPolicyFactory" ref="7_minutes_duration"/> -                </bean> -                <!-- Partitioned cache example configuration (Atomic mode). --> -                <bean class="org.apache.ignite.configuration.CacheConfiguration"> -                    <property name="name" value="nodeSpecificProxyserviceRequestCache"/> -                    <property name="atomicityMode" value="ATOMIC"/> -                    <property name="backups" value="1"/> -                    <property name="expiryPolicyFactory" ref="7_minutes_duration"/> -                </bean> -                <!-- Partitioned cache example configuration (Atomic mode). --> -                <bean class="org.apache.ignite.configuration.CacheConfiguration"> -                    <property name="name" value="specificNodeProxyserviceResponseCache"/> -                    <property name="atomicityMode" value="ATOMIC"/> -                    <property name="backups" value="1"/> -                    <property name="expiryPolicyFactory" ref="7_minutes_duration"/> -                </bean>                 -                <!-- Partitioned cache example configuration (Atomic mode). --> -                <bean class="org.apache.ignite.configuration.CacheConfiguration"> -                    <property name="name" value="nodeSpecificConnectorResponseCache"/> -                    <property name="atomicityMode" value="ATOMIC"/> -                    <property name="backups" value="1"/> -                    <property name="expiryPolicyFactory" ref="7_minutes_duration"/> -                </bean> -                <!-- Partitioned cache example configuration (Atomic mode). --> -                <bean class="org.apache.ignite.configuration.CacheConfiguration"> -                    <property name="name" value="msConnectorCache"/> -                    <property name="atomicityMode" value="ATOMIC"/> -                    <property name="backups" value="1"/> -                    <property name="expiryPolicyFactory" ref="7_minutes_duration"/> -                </bean> - -            </list> -        </property> - -        <!--Multicast discover of other nodes in the grid configuration--> -        <property name="discoverySpi"> -            <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi"> -                <property name="ipFinder"> -                    <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder"> -                        <property name="multicastGroup" value="228.10.10.157"/> -                    </bean> -                </property> -            </bean> -        </property> - -        <!-- how frequently Ignite will output basic node metrics into the log--> -        <property name="metricsLogFrequency" value="#{60 * 10 * 1000}"/> - -    </bean> - -    <!-- -        Initialize property configurer so we can reference environment variables. -    --> -    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> -        <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_FALLBACK"/> -        <property name="searchSystemEnvironment" value="true"/> -    </bean> - -    <!-- -        Defines expiry policy based on moment of creation for ignite cache. -    --> -    <bean id="7_minutes_duration" class="javax.cache.expiry.CreatedExpiryPolicy" factory-method="factoryOf" scope="prototype"> -        <constructor-arg> -            <bean class="javax.cache.expiry.Duration"> -                <constructor-arg value="MINUTES"/> -                <constructor-arg value="7"/> -            </bean> -        </constructor-arg> -    </bean>     -     -</beans> diff --git a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/EidasAuthenticationSpringResourceProvider.java b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/EidasAuthenticationSpringResourceProvider.java index e5b10185..03cbd2c1 100644 --- a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/EidasAuthenticationSpringResourceProvider.java +++ b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/EidasAuthenticationSpringResourceProvider.java @@ -45,7 +45,7 @@ public class EidasAuthenticationSpringResourceProvider implements SpringResource    public Resource[] getResourcesToLoad() {      final ClassPathResource eidasAuthConfig = new ClassPathResource("/eidas_v2_auth.beans.xml",          EidasAuthenticationSpringResourceProvider.class); -    final ClassPathResource eidasRefImplConfig = new ClassPathResource("/eidas_v2_auth_ref_impl_config.beans.xml", +    final ClassPathResource eidasRefImplConfig = new ClassPathResource("/eidas_v27_connector.beans.xml",          EidasAuthenticationSpringResourceProvider.class);      return new Resource[] { eidasRefImplConfig, eidasAuthConfig }; diff --git a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/EidasSignalServlet.java b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/EidasSignalServlet.java index e3600329..ae03d4e0 100644 --- a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/EidasSignalServlet.java +++ b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/EidasSignalServlet.java @@ -40,12 +40,12 @@ import org.springframework.web.bind.annotation.RequestMethod;  import com.google.common.collect.ImmutableSortedSet;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasSAuthenticationException; +import at.asitplus.eidas.specific.modules.core.eidas.EidasConstants;  import at.asitplus.eidas.specific.modules.core.eidas.service.EidasAttributeRegistry;  import at.gv.egiz.eaaf.core.exceptions.EaafException;  import at.gv.egiz.eaaf.core.impl.idp.controller.AbstractProcessEngineSignalController;  import eu.eidas.auth.commons.EidasParameterKeys;  import eu.eidas.auth.commons.light.ILightResponse; -import eu.eidas.specificcommunication.SpecificCommunicationDefinitionBeanNames;  import eu.eidas.specificcommunication.exception.SpecificCommunicationException;  import eu.eidas.specificcommunication.protocol.SpecificCommunicationService; @@ -110,7 +110,7 @@ public class EidasSignalServlet extends AbstractProcessEngineSignalController {        final SpecificCommunicationService specificConnectorCommunicationService =            (SpecificCommunicationService) context.getBean( -              SpecificCommunicationDefinitionBeanNames.SPECIFIC_CONNECTOR_COMMUNICATION_SERVICE.toString()); +              EidasConstants.SPECIFIC_CONNECTOR_COMMUNICATION_SERVICE);        final ILightResponse eidasResponse = specificConnectorCommunicationService.getAndRemoveResponse(            tokenBase64,            ImmutableSortedSet.copyOf(attrRegistry.getCoreAttributeRegistry().getAttributes())); diff --git a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/GenerateAuthnRequestTask.java b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/GenerateAuthnRequestTask.java index 82489e25..f14c8f90 100644 --- a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/GenerateAuthnRequestTask.java +++ b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/GenerateAuthnRequestTask.java @@ -59,7 +59,6 @@ import eu.eidas.auth.commons.light.ILightRequest;  import eu.eidas.auth.commons.light.impl.LightRequest;  import eu.eidas.auth.commons.tx.BinaryLightToken;  import eu.eidas.specificcommunication.BinaryLightTokenHelper; -import eu.eidas.specificcommunication.SpecificCommunicationDefinitionBeanNames;  import eu.eidas.specificcommunication.exception.SpecificCommunicationException;  import eu.eidas.specificcommunication.protocol.SpecificCommunicationService;  import lombok.extern.slf4j.Slf4j; @@ -192,12 +191,14 @@ public class GenerateAuthnRequestTask extends AbstractAuthServletTask {        throws ServletException {      final BinaryLightToken binaryLightToken;      try { -      String beanName = SpecificCommunicationDefinitionBeanNames.SPECIFIC_CONNECTOR_COMMUNICATION_SERVICE.toString(); -      final SpecificCommunicationService service = (SpecificCommunicationService) context.getBean(beanName); +      final SpecificCommunicationService service = (SpecificCommunicationService) context.getBean( +          EidasConstants.SPECIFIC_CONNECTOR_COMMUNICATION_SERVICE);        binaryLightToken = service.putRequest(lightRequest); +      } catch (final SpecificCommunicationException e) {        log.error("Unable to process specific request");        throw new ServletException(e); +      }      return binaryLightToken; diff --git a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveAuthnResponseAlternativeTask.java b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveAuthnResponseAlternativeTask.java index ac70a2ac..b05ce69d 100644 --- a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveAuthnResponseAlternativeTask.java +++ b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveAuthnResponseAlternativeTask.java @@ -53,7 +53,6 @@ import eu.eidas.auth.commons.light.ILightResponse;  import eu.eidas.auth.commons.light.impl.LightResponse;  import eu.eidas.auth.commons.tx.BinaryLightToken;  import eu.eidas.specificcommunication.BinaryLightTokenHelper; -import eu.eidas.specificcommunication.SpecificCommunicationDefinitionBeanNames;  import eu.eidas.specificcommunication.exception.SpecificCommunicationException;  import eu.eidas.specificcommunication.protocol.SpecificCommunicationService;  import lombok.extern.slf4j.Slf4j; @@ -177,7 +176,7 @@ public class ReceiveAuthnResponseAlternativeTask extends AbstractAuthServletTask      final SpecificCommunicationService specificConnectorCommunicationService =          (SpecificCommunicationService) context.getBean( -            SpecificCommunicationDefinitionBeanNames.SPECIFIC_CONNECTOR_COMMUNICATION_SERVICE.toString()); +            EidasConstants.SPECIFIC_CONNECTOR_COMMUNICATION_SERVICE.toString());      BinaryLightToken token = specificConnectorCommunicationService.putResponse(          LightResponse.builder(eidasResponse).relayState(pendingReq.getPendingRequestId()).build());      final String tokenBase64 = BinaryLightTokenHelper.encodeBinaryLightTokenBase64(token);     diff --git a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveAuthnResponseTask.java b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveAuthnResponseTask.java index cc497318..15d2616c 100644 --- a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveAuthnResponseTask.java +++ b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveAuthnResponseTask.java @@ -54,7 +54,6 @@ import eu.eidas.auth.commons.light.ILightResponse;  import eu.eidas.auth.commons.light.impl.LightResponse;  import eu.eidas.auth.commons.tx.BinaryLightToken;  import eu.eidas.specificcommunication.BinaryLightTokenHelper; -import eu.eidas.specificcommunication.SpecificCommunicationDefinitionBeanNames;  import eu.eidas.specificcommunication.exception.SpecificCommunicationException;  import eu.eidas.specificcommunication.protocol.SpecificCommunicationService;  import lombok.extern.slf4j.Slf4j; @@ -137,7 +136,7 @@ public class ReceiveAuthnResponseTask extends AbstractAuthServletTask {      final SpecificCommunicationService specificConnectorCommunicationService =          (SpecificCommunicationService) context.getBean( -            SpecificCommunicationDefinitionBeanNames.SPECIFIC_CONNECTOR_COMMUNICATION_SERVICE.toString()); +            EidasConstants.SPECIFIC_CONNECTOR_COMMUNICATION_SERVICE.toString());      BinaryLightToken token = specificConnectorCommunicationService.putResponse(          LightResponse.builder(eidasResponse).relayState(pendingReq.getPendingRequestId()).build());      final String tokenBase64 = BinaryLightTokenHelper.encodeBinaryLightTokenBase64(token);     diff --git a/modules/authmodule-eIDAS-v2/src/test/resources/SpringTest-context_basic_test.xml b/modules/authmodule-eIDAS-v2/src/test/resources/SpringTest-context_basic_test.xml index d71a47dc..517be19a 100644 --- a/modules/authmodule-eIDAS-v2/src/test/resources/SpringTest-context_basic_test.xml +++ b/modules/authmodule-eIDAS-v2/src/test/resources/SpringTest-context_basic_test.xml @@ -11,18 +11,9 @@    <context:annotation-config /> +  <!-- to communicate with reference implementation --> - -  <bean id="eidasConnectorMessageSource" -        class="at.asitplus.eidas.specific.modules.auth.eidas.v2.config.EidasConnectorMessageSource"/> -   -  <bean id="SZRClientForeIDAS" -    class="at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.szr.SzrClient" /> - -  <!-- <bean id="eIDASDataStore" class="at.asitplus.eidas.specific.modules.auth.eidas.v2.service.eIDASDataStore"  -    /> --> - -  <bean id="springManagedSpecificConnectorCommunicationService" +  <bean id="connectorCommunicationService"      class="at.asitplus.eidas.specific.modules.core.eidas.test.dummy.DummySpecificCommunicationService" />    <bean id="specificConnectorAttributesFileWithPath" @@ -45,6 +36,17 @@        ref="specificConnectorAdditionalAttributesFileWithPath" />    </bean> + + +  <bean id="eidasConnectorMessageSource" +        class="at.asitplus.eidas.specific.modules.auth.eidas.v2.config.EidasConnectorMessageSource"/> +   +  <bean id="SZRClientForeIDAS" +    class="at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.szr.SzrClient" /> + +  <!-- <bean id="eIDASDataStore" class="at.asitplus.eidas.specific.modules.auth.eidas.v2.service.eIDASDataStore"  +    /> --> +    <bean id="connectorAttributeRegistry"          class="at.asitplus.eidas.specific.modules.auth.eidas.v2.service.ConnectorEidasAttributeRegistry" /> diff --git a/modules/authmodule-eIDAS-v2/src/test/resources/SpringTest-context_tasks_test.xml b/modules/authmodule-eIDAS-v2/src/test/resources/SpringTest-context_tasks_test.xml index 1b5391d5..463bca98 100644 --- a/modules/authmodule-eIDAS-v2/src/test/resources/SpringTest-context_tasks_test.xml +++ b/modules/authmodule-eIDAS-v2/src/test/resources/SpringTest-context_tasks_test.xml @@ -24,7 +24,7 @@    <bean id="mvcGUIBuilderImpl"      class="at.gv.egiz.eaaf.core.impl.gui.builder.SpringMvcGuiFormBuilderImpl" /> -  <bean id="springManagedSpecificConnectorCommunicationService" +  <bean id="connectorCommunicationService"      class="at.asitplus.eidas.specific.modules.core.eidas.test.dummy.DummySpecificCommunicationService" />    <bean id="dummyPvpConfig" diff --git a/modules/core_common_webapp/src/main/resources/specific_eIDAS_core_storage.beans.xml b/modules/core_common_webapp/src/main/resources/specific_eIDAS_core_storage.beans.xml index 259f5605..ca820566 100644 --- a/modules/core_common_webapp/src/main/resources/specific_eIDAS_core_storage.beans.xml +++ b/modules/core_common_webapp/src/main/resources/specific_eIDAS_core_storage.beans.xml @@ -11,8 +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="classpath:specificCommunicationDefinitionApplicationContext.xml" /> +  <import resource="classpath:specificCommunicationDefinitionApplicationContext.xml" /> +  <import resource="classpath:jCacheImplSpecificCommunicationBeans.xml" />    <!-- <bean id="SimpleInMemoryTransactionStorage" class="at.asitplus.eidas.specific.connector.storage.SimpleInMemoryTransactionStorage"       /> --> diff --git a/modules/core_commons_eidas/src/main/java/at/asitplus/eidas/specific/modules/core/eidas/EidasConstants.java b/modules/core_commons_eidas/src/main/java/at/asitplus/eidas/specific/modules/core/eidas/EidasConstants.java index ac17c30f..a2e2ba03 100644 --- a/modules/core_commons_eidas/src/main/java/at/asitplus/eidas/specific/modules/core/eidas/EidasConstants.java +++ b/modules/core_commons_eidas/src/main/java/at/asitplus/eidas/specific/modules/core/eidas/EidasConstants.java @@ -8,6 +8,10 @@ package at.asitplus.eidas.specific.modules.core.eidas;   */  public class EidasConstants { +  // references to eIDAS Node implementation +  public static final String SPECIFIC_CONNECTOR_COMMUNICATION_SERVICE = "connectorCommunicationService"; +  public static final String SPECIFIC_PROXYSERVICE_COMMUNICATION_SERVICE = "proxyCommunicationService"; +    // common config ore-fixes    public static final String CONIG_PROPS_EIDAS_PREFIX = "auth.eIDAS";    public static final String CONIG_PROPS_EIDAS_NODE = EidasConstants.CONIG_PROPS_EIDAS_PREFIX + ".node_v2"; diff --git a/modules/core_commons_eidas/src/main/resources/eidas_v27_connector.beans.xml b/modules/core_commons_eidas/src/main/resources/eidas_v27_connector.beans.xml new file mode 100644 index 00000000..fb17b857 --- /dev/null +++ b/modules/core_commons_eidas/src/main/resources/eidas_v27_connector.beans.xml @@ -0,0 +1,47 @@ +<?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"> + +    <!--Connector to specific--> +    <import resource="classpath:eidas_v2_auth_ref_impl_config.beans.xml" /> +    <import resource="classpath:connectorSpecificCommunicationCaches.xml" />    +        +    <bean id="connectorCommunicationService" class="eu.eidas.specificcommunication.protocol.impl.SpecificCommunicationAdapterService" scope="prototype"> +        <constructor-arg index="0" ref="connectorRequestService"/> +        <constructor-arg index="1" ref="connectorResponseService"/> +    </bean> + +  	<bean id="specificConnectorAttributesFileWithPath" +    	  class="java.lang.String"> +      <constructor-arg +		value="#{specificConnectorConfigRepository}#{specificConnectorAttributesFile}" /> +  	</bean> + +  	<bean id="specificConnectorAdditionalAttributesFileWithPath" +		  class="java.lang.String"> +      <constructor-arg +      	value="#{specificConnectorConfigRepository}#{specificAdditionalAttributesFile}" /> +  	</bean> + +    <bean id="connectorRequestService" class="eu.eidas.specificcommunication.protocol.impl.RequestSpecificCommunicationServiceImpl" scope="prototype"> +        <constructor-arg index="0" type="java.lang.String" value="${lightToken.connector.request.issuer.name}"/> +        <constructor-arg index="1" type="java.lang.String" value="${lightToken.connector.request.secret}"/> +        <constructor-arg index="2" type="java.lang.String" value="${lightToken.connector.request.algorithm}"/> +        <constructor-arg index="3" ref="specificNodeConnectorRequestCache"/> +    </bean> + +    <bean id="connectorResponseService" class="eu.eidas.specificcommunication.protocol.impl.ResponseSpecificCommunicationServiceImpl" scope="prototype"> +        <constructor-arg index="0" type="java.lang.String" value="${lightToken.connector.response.issuer.name}"/> +        <constructor-arg index="1" type="java.lang.String" value="${lightToken.connector.response.secret}"/> +        <constructor-arg index="2" type="java.lang.String" value="${lightToken.connector.response.algorithm}"/> +        <constructor-arg index="3" ref="nodeSpecificConnectorResponseCache"/> +    </bean> + +</beans>
\ No newline at end of file diff --git a/modules/core_commons_eidas/src/main/resources/eidas_v27_proxyservice.beans.xml b/modules/core_commons_eidas/src/main/resources/eidas_v27_proxyservice.beans.xml new file mode 100644 index 00000000..ea2f5a7d --- /dev/null +++ b/modules/core_commons_eidas/src/main/resources/eidas_v27_proxyservice.beans.xml @@ -0,0 +1,48 @@ +<?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"> + +  	<import resource="classpath:eidas_v2_auth_ref_impl_config.beans.xml" /> +   +      <!--    Proxy to specific--> +    <import resource="classpath:proxySpecificCommunicationCaches.xml" /> + +  	<bean id="specificConnectorAttributesFileWithPath" +    	  class="java.lang.String"> +      <constructor-arg +		value="#{specificProxyServiceConfigRepository}#{specificConnectorAttributesFile}" /> +  	</bean> + +  	<bean id="specificConnectorAdditionalAttributesFileWithPath" +		  class="java.lang.String"> +      <constructor-arg +      	value="#{specificProxyServiceConfigRepository}#{specificAdditionalAttributesFile}" /> +  	</bean> + +    <bean id="proxyCommunicationService" class="eu.eidas.specificcommunication.protocol.impl.SpecificCommunicationAdapterService" scope="prototype"> +        <constructor-arg index="0" ref="serviceRequestService"/> +        <constructor-arg index="1" ref="serviceResponseService"/> +    </bean> + +    <bean id="serviceRequestService" class="eu.eidas.specificcommunication.protocol.impl.RequestSpecificCommunicationServiceImpl" scope="prototype"> +        <constructor-arg index="0" type="java.lang.String" value="${lightToken.proxyservice.request.issuer.name}"/> +        <constructor-arg index="1" type="java.lang.String" value="${lightToken.proxyservice.request.secret}"/> +        <constructor-arg index="2" type="java.lang.String" value="${lightToken.proxyservice.request.algorithm}"/> +        <constructor-arg index="3" ref="nodeSpecificProxyserviceRequestCache"/> +    </bean> + +    <bean id="serviceResponseService" class="eu.eidas.specificcommunication.protocol.impl.ResponseSpecificCommunicationServiceImpl" scope="prototype"> +        <constructor-arg index="0" type="java.lang.String" value="${lightToken.proxyservice.response.issuer.name}"/> +        <constructor-arg index="1" type="java.lang.String" value="${lightToken.proxyservice.response.secret}"/> +        <constructor-arg index="2" type="java.lang.String" value="${lightToken.proxyservice.response.algorithm}"/> +        <constructor-arg index="3" ref="specificNodeProxyserviceResponseCache"/> +    </bean> + +</beans>
\ No newline at end of file diff --git a/modules/core_commons_eidas/src/main/resources/eidas_v2_auth_ref_impl_config.beans.xml b/modules/core_commons_eidas/src/main/resources/eidas_v2_auth_ref_impl_config.beans.xml index cde9687e..f0038a8e 100644 --- a/modules/core_commons_eidas/src/main/resources/eidas_v2_auth_ref_impl_config.beans.xml +++ b/modules/core_commons_eidas/src/main/resources/eidas_v2_auth_ref_impl_config.beans.xml @@ -10,10 +10,7 @@      http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">    <context:annotation-config /> - -  <import -    resource="classpath:specificCommunicationDefinitionApplicationContext.xml" /> - +                           <bean id="specificConnectorAttributesFile"      class="java.lang.String">      <constructor-arg value="eidas-attributes.xml" /> @@ -24,16 +21,15 @@      <constructor-arg value="additional-attributes.xml" />    </bean> -  <bean id="specificConnectorAttributesFileWithPath" -    class="java.lang.String"> -    <constructor-arg -      value="#{specificConnectorConfigRepository}#{specificConnectorAttributesFile}" /> +  <bean id="customEidasNodeSpringContextProvider" +  		class="eu.eidas.specificcommunication.SpecificCommunicationApplicationContextProvider" />  + +  <bean id="incomingLightRequestValidator" class="eu.eidas.specificcommunication.protocol.validation.IncomingLightRequestValidator"> +    <constructor-arg index="0" value="${incoming.lightRequest.max.number.characters:65535}"/>    </bean> -  <bean id="specificConnectorAdditionalAttributesFileWithPath" -    class="java.lang.String"> -    <constructor-arg -      value="#{specificConnectorConfigRepository}#{specificAdditionalAttributesFile}" /> +  <bean id="incomingLightResponseValidator" class="eu.eidas.specificcommunication.protocol.validation.IncomingLightResponseValidator"> +    <constructor-arg index="0" value="${incoming.lightResponse.max.number.characters:65535}"/>    </bean>  </beans>
\ No newline at end of file diff --git a/modules/eidas_proxy-sevice/src/main/java/at/asitplus/eidas/specific/modules/msproxyservice/MsProxyServiceSpringResourceProvider.java b/modules/eidas_proxy-sevice/src/main/java/at/asitplus/eidas/specific/modules/msproxyservice/MsProxyServiceSpringResourceProvider.java index 571ad8ab..71f96a76 100644 --- a/modules/eidas_proxy-sevice/src/main/java/at/asitplus/eidas/specific/modules/msproxyservice/MsProxyServiceSpringResourceProvider.java +++ b/modules/eidas_proxy-sevice/src/main/java/at/asitplus/eidas/specific/modules/msproxyservice/MsProxyServiceSpringResourceProvider.java @@ -45,11 +45,11 @@ public class MsProxyServiceSpringResourceProvider implements SpringResourceProvi    public Resource[] getResourcesToLoad() {      final ClassPathResource eidasProxyServiceConfig =           new ClassPathResource("/spring/eidas_proxy-service.beans.xml", MsProxyServiceSpringResourceProvider.class); -    final ClassPathResource eidasRefImplConfig = new ClassPathResource("/eidas_v2_auth_ref_impl_config.beans.xml", -        MsProxyServiceSpringResourceProvider.class); - -         +    final ClassPathResource eidasRefImplConfig = +        new ClassPathResource("/eidas_v27_proxyservice.beans.xml", +            MsProxyServiceSpringResourceProvider.class);      return new Resource[] { eidasProxyServiceConfig, eidasRefImplConfig }; +    }  } diff --git a/modules/eidas_proxy-sevice/src/main/java/at/asitplus/eidas/specific/modules/msproxyservice/protocol/EidasProxyServiceController.java b/modules/eidas_proxy-sevice/src/main/java/at/asitplus/eidas/specific/modules/msproxyservice/protocol/EidasProxyServiceController.java index 4de28956..5742b920 100644 --- a/modules/eidas_proxy-sevice/src/main/java/at/asitplus/eidas/specific/modules/msproxyservice/protocol/EidasProxyServiceController.java +++ b/modules/eidas_proxy-sevice/src/main/java/at/asitplus/eidas/specific/modules/msproxyservice/protocol/EidasProxyServiceController.java @@ -56,7 +56,6 @@ import eu.eidas.auth.commons.light.ILightRequest;  import eu.eidas.auth.commons.light.impl.LightResponse;  import eu.eidas.auth.commons.light.impl.LightResponse.Builder;  import eu.eidas.auth.commons.light.impl.ResponseStatus; -import eu.eidas.specificcommunication.SpecificCommunicationDefinitionBeanNames;  import eu.eidas.specificcommunication.exception.SpecificCommunicationException;  import eu.eidas.specificcommunication.protocol.SpecificCommunicationService;  import lombok.extern.slf4j.Slf4j; @@ -121,8 +120,7 @@ public class EidasProxyServiceController extends AbstractController implements I        // read authentication request from shared cache        final SpecificCommunicationService specificProxyCommunicationService =            (SpecificCommunicationService) applicationContext.getBean( -              SpecificCommunicationDefinitionBeanNames.SPECIFIC_PROXYSERVICE_COMMUNICATION_SERVICE -                  .toString()); +              EidasConstants.SPECIFIC_PROXYSERVICE_COMMUNICATION_SERVICE);        final ILightRequest eidasRequest = specificProxyCommunicationService.getAndRemoveRequest(            tokenBase64,            ImmutableSortedSet.copyOf(attrRegistry.getCoreRegistry().getCoreAttributeRegistry() diff --git a/modules/eidas_proxy-sevice/src/main/java/at/asitplus/eidas/specific/modules/msproxyservice/protocol/ProxyServiceAuthenticationAction.java b/modules/eidas_proxy-sevice/src/main/java/at/asitplus/eidas/specific/modules/msproxyservice/protocol/ProxyServiceAuthenticationAction.java index bb85f18c..bb91e919 100644 --- a/modules/eidas_proxy-sevice/src/main/java/at/asitplus/eidas/specific/modules/msproxyservice/protocol/ProxyServiceAuthenticationAction.java +++ b/modules/eidas_proxy-sevice/src/main/java/at/asitplus/eidas/specific/modules/msproxyservice/protocol/ProxyServiceAuthenticationAction.java @@ -49,7 +49,6 @@ import eu.eidas.auth.commons.light.impl.LightResponse.Builder;  import eu.eidas.auth.commons.light.impl.ResponseStatus;  import eu.eidas.auth.commons.tx.BinaryLightToken;  import eu.eidas.specificcommunication.BinaryLightTokenHelper; -import eu.eidas.specificcommunication.SpecificCommunicationDefinitionBeanNames;  import eu.eidas.specificcommunication.exception.SpecificCommunicationException;  import eu.eidas.specificcommunication.protocol.SpecificCommunicationService;  import lombok.extern.slf4j.Slf4j; @@ -328,8 +327,7 @@ public class ProxyServiceAuthenticationAction implements IAction {      try {        final SpecificCommunicationService springManagedSpecificConnectorCommunicationService =            (SpecificCommunicationService) context.getBean( -              SpecificCommunicationDefinitionBeanNames.SPECIFIC_PROXYSERVICE_COMMUNICATION_SERVICE -                  .toString()); +              EidasConstants.SPECIFIC_PROXYSERVICE_COMMUNICATION_SERVICE);        binaryLightToken = springManagedSpecificConnectorCommunicationService.putResponse(lightResponse); diff --git a/modules/eidas_proxy-sevice/src/test/java/at/asitplus/eidas/specific/modules/msproxyservice/test/protocol/EidasProxyServiceControllerBorisTest.java b/modules/eidas_proxy-sevice/src/test/java/at/asitplus/eidas/specific/modules/msproxyservice/test/protocol/EidasProxyServiceControllerBorisTest.java index 78ae87a5..27fcde7f 100644 --- a/modules/eidas_proxy-sevice/src/test/java/at/asitplus/eidas/specific/modules/msproxyservice/test/protocol/EidasProxyServiceControllerBorisTest.java +++ b/modules/eidas_proxy-sevice/src/test/java/at/asitplus/eidas/specific/modules/msproxyservice/test/protocol/EidasProxyServiceControllerBorisTest.java @@ -42,7 +42,6 @@ import at.gv.egiz.eaaf.core.impl.idp.module.test.DummyProtocolAuthService;  import eu.eidas.auth.commons.EidasParameterKeys;  import eu.eidas.auth.commons.attribute.ImmutableAttributeMap;  import eu.eidas.auth.commons.light.impl.LightRequest; -import eu.eidas.specificcommunication.SpecificCommunicationDefinitionBeanNames;  import eu.eidas.specificcommunication.protocol.SpecificCommunicationService;  @RunWith(SpringJUnit4ClassRunner.class) @@ -85,8 +84,7 @@ public class EidasProxyServiceControllerBorisTest {      springManagedSpecificConnectorCommunicationService =          (SpecificCommunicationService) context.getBean( -            SpecificCommunicationDefinitionBeanNames.SPECIFIC_PROXYSERVICE_COMMUNICATION_SERVICE -                .toString()); +            EidasConstants.SPECIFIC_PROXYSERVICE_COMMUNICATION_SERVICE);    }   diff --git a/modules/eidas_proxy-sevice/src/test/java/at/asitplus/eidas/specific/modules/msproxyservice/test/protocol/EidasProxyServiceControllerTest.java b/modules/eidas_proxy-sevice/src/test/java/at/asitplus/eidas/specific/modules/msproxyservice/test/protocol/EidasProxyServiceControllerTest.java index c23f1d53..47ddcec0 100644 --- a/modules/eidas_proxy-sevice/src/test/java/at/asitplus/eidas/specific/modules/msproxyservice/test/protocol/EidasProxyServiceControllerTest.java +++ b/modules/eidas_proxy-sevice/src/test/java/at/asitplus/eidas/specific/modules/msproxyservice/test/protocol/EidasProxyServiceControllerTest.java @@ -52,7 +52,6 @@ import eu.eidas.auth.commons.EidasParameterKeys;  import eu.eidas.auth.commons.attribute.ImmutableAttributeMap;  import eu.eidas.auth.commons.light.ILightResponse;  import eu.eidas.auth.commons.light.impl.LightRequest; -import eu.eidas.specificcommunication.SpecificCommunicationDefinitionBeanNames;  import eu.eidas.specificcommunication.exception.SpecificCommunicationException;  import eu.eidas.specificcommunication.protocol.SpecificCommunicationService; @@ -97,8 +96,7 @@ public class EidasProxyServiceControllerTest {      springManagedSpecificConnectorCommunicationService =          (SpecificCommunicationService) context.getBean( -            SpecificCommunicationDefinitionBeanNames.SPECIFIC_PROXYSERVICE_COMMUNICATION_SERVICE -                .toString()); +            EidasConstants.SPECIFIC_PROXYSERVICE_COMMUNICATION_SERVICE);    } diff --git a/modules/eidas_proxy-sevice/src/test/java/at/asitplus/eidas/specific/modules/msproxyservice/test/protocol/ProxyServiceAuthenticationActionTest.java b/modules/eidas_proxy-sevice/src/test/java/at/asitplus/eidas/specific/modules/msproxyservice/test/protocol/ProxyServiceAuthenticationActionTest.java index 333a823e..f9369ac0 100644 --- a/modules/eidas_proxy-sevice/src/test/java/at/asitplus/eidas/specific/modules/msproxyservice/test/protocol/ProxyServiceAuthenticationActionTest.java +++ b/modules/eidas_proxy-sevice/src/test/java/at/asitplus/eidas/specific/modules/msproxyservice/test/protocol/ProxyServiceAuthenticationActionTest.java @@ -53,7 +53,6 @@ import eu.eidas.auth.commons.attribute.ImmutableAttributeMap;  import eu.eidas.auth.commons.light.ILightResponse;  import eu.eidas.auth.commons.light.impl.LightRequest;  import eu.eidas.auth.commons.light.impl.LightRequest.Builder; -import eu.eidas.specificcommunication.SpecificCommunicationDefinitionBeanNames;  import eu.eidas.specificcommunication.exception.SpecificCommunicationException;  import eu.eidas.specificcommunication.protocol.SpecificCommunicationService;  import lombok.SneakyThrows; @@ -110,8 +109,7 @@ public class ProxyServiceAuthenticationActionTest {      springManagedSpecificConnectorCommunicationService =          (SpecificCommunicationService) context.getBean( -            SpecificCommunicationDefinitionBeanNames.SPECIFIC_PROXYSERVICE_COMMUNICATION_SERVICE -                .toString()); +            EidasConstants.SPECIFIC_PROXYSERVICE_COMMUNICATION_SERVICE);    } diff --git a/modules/eidas_proxy-sevice/src/test/resources/spring/SpringTest-context_basic_test.xml b/modules/eidas_proxy-sevice/src/test/resources/spring/SpringTest-context_basic_test.xml index 0b7540f5..313cb9c4 100644 --- a/modules/eidas_proxy-sevice/src/test/resources/spring/SpringTest-context_basic_test.xml +++ b/modules/eidas_proxy-sevice/src/test/resources/spring/SpringTest-context_basic_test.xml @@ -13,7 +13,7 @@    <import resource="classpath:/SpringTest-context_authManager.xml" />    <import resource="classpath:/spring/eidas_proxy-service.beans.xml"/> -  <bean id="springManagedSpecificProxyserviceCommunicationService" +  <bean id="proxyCommunicationService"          class="at.asitplus.eidas.specific.modules.core.eidas.test.dummy.DummySpecificCommunicationService" />   <bean id="mvcGUIBuilderImpl" diff --git a/ms_specific_connector/src/main/resources/application.properties b/ms_specific_connector/src/main/resources/application.properties index ed0e6ec9..5a31c119 100644 --- a/ms_specific_connector/src/main/resources/application.properties +++ b/ms_specific_connector/src/main/resources/application.properties @@ -111,6 +111,19 @@ eidas.ms.auth.eIDAS.node_v2.loa.requested.minimum=http://eidas.europa.eu/LoA/hig  #eidas.ms.auth.eIDAS.node_v2.loa.ua.requested=http://eidas.europa.eu/NotNotified/LoA/high + # TODO change namespaces if required +lightToken.connector.request.issuer.name=specificCommunicationDefinitionConnectorRequest +lightToken.connector.request.node.id=specificConnector  +lightToken.connector.request.secret=mySecretConnectorRequest +lightToken.connector.request.algorithm=SHA-256 +lightToken.connector.response.issuer.name=specificCommunicationDefinitionConnectorResponse +lightToken.connector.response.node.id=specificConnector +lightToken.connector.response.secret=mySecretConnectorResponse +lightToken.connector.response.algorithm=SHA-256 +incoming.lightRequest.max.number.characters=65535 + + +  #eidas.ms.auth.eIDAS.szrclient.useTestService=true  #eidas.ms.auth.eIDAS.szrclient.endpoint.prod=  #eidas.ms.auth.eIDAS.szrclient.endpoint.test=http://localhost:1234/demoszr diff --git a/ms_specific_connector/src/main/resources/environmentContext.xml b/ms_specific_connector/src/main/resources/environmentContext.xml new file mode 100644 index 00000000..9e90076d --- /dev/null +++ b/ms_specific_connector/src/main/resources/environmentContext.xml @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +  ~ Copyright (c) 2023 by European Commission +  ~ +  ~ Licensed under the EUPL, Version 1.2 or - as soon they will be +  ~ approved by the European Commission - subsequent versions of the +  ~ EUPL (the "Licence"); +  ~ You may not use this work except in compliance with the Licence. +  ~ You may obtain a copy of the Licence at: +  ~ https://joinup.ec.europa.eu/page/eupl-text-11-12 +  ~ +  ~ Unless required by applicable law or agreed to in writing, software +  ~ distributed under the Licence is distributed on an "AS IS" basis, +  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +  ~ implied. +  ~ See the Licence for the specific language governing permissions and +  ~ limitations under the Licence. +  --> +<beans xmlns="http://www.springframework.org/schema/beans" +       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd"> + +    <!-- + +    Configuration repository path either from ENVIRONMENT variable or COMMAND LINE -D option of +            EIDAS_CONNECTOR_CONFIG_REPOSITORY and +         For any other option - like hard-coded values - modify this file. +          Hard coding example: + +    <bean id="specificCommunicationConfigRepository" class="java.lang.String"> +        <constructor-arg value="c:/PGM/projects/configEidas/glassfish/" /> +    </bean> + +    --> + +    <!--mandatory ENV--> +    <!--exported to: eidas-specific-connector module--> +    <bean id="specificConnectorConfigRepository" class="java.lang.String"> +        <constructor-arg +                value="#{ systemProperties['SPECIFIC_CONNECTOR_CONFIG_REPOSITORY'] ?: (systemEnvironment['SPECIFIC_CONNECTOR_CONFIG_REPOSITORY'].endsWith(systemProperties['file.separator']) ? systemEnvironment['SPECIFIC_CONNECTOR_CONFIG_REPOSITORY'] : (systemEnvironment['SPECIFIC_CONNECTOR_CONFIG_REPOSITORY'] + systemProperties['file.separator'])) }"/> +    </bean> + +    <!--exported to: eidas-specific-communication-definition module--> +    <bean id="specificCommunicationConfigRepository" class="java.lang.String"> +        <constructor-arg +                value="#{ specificConnectorConfigRepository }"/> +    </bean> + + +</beans>
\ No newline at end of file diff --git a/ms_specific_connector/src/test/java/at/asitplus/eidas/specific/connector/test/FullStartUpAndProcessTest.java b/ms_specific_connector/src/test/java/at/asitplus/eidas/specific/connector/test/FullStartUpAndProcessTest.java index 5e7d92b2..02e4ee79 100644 --- a/ms_specific_connector/src/test/java/at/asitplus/eidas/specific/connector/test/FullStartUpAndProcessTest.java +++ b/ms_specific_connector/src/test/java/at/asitplus/eidas/specific/connector/test/FullStartUpAndProcessTest.java @@ -98,7 +98,6 @@ import eu.eidas.auth.commons.attribute.ImmutableAttributeMap;  import eu.eidas.auth.commons.light.ILightRequest;  import eu.eidas.auth.commons.protocol.impl.AuthenticationResponse;  import eu.eidas.auth.commons.tx.BinaryLightToken; -import eu.eidas.specificcommunication.SpecificCommunicationDefinitionBeanNames;  import eu.eidas.specificcommunication.exception.SpecificCommunicationException;  import eu.eidas.specificcommunication.protocol.SpecificCommunicationService;  import lombok.SneakyThrows; @@ -180,8 +179,9 @@ public class FullStartUpAndProcessTest {          + "../basicConfig/eIDAS/");      System.setProperty("SPECIFIC_CONNECTOR_CONFIG_REPOSITORY", current.substring("file:".length())          + "../basicConfig/eIDAS/"); -    System.setProperty("SPECIFIC_PROXY_SERVICE_CONFIG_REPOSITORY", current.substring("file:".length()) -        + "../basicConfig/eIDAS/"); + +    //System.setProperty("SPECIFIC_PROXY_SERVICE_CONFIG_REPOSITORY", current.substring("file:".length()) +    //    + "../basicConfig/eIDAS/");      EaafOpenSaml3xInitializer.eaafInitialize(); @@ -648,7 +648,7 @@ public class FullStartUpAndProcessTest {        throws SpecificCommunicationException, URISyntaxException {      final SpecificCommunicationService springManagedSpecificConnectorCommunicationService =          (SpecificCommunicationService) wac.getBean( -            SpecificCommunicationDefinitionBeanNames.SPECIFIC_CONNECTOR_COMMUNICATION_SERVICE.toString()); +            EidasConstants.SPECIFIC_CONNECTOR_COMMUNICATION_SERVICE);      //read request and validate basic properties      ILightRequest req = springManagedSpecificConnectorCommunicationService.getAndRemoveRequest(eidasNodeReqToken, @@ -687,7 +687,7 @@ public class FullStartUpAndProcessTest {          .subject(RandomStringUtils.randomAlphabetic(10))          .statusCode(statusCode)          .inResponseTo(reqId) -        .subjectNameIdFormat("afaf") +        .subjectNameIdFormat("urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified")          .levelOfAssurance(loa)          .attributes(attributeMap)          .build(); diff --git a/ms_specific_proxyservice/src/main/resources/application.properties b/ms_specific_proxyservice/src/main/resources/application.properties index cb55fb2c..d6918a97 100644 --- a/ms_specific_proxyservice/src/main/resources/application.properties +++ b/ms_specific_proxyservice/src/main/resources/application.properties @@ -69,6 +69,19 @@ eidas.ms.auth.eIDAS.node_v2.proxy.entityId=ownSpecificProxy  eidas.ms.auth.eIDAS.node_v2.proxy.forward.errors=false  eidas.ms.auth.eIDAS.node_v2.forward.method=POST + + # TODO change namespaces if required +lightToken.proxyservice.request.issuer.name=specificCommunicationDefinitionConnectorRequest +lightToken.proxyservice.request.node.id=specificConnector  +lightToken.proxyservice.request.secret=mySecretConnectorRequest +lightToken.proxyservice.request.algorithm=SHA-256 +lightToken.proxyservice.response.issuer.name=specificCommunicationDefinitionConnectorResponse +lightToken.proxyservice.response.node.id=specificConnector +lightToken.proxyservice.response.secret=mySecretConnectorResponse +lightToken.proxyservice.response.algorithm=SHA-256 +incoming.lightRequest.max.number.characters=65535 + +  # Mandate configuration  eidas.ms.auth.eIDAS.proxy.mandates.enabled=true  eidas.ms.auth.eIDAS.proxy.mandates.profiles.natural.default=GeneralvollmachtBilateral diff --git a/ms_specific_proxyservice/src/main/resources/environmentContext.xml b/ms_specific_proxyservice/src/main/resources/environmentContext.xml new file mode 100644 index 00000000..ccfab8f5 --- /dev/null +++ b/ms_specific_proxyservice/src/main/resources/environmentContext.xml @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +  ~ Copyright (c) 2023 by European Commission +  ~ +  ~ Licensed under the EUPL, Version 1.2 or - as soon they will be +  ~ approved by the European Commission - subsequent versions of the +  ~ EUPL (the "Licence"); +  ~ You may not use this work except in compliance with the Licence. +  ~ You may obtain a copy of the Licence at: +  ~ https://joinup.ec.europa.eu/page/eupl-text-11-12 +  ~ +  ~ Unless required by applicable law or agreed to in writing, software +  ~ distributed under the Licence is distributed on an "AS IS" basis, +  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +  ~ implied. +  ~ See the Licence for the specific language governing permissions and +  ~ limitations under the Licence. +  --> +<beans xmlns="http://www.springframework.org/schema/beans" +       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd"> + +    <!-- + +    Configuration repository path either from ENVIRONMENT variable or COMMAND LINE -D option of +            EIDAS_CONNECTOR_CONFIG_REPOSITORY and +         For any other option - like hard-coded values - modify this file. +          Hard coding example: + +    <bean id="specificCommunicationConfigRepository" class="java.lang.String"> +        <constructor-arg value="c:/PGM/projects/configEidas/glassfish/" /> +    </bean> + +    --> + +    <!--mandatory ENV--> + +    <bean id="specificProxyServiceConfigRepository" class="java.lang.String"> +        <constructor-arg +                value="#{ systemProperties['SPECIFIC_PROXY_SERVICE_CONFIG_REPOSITORY'] ?: (systemEnvironment['SPECIFIC_PROXY_SERVICE_CONFIG_REPOSITORY'].endsWith(systemProperties['file.separator']) ? systemEnvironment['SPECIFIC_PROXY_SERVICE_CONFIG_REPOSITORY'] : (systemEnvironment['SPECIFIC_PROXY_SERVICE_CONFIG_REPOSITORY'] + systemProperties['file.separator'])) }"/> +    </bean> + +    <!--exported to: eidas-specific-communication-definition module--> +    <bean id="specificCommunicationConfigRepository" class="java.lang.String"> +        <constructor-arg +                value="#{ specificProxyServiceConfigRepository }"/> +    </bean> + +</beans>
\ No newline at end of file diff --git a/ms_specific_proxyservice/src/test/java/at/asitplus/eidas/specific/proxy/test/FullStartUpAndProcessTest.java b/ms_specific_proxyservice/src/test/java/at/asitplus/eidas/specific/proxy/test/FullStartUpAndProcessTest.java index 82103095..c86fbd9b 100644 --- a/ms_specific_proxyservice/src/test/java/at/asitplus/eidas/specific/proxy/test/FullStartUpAndProcessTest.java +++ b/ms_specific_proxyservice/src/test/java/at/asitplus/eidas/specific/proxy/test/FullStartUpAndProcessTest.java @@ -79,7 +79,6 @@ import eu.eidas.auth.commons.attribute.ImmutableAttributeMap;  import eu.eidas.auth.commons.light.ILightResponse;  import eu.eidas.auth.commons.light.impl.LightRequest;  import eu.eidas.auth.commons.tx.BinaryLightToken; -import eu.eidas.specificcommunication.SpecificCommunicationDefinitionBeanNames;  import eu.eidas.specificcommunication.protocol.SpecificCommunicationService;  import lombok.SneakyThrows;  import net.shibboleth.utilities.java.support.component.ComponentInitializationException; @@ -131,8 +130,6 @@ public class FullStartUpAndProcessTest {      //eIDAS Ref. Impl. properties      System.setProperty("EIDAS_CONFIG_REPOSITORY", current.substring("file:".length())          + "../basicConfig/eIDAS/"); -    System.setProperty("SPECIFIC_CONNECTOR_CONFIG_REPOSITORY", current.substring("file:".length()) -        + "../basicConfig/eIDAS/");      System.setProperty("SPECIFIC_PROXY_SERVICE_CONFIG_REPOSITORY", current.substring("file:".length())          + "../basicConfig/eIDAS/"); @@ -339,7 +336,7 @@ public class FullStartUpAndProcessTest {    private void validateEidasLightResponse(String eidasNodeRespToken) {          final SpecificCommunicationService springManagedSpecificConnectorCommunicationService =          (SpecificCommunicationService) wac.getBean( -            SpecificCommunicationDefinitionBeanNames.SPECIFIC_PROXYSERVICE_COMMUNICATION_SERVICE.toString()); +            EidasConstants.SPECIFIC_PROXYSERVICE_COMMUNICATION_SERVICE);      ILightResponse lightResp = springManagedSpecificConnectorCommunicationService.getAndRemoveResponse(eidasNodeRespToken,           attrRegistry.getCoreAttributeRegistry().getAttributes()); @@ -469,7 +466,7 @@ public class FullStartUpAndProcessTest {      final SpecificCommunicationService springManagedSpecificConnectorCommunicationService =          (SpecificCommunicationService) wac.getBean( -            SpecificCommunicationDefinitionBeanNames.SPECIFIC_PROXYSERVICE_COMMUNICATION_SERVICE.toString());     +            EidasConstants.SPECIFIC_PROXYSERVICE_COMMUNICATION_SERVICE.toString());      BinaryLightToken token = springManagedSpecificConnectorCommunicationService.putRequest(authnReqBuilder.build());              proxyHttpReq.addParameter(EidasParameterKeys.TOKEN.toString(), Base64Utils.encodeToString(token.getTokenBytes())); @@ -34,7 +34,7 @@      <woodstox-core.version>6.5.0</woodstox-core.version> -    <eidas-ref.version>2.6.0</eidas-ref.version> +    <eidas-ref.version>2.7.0</eidas-ref.version>      <org.apache.commons-lang3.version>3.13.0</org.apache.commons-lang3.version>      <org.apache.commons-text.version>1.10.0</org.apache.commons-text.version> | 
