diff options
14 files changed, 98 insertions, 17 deletions
| diff --git a/basicConfig/default_config.properties b/basicConfig/default_config.properties index 725fac7c..2ea12b17 100644 --- a/basicConfig/default_config.properties +++ b/basicConfig/default_config.properties @@ -18,6 +18,8 @@ eidas.ms.core.pendingrequestid.digist.secret=pendingReqIdSecret  ## eIDAS Ref. Implementation connector ### +eidas.ms.auth.eIDAS.eid.testidentity.default=false +  eidas.ms.auth.eIDAS.node_v2.entityId=ownSpecificConnector  eidas.ms.auth.eIDAS.node_v2.forward.endpoint= diff --git a/connector/src/main/java/at/asitplus/eidas/specific/connector/builder/AuthenticationDataBuilder.java b/connector/src/main/java/at/asitplus/eidas/specific/connector/builder/AuthenticationDataBuilder.java index c41660ce..3a93c1b8 100644 --- a/connector/src/main/java/at/asitplus/eidas/specific/connector/builder/AuthenticationDataBuilder.java +++ b/connector/src/main/java/at/asitplus/eidas/specific/connector/builder/AuthenticationDataBuilder.java @@ -30,6 +30,7 @@ import org.springframework.stereotype.Service;  import at.asitplus.eidas.specific.connector.MsEidasNodeConstants;  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.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; @@ -37,8 +38,9 @@ import at.gv.egiz.eaaf.core.exceptions.EaafBuilderException;  import at.gv.egiz.eaaf.core.exceptions.EaafException;  import at.gv.egiz.eaaf.core.impl.data.Pair;  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.AuthProcessDataWrapper; +import at.gv.egiz.eaaf.core.impl.idp.auth.data.EidAuthProcessDataWrapper;  import lombok.extern.slf4j.Slf4j;  @Service("AuthenticationDataBuilder") @@ -47,9 +49,9 @@ public class AuthenticationDataBuilder extends AbstractAuthenticationDataBuilder    @Override    protected IAuthData buildDeprecatedAuthData(IRequest pendingReq) throws EaafException {         -    final IAuthProcessDataContainer authProcessData = -        pendingReq.getSessionData(AuthProcessDataWrapper.class);     -    AuthenticationData authData = new AuthenticationData(); +    final EidAuthProcessDataWrapper authProcessData = +        pendingReq.getSessionData(EidAuthProcessDataWrapper.class);     +    EidAuthenticationData authData = new EidAuthenticationData();      //set basis infos      super.generateDeprecatedBasicAuthData(authData, pendingReq, authProcessData); @@ -58,6 +60,9 @@ public class AuthenticationDataBuilder extends AbstractAuthenticationDataBuilder      authData.setSsoSessionValidTo(          new Date(new Date().getTime() + MsEidasNodeConstants.DEFAULT_PVP_ASSERTION_VALIDITY * 60 * 1000)); +    authData.setEidStatus(authProcessData.isTestIdentity()  +        ? EidIdentityStatusLevelValues.TESTIDENTITY : EidIdentityStatusLevelValues.IDENTITY); +          return authData;    } @@ -65,16 +70,21 @@ public class AuthenticationDataBuilder extends AbstractAuthenticationDataBuilder    @Override    protected void buildServiceSpecificAuthenticationData(IAuthData authData, IRequest pendingReq)         throws EaafException { -    if (authData instanceof AuthenticationData) { -      ((AuthenticationData)authData).setGenericData( +    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 -      ((AuthenticationData)authData).setSsoSessionValidTo( +      ((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);      } else {        throw new RuntimeException("Can not inject PiiTransactionId because AuthData is of unknown type: "  @@ -86,7 +96,7 @@ public class AuthenticationDataBuilder extends AbstractAuthenticationDataBuilder    @Override    protected IAuthData getAuthDataInstance(IRequest arg0) throws EaafException { -    return new AuthenticationData(); +    return new EidAuthenticationData();    } diff --git a/connector/src/main/resources/application.properties b/connector/src/main/resources/application.properties index 9a4ae54f..2411fde3 100644 --- a/connector/src/main/resources/application.properties +++ b/connector/src/main/resources/application.properties @@ -48,6 +48,8 @@ eidas.ms.core.pendingrequestid.digist.algorithm=HmacSHA256  ## eIDAS Ref. Implementation connector ###  eidas.ms.auth.eIDAS.node_v2.entityId=ownSpecificConnector +eidas.ms.auth.eIDAS.eid.testidentity.default=false +  #eidas.ms.auth.eIDAS.node_v2.forward.endpoint=  eidas.ms.auth.eIDAS.node_v2.forward.method=POST  eidas.ms.auth.eIDAS.node_v2.countrycode=AT diff --git a/connector/src/main/resources/specific_eIDAS_connector.beans.xml b/connector/src/main/resources/specific_eIDAS_connector.beans.xml index f6fdeefe..0f8511d5 100644 --- a/connector/src/main/resources/specific_eIDAS_connector.beans.xml +++ b/connector/src/main/resources/specific_eIDAS_connector.beans.xml @@ -49,6 +49,9 @@      <property name="pvpIdpCredentials">        <ref bean="PVPEndPointCredentialProvider" />      </property> +    <property name="metadataProvider"> +      <ref bean="PVPMetadataProvider" /> +    </property>       </bean>    <bean id="AuthnRequestValidator" @@ -69,6 +72,9 @@      <property name="pvpIdpCredentials">        <ref bean="PVPEndPointCredentialProvider" />      </property> +    <property name="metadataProvider"> +      <ref bean="PVPMetadataProvider" /> +    </property>         </bean>    <bean id="eaafProtocolAuthenticationService" diff --git a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/FullStartUpAndProcessTest.java b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/FullStartUpAndProcessTest.java index fcb0e73a..f50829c7 100644 --- a/connector/src/test/java/at/asitplus/eidas/specific/connector/test/FullStartUpAndProcessTest.java +++ b/connector/src/test/java/at/asitplus/eidas/specific/connector/test/FullStartUpAndProcessTest.java @@ -62,6 +62,7 @@ import at.asitplus.eidas.specific.modules.auth.eidas.v2.EidasSignalServlet;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.EidasAttributeRegistry;  import at.gv.egiz.components.spring.api.SpringBootApplicationContextInitializer;  import at.gv.egiz.eaaf.core.api.data.EaafConstants; +import at.gv.egiz.eaaf.core.api.data.PvpAttributeDefinitions;  import at.gv.egiz.eaaf.core.exceptions.EaafException;  import at.gv.egiz.eaaf.core.impl.idp.controller.ProtocolFinalizationController;  import at.gv.egiz.eaaf.core.impl.utils.DomUtils; @@ -99,7 +100,7 @@ import szrservices.SignContentResponseType;  @ActiveProfiles(profiles = {"JUNIT", "jUnitTestMode"})  public class FullStartUpAndProcessTest { -  private static final String FINAL_REDIRECT = "http://localhost/finalizeAuthProtocol?pendingid="; +  private static final String FINAL_REDIRECT = "http://localhost/public/secure/finalizeAuthProtocol?pendingid=";    @Autowired private WebApplicationContext wac;    @Autowired private PvpEndPointCredentialProvider credentialProvider; @@ -379,7 +380,7 @@ public class FullStartUpAndProcessTest {      Assert.assertEquals("SAML2 status", Constants.SUCCESS_URI, saml2.getStatus().getStatusCode().getValue());      final AssertionAttributeExtractor extractor = new AssertionAttributeExtractor(saml2); -    Assert.assertEquals("wrong resp attr. size", 6, extractor.getAllIncludeAttributeNames().size()); +    Assert.assertEquals("wrong resp attr. size", 7, extractor.getAllIncludeAttributeNames().size());      Assert.assertEquals("Wrong attr: LoA ", "http://eidas.europa.eu/LoA/high",           extractor.getSingleAttributeValue("urn:oid:1.2.40.0.10.2.1.1.261.108"));      Assert.assertEquals("Wrong attr: PVP_VERSION ", "2.2",  @@ -392,6 +393,8 @@ public class FullStartUpAndProcessTest {          extractor.getSingleAttributeValue("urn:eidgvat:attributes.authblock.signed"));      Assert.assertNotNull("Wrong attr: piiTras.Id ",           extractor.getSingleAttributeValue("urn:eidgvat:attributes.piiTransactionId")); +    Assert.assertEquals("Wrong attr:EID_STATUS_LEVEL ", "http://eid.gv.at/eID/status/identity", +        extractor.getSingleAttributeValue(PvpAttributeDefinitions.EID_IDENTITY_STATUS_LEVEL_NAME));    } 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 d2c4aff2..5b612036 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 @@ -69,7 +69,7 @@ public class ProcessEngineSignalControllerTest {      Assert.assertEquals("http StatusCode", 302, httpResp.getStatus());      Assert.assertNotNull("redirect header", httpResp.getHeaderValue("Location"));      Assert.assertTrue("wrong redirect header",  -        httpResp.getHeader("Location").startsWith("http://localhost/errorHandling?errorid=")); +        httpResp.getHeader("Location").startsWith("http://localhost/public/secure/errorHandling?errorid="));    } 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 index 5f1c5dcf..0df8638c 100644 --- 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 @@ -11,6 +11,7 @@ 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; @@ -35,6 +36,7 @@ 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; @@ -42,8 +44,10 @@ 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.idp.EidAuthenticationData;  import at.gv.egiz.eaaf.core.impl.idp.auth.builder.BpkBuilder;  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; @@ -118,8 +122,10 @@ public class AuthenticationDataBuilderTest {    @Test    public void eidMode() throws EaafAuthenticationException {      // initialize state +    boolean isTestIdentity = RandomUtils.nextBoolean();      pendingReq.getSessionData(AuthProcessDataWrapper.class).setEidProcess(true); - +    pendingReq.getSessionData(EidAuthProcessDataWrapper.class).setTestIdentity(isTestIdentity); +          // execute      IAuthData authData = authenticationDataBuilder.buildAuthenticationData(pendingReq); @@ -128,6 +134,9 @@ public class AuthenticationDataBuilderTest {      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); @@ -159,6 +168,8 @@ public class AuthenticationDataBuilderTest {    @Test    public void moaIdMode() throws EaafAuthenticationException, EaafBuilderException {      //initialize state +    boolean isTestIdentity = RandomUtils.nextBoolean(); +    pendingReq.getSessionData(AuthProcessDataWrapper.class).setEidProcess(true);          pendingReq.getSessionData(AuthProcessDataWrapper.class).setEidProcess(false);      IIdentityLink idl = buildDummyIdl();      pendingReq.getSessionData(AuthProcessDataWrapper.class).setIdentityLink(idl); @@ -173,6 +184,9 @@ public class AuthenticationDataBuilderTest {      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()); diff --git a/connector/src/test/resources/data/metadata_valid_without_encryption.xml b/connector/src/test/resources/data/metadata_valid_without_encryption.xml index b224c336..32b24e91 100644 --- a/connector/src/test/resources/data/metadata_valid_without_encryption.xml +++ b/connector/src/test/resources/data/metadata_valid_without_encryption.xml @@ -71,6 +71,7 @@ ANsmjI2azWiTSFjb7Ou5fnCfbeiJUP0s66m8qS4rYl9L</ds:X509Certificate>        <md:RequestedAttribute FriendlyName="userAuthBlock" Name="urn:eidgvat:attributes.authblock.signed" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="false"/>        <md:RequestedAttribute FriendlyName="eidBind" Name="urn:eidgvat:attributes.eidbind" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="false"/>        <md:RequestedAttribute FriendlyName="piiTransactionId" Name="urn:eidgvat:attributes.piiTransactionId" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="false"/> +      <md:RequestedAttribute FriendlyName="EID-IDENTITY-STATUS-LEVEL" Name="urn:oid:1.2.40.0.10.2.1.1.261.109" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" isRequired="false"/>      </md:AttributeConsumingService>    </md:SPSSODescriptor>    <md:Organization> diff --git a/connector/src/test/resources/spring/SpringTest_connector.beans.xml b/connector/src/test/resources/spring/SpringTest_connector.beans.xml index ba385cb9..83acf445 100644 --- a/connector/src/test/resources/spring/SpringTest_connector.beans.xml +++ b/connector/src/test/resources/spring/SpringTest_connector.beans.xml @@ -41,6 +41,9 @@      <property name="pvpIdpCredentials">        <ref bean="PVPEndPointCredentialProvider" />      </property> +    <property name="metadataProvider"> +      <ref bean="PVPMetadataProvider" /> +    </property>           </bean>    <bean id="AuthnRequestValidator" @@ -61,6 +64,9 @@      <property name="pvpIdpCredentials">        <ref bean="PVPEndPointCredentialProvider" />      </property> +    <property name="metadataProvider"> +      <ref bean="PVPMetadataProvider" /> +    </property>         </bean>    <bean id="eaafProtocolAuthenticationService" diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java index c175d999..d13dd00f 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java @@ -41,6 +41,8 @@ public class Constants {    // configuration properties    public static final String CONIG_PROPS_EIDAS_PREFIX = "auth.eIDAS"; +  public static final String CONIG_PROPS_EIDAS_IS_TEST_IDENTITY = CONIG_PROPS_EIDAS_PREFIX  +      + ".eid.testidentity.default";    public static final String CONIG_PROPS_EIDAS_NODE = CONIG_PROPS_EIDAS_PREFIX + ".node_v2";    public static final String CONIG_PROPS_EIDAS_NODE_COUNTRYCODE = CONIG_PROPS_EIDAS_NODE + ".countrycode";    public static final String CONIG_PROPS_EIDAS_NODE_PUBLICSECTOR_TARGETS = CONIG_PROPS_EIDAS_NODE diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveAuthnResponseTask.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveAuthnResponseTask.java index 684546f7..6cab9214 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveAuthnResponseTask.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveAuthnResponseTask.java @@ -39,7 +39,7 @@ import at.gv.egiz.eaaf.core.api.idp.IConfiguration;  import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext;  import at.gv.egiz.eaaf.core.exceptions.EaafException;  import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException; -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.modules.AbstractAuthServletTask;  import eu.eidas.auth.commons.light.ILightResponse;  import lombok.extern.slf4j.Slf4j; @@ -99,10 +99,15 @@ public class ReceiveAuthnResponseTask extends AbstractAuthServletTask {        // update MOA-Session data with received information        log.debug("Store eIDAS response information into pending-request."); -      final AuthProcessDataWrapper authProcessData = pendingReq.getSessionData(AuthProcessDataWrapper.class); +      final EidAuthProcessDataWrapper authProcessData = pendingReq.getSessionData(EidAuthProcessDataWrapper.class);        authProcessData.setQaaLevel(eidasResponse.getLevelOfAssurance());        authProcessData.setGenericDataToSession(Constants.DATA_FULL_EIDAS_RESPONSE, eidasResponse); +       +      //inject set flag to inject  +      authProcessData.setTestIdentity( +          basicConfig.getBasicConfigurationBoolean(Constants.CONIG_PROPS_EIDAS_IS_TEST_IDENTITY, false)); +                    // store MOA-session to database        requestStoreage.storePendingRequest(pendingReq); diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveEidasResponseTaskTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveEidasResponseTaskTest.java index de9b2d3b..0e56e2b3 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveEidasResponseTaskTest.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveEidasResponseTaskTest.java @@ -39,7 +39,7 @@ import at.gv.egiz.eaaf.core.exceptions.EaafException;  import at.gv.egiz.eaaf.core.exceptions.EaafStorageException;  import at.gv.egiz.eaaf.core.exceptions.PendingReqIdValidationException;  import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException; -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.module.test.TestRequestImpl;  import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl;  import at.gv.egiz.eaaf.core.impl.utils.Random; @@ -84,6 +84,7 @@ public class ReceiveEidasResponseTaskTest {      RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(httpReq, httpResp));      basicConfig.putConfigValue("eidas.ms.auth.eIDAS.szrclient.debug.useDummySolution", "false"); +    basicConfig.putConfigValue("eidas.ms.auth.eIDAS.eid.testidentity.default", "false");      final Map<String, String> spConfig = new HashMap<>();      spConfig.put(EaafConfigConstants.SERVICE_UNIQUEIDENTIFIER, "testSp"); @@ -153,15 +154,44 @@ public class ReceiveEidasResponseTaskTest {      IRequest storedReq = storage.getPendingRequest(pendingReq.getPendingRequestId());      Assert.assertNotNull("pendingReq not stored", storedReq); -    final AuthProcessDataWrapper authProcessData = storedReq.getSessionData(AuthProcessDataWrapper.class); +    final EidAuthProcessDataWrapper authProcessData = storedReq.getSessionData(EidAuthProcessDataWrapper.class);      Assert.assertEquals("LoA", eidasResponse.getLevelOfAssurance(), authProcessData.getQaaLevel());      Assert.assertNotNull("eIDAS response",           authProcessData.getGenericDataFromSession(Constants.DATA_FULL_EIDAS_RESPONSE));      Assert.assertEquals("eIDAS response", eidasResponse,           authProcessData.getGenericDataFromSession(Constants.DATA_FULL_EIDAS_RESPONSE)); +    Assert.assertFalse("testIdentity flag", authProcessData.isTestIdentity());    } +  @Test +  public void successWithTestIdentity() throws URISyntaxException, TaskExecutionException, PendingReqIdValidationException {     +    basicConfig.putConfigValue("eidas.ms.auth.eIDAS.eid.testidentity.default", "true"); +     +    @NotNull         +    AuthenticationResponse eidasResponse = buildDummyAuthResponse(Constants.SUCCESS_URI); +    httpReq.setAttribute(Constants.DATA_FULL_EIDAS_RESPONSE, eidasResponse); +    executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "LU");     +       +    //execute test +    task.execute(pendingReq, executionContext); +     +    //validate state +    IRequest storedReq = storage.getPendingRequest(pendingReq.getPendingRequestId()); +    Assert.assertNotNull("pendingReq not stored", storedReq); +     +    final EidAuthProcessDataWrapper authProcessData = storedReq.getSessionData(EidAuthProcessDataWrapper.class); +    Assert.assertEquals("LoA", eidasResponse.getLevelOfAssurance(), authProcessData.getQaaLevel()); +    Assert.assertNotNull("eIDAS response",  +        authProcessData.getGenericDataFromSession(Constants.DATA_FULL_EIDAS_RESPONSE)); +    Assert.assertEquals("eIDAS response", eidasResponse,  +        authProcessData.getGenericDataFromSession(Constants.DATA_FULL_EIDAS_RESPONSE)); +    Assert.assertTrue("testIdentity flag", authProcessData.isTestIdentity()); +         +  } +   +   +      @NotNull    private AuthenticationResponse buildDummyAuthResponse(String statusCode) throws URISyntaxException {      final AttributeDefinition attributeDef = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( diff --git a/infos/handbook-work_in_progress.docx b/infos/handbook-work_in_progress.docxBinary files differ index d311fa80..192db5d4 100644 --- a/infos/handbook-work_in_progress.docx +++ b/infos/handbook-work_in_progress.docx @@ -22,7 +22,7 @@      <!-- ===================================================================== -->      <egiz-spring-api>0.3</egiz-spring-api>      <egiz-eventlog-slf4jBackend>0.4</egiz-eventlog-slf4jBackend> -    <eaaf-core.version>1.1.11</eaaf-core.version> +    <eaaf-core.version>1.1.13-SNAPSHOT</eaaf-core.version>      <spring-boot-starter-web.version>2.4.1</spring-boot-starter-web.version>      <spring-boot-admin-starter-client.version>2.3.1</spring-boot-admin-starter-client.version> | 
