diff options
Diffstat (limited to 'modules')
47 files changed, 728 insertions, 435 deletions
| diff --git a/modules/authmodule-eIDAS-v2/checks/spotbugs-exclude.xml b/modules/authmodule-eIDAS-v2/checks/spotbugs-exclude.xml index 9b12a750..84efc85d 100644 --- a/modules/authmodule-eIDAS-v2/checks/spotbugs-exclude.xml +++ b/modules/authmodule-eIDAS-v2/checks/spotbugs-exclude.xml @@ -23,13 +23,7 @@        <Class name="at.asitplus.eidas.specific.modules.auth.eidas.v2.EidasSignalServlet" />        <Method name="restoreEidasAuthProcess" />        <Bug pattern="SPRING_CSRF_UNRESTRICTED_REQUEST_MAPPING" />                -    </Match> -    <Match> -      <!-- File path is only loaded from configuration --> -      <Class name="at.asitplus.eidas.specific.modules.auth.eidas.v2.service.EidasAttributeRegistry" /> -      <Method name="initialize" /> -      <Bug pattern="PATH_TRAVERSAL_IN" />                -    </Match> +    </Match>          <Match>        <!-- Redirect URL is only loaded from configuration -->        <Class name="at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.GenerateAuthnRequestTask" /> diff --git a/modules/authmodule-eIDAS-v2/pom.xml b/modules/authmodule-eIDAS-v2/pom.xml index bcec12b6..cfc7ac94 100644 --- a/modules/authmodule-eIDAS-v2/pom.xml +++ b/modules/authmodule-eIDAS-v2/pom.xml @@ -46,6 +46,10 @@        <artifactId>core_common_lib</artifactId>      </dependency>      <dependency> +      <groupId>at.asitplus.eidas.ms_specific</groupId> +      <artifactId>core_commons_eidas</artifactId> +    </dependency>      +    <dependency>        <groupId>at.gv.egiz.eaaf</groupId>        <artifactId>eaaf-core</artifactId>      </dependency> @@ -194,7 +198,12 @@        <scope>test</scope>        <type>test-jar</type>      </dependency> - +    <dependency> +      <groupId>at.asitplus.eidas.ms_specific</groupId> +      <artifactId>core_commons_eidas</artifactId> +      <scope>test</scope> +      <type>test-jar</type>         +    </dependency>                <dependency>        <groupId>at.gv.egiz.eaaf</groupId>        <artifactId>eaaf_core_utils</artifactId> diff --git a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java index 4b234c41..e766fc49 100644 --- a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java +++ b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java @@ -23,6 +23,7 @@  package at.asitplus.eidas.specific.modules.auth.eidas.v2; +import at.asitplus.eidas.specific.modules.core.eidas.EidasConstants;  import at.gv.egiz.eaaf.core.api.data.EaafConstants;  public class Constants { @@ -54,21 +55,16 @@ public class Constants {     */    public static final String DATA_PERSON_MATCH_RESULT = "matching_result"; -  // templates for post-binding forwarding -  public static final String TEMPLATE_POST_FORWARD_NAME = "eidas_node_forward.html"; -  public static final String TEMPLATE_POST_FORWARD_ENDPOINT = "endPoint"; -  public static final String TEMPLATE_POST_FORWARD_TOKEN_NAME = "tokenName"; -  public static final String TEMPLATE_POST_FORWARD_TOKEN_VALUE = "tokenValue"; +    // configuration properties -  public static final String CONIG_PROPS_EIDAS_PREFIX = "auth.eIDAS"; -   +        public static final String CONIG_PROPS_EIDAS_WORKAROUND_STAGING_MS_CONNECTOR = -      CONIG_PROPS_EIDAS_PREFIX + ".workarounds.staging.msconnector.endpoint";   +      EidasConstants.CONIG_PROPS_EIDAS_PREFIX + ".workarounds.staging.msconnector.endpoint";      public static final String CONIG_PROPS_EIDAS_IS_TEST_IDENTITY =  -      CONIG_PROPS_EIDAS_PREFIX  + ".eid.testidentity.default"; +      EidasConstants.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 = EidasConstants.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        + ".publicSectorTargets"; @@ -78,15 +74,17 @@ public class Constants {    public static final String CONIG_PROPS_EIDAS_NODE_FORWARD_METHOD = CONIG_PROPS_EIDAS_NODE        + ".forward.method"; +      public static final String CONIG_PROPS_EIDAS_NODE_ATTRIBUTES_REQUESTED_DEFAULT_ONLYNATURAL = -      CONIG_PROPS_EIDAS_NODE + ".attributes.requested.onlynatural"; +      EidasConstants.CONIG_PROPS_EIDAS_NODE + ".attributes.requested.onlynatural";    public static final String CONIG_PROPS_EIDAS_NODE_ATTRIBUTES_REQUESTED_CC_SPECIFIC_ONLYNATURAL = -      CONIG_PROPS_EIDAS_NODE + ".attributes.requested.{0}.onlynatural"; +      EidasConstants.CONIG_PROPS_EIDAS_NODE + ".attributes.requested.{0}.onlynatural";    public static final String CONIG_PROPS_EIDAS_NODE_ATTRIBUTES_REQUESTED_REPRESENTATION = -      CONIG_PROPS_EIDAS_NODE + ".attributes.requested.representation"; +      EidasConstants.CONIG_PROPS_EIDAS_NODE + ".attributes.requested.representation"; +      public static final String CONIG_PROPS_EIDAS_NODE_REQUESTERID_USE_HASHED_VERSION = -      CONIG_PROPS_EIDAS_NODE + ".requesterId.useHashedForm"; +      EidasConstants.CONIG_PROPS_EIDAS_NODE + ".requesterId.useHashedForm";    public static final String CONIG_PROPS_EIDAS_NODE_WORKAROUND_USE_STATIC_REQUESTERID_FOR_LUX =        CONIG_PROPS_EIDAS_NODE + ".requesterId.lu.useStaticRequesterForAll"; @@ -107,7 +105,8 @@ public class Constants {    // Common SSL client configuration  -  public static final String CONIG_PROPS_EIDAS_COMMON_CLIENT = CONIG_PROPS_EIDAS_PREFIX + ".client.common"; +  public static final String CONIG_PROPS_EIDAS_COMMON_CLIENT =  +      EidasConstants.CONIG_PROPS_EIDAS_PREFIX + ".client.common";    public static final String CONIG_PROPS_EIDAS_COMMON_CLIENT_SSL_KEYSTORE_PATH = CONIG_PROPS_EIDAS_COMMON_CLIENT        + ".ssl.keyStore.path";    public static final String CONIG_PROPS_EIDAS_COMMON_CLIENT_SSL_KEYSTORE_PASSWORD = CONIG_PROPS_EIDAS_COMMON_CLIENT @@ -131,7 +130,8 @@ public class Constants {    // ZMR Client configuration properties -  public static final String CONIG_PROPS_EIDAS_ZMRCLIENT = CONIG_PROPS_EIDAS_PREFIX + ".zmrclient"; +  public static final String CONIG_PROPS_EIDAS_ZMRCLIENT =  +      EidasConstants.CONIG_PROPS_EIDAS_PREFIX + ".zmrclient";    public static final String CONIG_PROPS_EIDAS_ZMRCLIENT_ENDPOINT = CONIG_PROPS_EIDAS_ZMRCLIENT        + ".endpoint";    public static final String CONIG_PROPS_EIDAS_ZMRCLIENT_DEBUG_TRACEMESSAGES = CONIG_PROPS_EIDAS_ZMRCLIENT @@ -168,7 +168,8 @@ public class Constants {        + ".ssl.trustStore.name";    // ErnP Client configuration properties -  public static final String CONIG_PROPS_EIDAS_ERNPCLIENT = CONIG_PROPS_EIDAS_PREFIX + ".ernpclient"; +  public static final String CONIG_PROPS_EIDAS_ERNPCLIENT =  +      EidasConstants.CONIG_PROPS_EIDAS_PREFIX + ".ernpclient";    public static final String CONIG_PROPS_EIDAS_ERNPCLIENT_ENDPOINT = CONIG_PROPS_EIDAS_ERNPCLIENT        + ".endpoint";    public static final String CONIG_PROPS_EIDAS_ERNPCLIENT_SSL_KEYSTORE_PATH = CONIG_PROPS_EIDAS_ERNPCLIENT @@ -203,7 +204,8 @@ public class Constants {    // SZR Client configuration properties -  public static final String CONIG_PROPS_EIDAS_SZRCLIENT = CONIG_PROPS_EIDAS_PREFIX + ".szrclient"; +  public static final String CONIG_PROPS_EIDAS_SZRCLIENT =  +      EidasConstants.CONIG_PROPS_EIDAS_PREFIX + ".szrclient";    public static final String CONIG_PROPS_EIDAS_SZRCLIENT_USETESTSERVICE = CONIG_PROPS_EIDAS_SZRCLIENT        + ".useTestService";    public static final String CONIG_PROPS_EIDAS_SZRCLIENT_DEBUG_TRACEMESSAGES = CONIG_PROPS_EIDAS_SZRCLIENT @@ -261,7 +263,7 @@ public class Constants {    public static final String CONIG_PROPS_EIDAS_SZRCLIENT_WORKAROUND_REVISIONLOGDATASTORE_ACTIVE =        CONIG_PROPS_EIDAS_SZRCLIENT + ".revisionlog.eidmapping.active"; -  public static final String DEFAULT_MS_NODE_COUNTRY_CODE = "AT"; +      @Deprecated    public static final String CONIG_PROPS_EIDAS_SZRCLIENT_WORKAROUND_SQLLITEDATASTORE_URL = @@ -279,50 +281,12 @@ public class Constants {    // eIDAS request parameters    public static final String eIDAS_REQ_NAMEID_FORMAT = "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"; -  // eIDAS attribute names -  public static final String eIDAS_ATTR_PERSONALIDENTIFIER = "PersonIdentifier"; -  public static final String eIDAS_ATTR_DATEOFBIRTH = "DateOfBirth"; -  public static final String eIDAS_ATTR_CURRENTGIVENNAME = "FirstName"; -  public static final String eIDAS_ATTR_CURRENTFAMILYNAME = "FamilyName"; -  public static final String eIDAS_ATTR_PLACEOFBIRTH = "PlaceOfBirth"; -  public static final String eIDAS_ATTR_BIRTHNAME = "BirthName"; -  public static final String eIDAS_ATTR_CURRENTADDRESS = "CurrentAddress"; -  public static final String eIDAS_ATTR_TAXREFERENCE = "TaxReference"; - -  public static final String eIDAS_ATTR_LEGALPERSONIDENTIFIER = "LegalPersonIdentifier"; -  public static final String eIDAS_ATTR_LEGALNAME = "LegalName"; - -  public static final String eIDAS_ATTR_REPRESENTATIVE_PERSONALIDENTIFIER = "RepresentativePersonIdentifier"; -  public static final String eIDAS_ATTR_REPRESENTATIVE_DATEOFBIRTH = "RepresentativeDateOfBirth"; -  public static final String eIDAS_ATTR_REPRESENTATIVE_CURRENTGIVENNAME = "RepresentativeFirstName"; -  public static final String eIDAS_ATTR_REPRESENTATIVE_CURRENTFAMILYNAME = "RepresentativeFamilyName"; -     -  //eIDAS attribute URN -  public static final String eIDAS_ATTRURN_PREFIX = "http://eidas.europa.eu/attributes/"; -  public static final String eIDAS_ATTRURN_PREFIX_NATURAL = eIDAS_ATTRURN_PREFIX + "naturalperson/"; - -  public static final String eIDAS_ATTRURN_PERSONALIDENTIFIER = -      eIDAS_ATTRURN_PREFIX_NATURAL + eIDAS_ATTR_PERSONALIDENTIFIER;   -  public static final String eIDAS_ATTRURN_CURRENTGIVENNAME = -      eIDAS_ATTRURN_PREFIX_NATURAL + "CurrentGivenName"; -  public static final String eIDAS_ATTRURN_CURRENTFAMILYNAME = -      eIDAS_ATTRURN_PREFIX_NATURAL + "CurrentFamilyName"; -  public static final String eIDAS_ATTRURN_DATEOFBIRTH = -      eIDAS_ATTRURN_PREFIX_NATURAL + eIDAS_ATTR_DATEOFBIRTH;   -  public static final String eIDAS_ATTRURN_PLACEOFBIRTH = -      eIDAS_ATTRURN_PREFIX_NATURAL + eIDAS_ATTR_PLACEOFBIRTH; -  public static final String eIDAS_ATTRURN_BIRTHNAME = -      eIDAS_ATTRURN_PREFIX_NATURAL + eIDAS_ATTR_BIRTHNAME; -    public static final String eIDAS_REQ_PARAM_SECTOR_PUBLIC = "public";    public static final String eIDAS_REQ_PARAM_SECTOR_PRIVATE = "private";    public static final String POLICY_DEFAULT_ALLOWED_TARGETS =        EaafConstants.URN_PREFIX_CDID.replaceAll("\\.", "\\\\.").replaceAll("\\+", "\\\\+") + ".*"; -  // SAML2 Constants -  public static final String SUCCESS_URI = "urn:oasis:names:tc:SAML:2.0:status:Success"; -  public static final String ERROR_URI = "urn:oasis:names:tc:SAML:2.0:status:Responder";    public static final String HTTP_CLIENT_DEFAULT_TIMEOUT_CONNECTION = "30"; // seconds    public static final String HTTP_CLIENT_DEFAULT_TIMEOUT_RESPONSE = "60"; // seconds 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 d3cac80c..e3600329 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,7 +40,7 @@ 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.auth.eidas.v2.service.EidasAttributeRegistry; +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; diff --git a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/ernp/ErnpRestClient.java b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/ernp/ErnpRestClient.java index 119a7c60..a847a519 100644 --- a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/ernp/ErnpRestClient.java +++ b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/ernp/ErnpRestClient.java @@ -65,6 +65,7 @@ import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasSAuthenti  import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.ErnpRestCommunicationException;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.WorkflowException;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.VersionHolder; +import at.asitplus.eidas.specific.modules.core.eidas.EidasConstants;  import at.gv.bmi.namespace.zmr_su.base._20040201_.ServiceFault;  import at.gv.bmi.namespace.zmr_su.zmr._20040201.EidasSuchdatenType;  import at.gv.bmi.namespace.zmr_su.zmr._20040201.PersonSuchenRequest; @@ -104,7 +105,7 @@ public class ErnpRestClient implements IErnpClient {    //    "ERnP anwser for transaction: {0} with code: {1} and message: {2}";    private static final String PROCESS_SEARCH_PERSONAL_IDENTIFIER = -      "Searching " + Constants.eIDAS_ATTR_PERSONALIDENTIFIER; +      "Searching " + EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER;    private static final String PROCESS_SEARCH_MDS_ONLY = "Searching with MDS only";    private static final String PROCESS_SEARCH_COUNTRY_SPECIFIC = "Searching {0} specific"; @@ -139,7 +140,7 @@ public class ErnpRestClient implements IErnpClient {        // build search request        final SuchEidas eidasInfos = new SuchEidas(); -      eidasInfos.setArt(Constants.eIDAS_ATTRURN_PERSONALIDENTIFIER); +      eidasInfos.setArt(EidasConstants.eIDAS_ATTRURN_PERSONALIDENTIFIER);        eidasInfos.setWert(personIdentifier);        eidasInfos.setStaatscode2(citizenCountryCode); @@ -427,15 +428,15 @@ public class ErnpRestClient implements IErnpClient {      // build result      return RegisterResult.builder()          .pseudonym(selectAllEidasDocument(person, citizenCountryCode, -            Constants.eIDAS_ATTRURN_PERSONALIDENTIFIER)) +            EidasConstants.eIDAS_ATTRURN_PERSONALIDENTIFIER))          .familyName(person.getPersonendaten().getFamilienname())          .givenName(person.getPersonendaten().getVorname())          .dateOfBirth(getTextualBirthday(person.getPersonendaten().getGeburtsdatum()))          .bpk(person.getPersonendaten().getBpkZp())          .placeOfBirth(selectSingleEidasDocument(person, citizenCountryCode, -            Constants.eIDAS_ATTRURN_PLACEOFBIRTH)) +            EidasConstants.eIDAS_ATTRURN_PLACEOFBIRTH))          .birthName(selectSingleEidasDocument(person, citizenCountryCode, -            Constants.eIDAS_ATTRURN_BIRTHNAME)) +            EidasConstants.eIDAS_ATTRURN_BIRTHNAME))          .build();    } @@ -501,11 +502,11 @@ public class ErnpRestClient implements IErnpClient {      //TODO: maybe we should re-factor SimpleEidasData to a generic data-model to facilitate arbitrary eIDAS attributes        Set<Eidas> result = new HashSet<>();         addEidasDocumentIfNotAvailable(result, ernpPersonToKitt, eidData.getCitizenCountryCode(),  -        Constants.eIDAS_ATTRURN_PERSONALIDENTIFIER, eidData.getPseudonym(), true);     +        EidasConstants.eIDAS_ATTRURN_PERSONALIDENTIFIER, eidData.getPseudonym(), true);          addEidasDocumentIfNotAvailable(result, ernpPersonToKitt, eidData.getCitizenCountryCode(),  -        Constants.eIDAS_ATTRURN_PLACEOFBIRTH, eidData.getPlaceOfBirth(), false); +        EidasConstants.eIDAS_ATTRURN_PLACEOFBIRTH, eidData.getPlaceOfBirth(), false);      addEidasDocumentIfNotAvailable(result, ernpPersonToKitt, eidData.getCitizenCountryCode(),  -        Constants.eIDAS_ATTRURN_BIRTHNAME, eidData.getBirthName(), false); +        EidasConstants.eIDAS_ATTRURN_BIRTHNAME, eidData.getBirthName(), false);      return result; @@ -596,17 +597,17 @@ public class ErnpRestClient implements IErnpClient {    private void buildNewEidasDocumens(PersonAnlegen ernpReq, SimpleEidasData eidData) {      ernpReq.addEidasItem(buildNewEidasDocument(eidData.getCitizenCountryCode(),  -        Constants.eIDAS_ATTRURN_PERSONALIDENTIFIER, eidData.getPseudonym())); +        EidasConstants.eIDAS_ATTRURN_PERSONALIDENTIFIER, eidData.getPseudonym()));      if (StringUtils.isNotEmpty(eidData.getPlaceOfBirth())) {        ernpReq.addEidasItem(buildNewEidasDocument(eidData.getCitizenCountryCode(), -          Constants.eIDAS_ATTRURN_PLACEOFBIRTH, eidData.getPlaceOfBirth())); +          EidasConstants.eIDAS_ATTRURN_PLACEOFBIRTH, eidData.getPlaceOfBirth()));      }      if (StringUtils.isNotEmpty(eidData.getBirthName())) {        ernpReq.addEidasItem(buildNewEidasDocument(eidData.getCitizenCountryCode(),  -          Constants.eIDAS_ATTRURN_BIRTHNAME, eidData.getBirthName())); +          EidasConstants.eIDAS_ATTRURN_BIRTHNAME, eidData.getBirthName()));      }            } diff --git a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/zmr/ZmrSoapClient.java b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/zmr/ZmrSoapClient.java index 8dbd0632..904afc37 100644 --- a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/zmr/ZmrSoapClient.java +++ b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/zmr/ZmrSoapClient.java @@ -31,6 +31,7 @@ import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasSAuthenti  import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.WorkflowException;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.ZmrCommunicationException;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.VersionHolder; +import at.asitplus.eidas.specific.modules.core.eidas.EidasConstants;  import at.gv.bmi.namespace.zmr_su.base._20040201.ClientInfoType;  import at.gv.bmi.namespace.zmr_su.base._20040201.Organisation;  import at.gv.bmi.namespace.zmr_su.base._20040201.RequestType; @@ -95,7 +96,7 @@ public class ZmrSoapClient extends AbstractSoapClient implements IZmrClient {    private static final String PROCESS_TASK_UPDATE = "ZPR_VO_Person_aendern";    private static final String PROCESS_SEARCH_PERSONAL_IDENTIFIER =  -      "Searching " + Constants.eIDAS_ATTR_PERSONALIDENTIFIER; +      "Searching " + EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER;    private static final String PROCESS_SEARCH_MDS_ONLY = "Searching with MDS only";    private static final String PROCESS_SEARCH_COUNTRY_SPECIFIC = "Searching {0} specific";    private static final String PROCESS_SEARCH_BY_RESIDENCE = "Searching by residence"; @@ -133,7 +134,7 @@ public class ZmrSoapClient extends AbstractSoapClient implements IZmrClient {        req.setPersonSuchenRequest(searchPersonReq);        final EidasSuchdatenType eidasInfos = new EidasSuchdatenType();        searchPersonReq.getEidasSuchdaten().add(eidasInfos); -      eidasInfos.setEidasArt(Constants.eIDAS_ATTRURN_PERSONALIDENTIFIER); +      eidasInfos.setEidasArt(EidasConstants.eIDAS_ATTRURN_PERSONALIDENTIFIER);        eidasInfos.setEidasWert(personPseudonym);        eidasInfos.setStaatscode2(citizenCountryCode); @@ -589,15 +590,15 @@ public class ZmrSoapClient extends AbstractSoapClient implements IZmrClient {      // build result      return RegisterResult.builder()          .pseudonym(selectAllEidasDocument(person, citizenCountryCode, -            Constants.eIDAS_ATTRURN_PERSONALIDENTIFIER)) +            EidasConstants.eIDAS_ATTRURN_PERSONALIDENTIFIER))          .familyName(person.getNatuerlichePerson().getPersonenName().getFamilienname())          .givenName(person.getNatuerlichePerson().getPersonenName().getVorname())          .dateOfBirth(person.getNatuerlichePerson().getGeburtsdatum())          .bpk(extractBpkZp(person.getNatuerlichePerson()))          .placeOfBirth(selectSingleEidasDocument(person, citizenCountryCode, -            Constants.eIDAS_ATTRURN_PLACEOFBIRTH)) +            EidasConstants.eIDAS_ATTRURN_PLACEOFBIRTH))          .birthName(selectSingleEidasDocument(person, citizenCountryCode, -            Constants.eIDAS_ATTRURN_BIRTHNAME))         +            EidasConstants.eIDAS_ATTRURN_BIRTHNAME))                  .build();    } @@ -765,19 +766,19 @@ public class ZmrSoapClient extends AbstractSoapClient implements IZmrClient {      //TODO: maybe we should re-factor SimpleEidasData to a generic data-model to facilitate arbitrary eIDAS attributes        Set<EidasIdentitaetAnlageType> result = new HashSet<>();         addEidasDocumentIfNotAvailable(result, zmrPersonToKitt, eidData.getCitizenCountryCode(),  -        Constants.eIDAS_ATTRURN_PERSONALIDENTIFIER, eidData.getPseudonym(), true);     +        EidasConstants.eIDAS_ATTRURN_PERSONALIDENTIFIER, eidData.getPseudonym(), true);          addEidasDocumentIfNotAvailable(result, zmrPersonToKitt, eidData.getCitizenCountryCode(),  -        Constants.eIDAS_ATTRURN_PLACEOFBIRTH, eidData.getPlaceOfBirth(), false); +        EidasConstants.eIDAS_ATTRURN_PLACEOFBIRTH, eidData.getPlaceOfBirth(), false);      addEidasDocumentIfNotAvailable(result, zmrPersonToKitt, eidData.getCitizenCountryCode(),  -        Constants.eIDAS_ATTRURN_BIRTHNAME, eidData.getBirthName(), false); +        EidasConstants.eIDAS_ATTRURN_BIRTHNAME, eidData.getBirthName(), false);      // add MDS attributes as 'eIDAS-Documents' too, because ZMR does not allow a MDS update on regular places.      addEidasDocumentIfNotAvailable(result, zmrPersonToKitt, eidData.getCitizenCountryCode(),  -        Constants.eIDAS_ATTRURN_CURRENTGIVENNAME, eidData.getGivenName(), false); +        EidasConstants.eIDAS_ATTRURN_CURRENTGIVENNAME, eidData.getGivenName(), false);      addEidasDocumentIfNotAvailable(result, zmrPersonToKitt, eidData.getCitizenCountryCode(),  -        Constants.eIDAS_ATTRURN_CURRENTFAMILYNAME, eidData.getFamilyName(), false); +        EidasConstants.eIDAS_ATTRURN_CURRENTFAMILYNAME, eidData.getFamilyName(), false);      addEidasDocumentIfNotAvailable(result, zmrPersonToKitt,  eidData.getCitizenCountryCode(),  -        Constants.eIDAS_ATTRURN_DATEOFBIRTH, eidData.getDateOfBirth(), false); +        EidasConstants.eIDAS_ATTRURN_DATEOFBIRTH, eidData.getDateOfBirth(), false);      return result; diff --git a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/AbstractEidProcessor.java b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/AbstractEidProcessor.java index f626e986..8716f80d 100644 --- a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/AbstractEidProcessor.java +++ b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/AbstractEidProcessor.java @@ -48,8 +48,9 @@ import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidPostProcessingException;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasAttributeException; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.EidasAttributeRegistry; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.ConnectorEidasAttributeRegistry;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.EidasResponseUtils; +import at.asitplus.eidas.specific.modules.core.eidas.EidasConstants;  import at.gv.e_government.reference.namespace.persondata._20020228.PostalAddressType;  import at.gv.egiz.eaaf.core.api.IRequest;  import at.gv.egiz.eaaf.core.api.data.EaafConstants; @@ -65,7 +66,7 @@ import lombok.extern.slf4j.Slf4j;  public abstract class AbstractEidProcessor implements INationalEidProcessor {    @Autowired -  protected EidasAttributeRegistry attrRegistry; +  protected ConnectorEidasAttributeRegistry attrRegistry;    @Autowired    protected IConfigurationWithSP basicConfig; @@ -81,28 +82,31 @@ public abstract class AbstractEidProcessor implements INationalEidProcessor {    @Override    public final SimpleEidasData postProcess(Map<String, Object> eidasAttrMap) throws EidPostProcessingException,        EidasAttributeException { +      SimpleEidasData.SimpleEidasDataBuilder builder = SimpleEidasData.builder()          .personalIdentifier(EidasResponseUtils.processPersonalIdentifier( -            eidasAttrMap.get(Constants.eIDAS_ATTR_PERSONALIDENTIFIER))) +            eidasAttrMap.get(EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER)))          // MDS attributes -        .citizenCountryCode(processCountryCode(eidasAttrMap.get(Constants.eIDAS_ATTR_PERSONALIDENTIFIER))) -        .pseudonym(processPseudonym(eidasAttrMap.get(Constants.eIDAS_ATTR_PERSONALIDENTIFIER))) -        .familyName(processFamilyName(eidasAttrMap.get(Constants.eIDAS_ATTR_CURRENTFAMILYNAME))) -        .givenName(processGivenName(eidasAttrMap.get(Constants.eIDAS_ATTR_CURRENTGIVENNAME))) -        .dateOfBirth(processDateOfBirthToString(eidasAttrMap.get(Constants.eIDAS_ATTR_DATEOFBIRTH))) +        .citizenCountryCode(processCountryCode(eidasAttrMap.get(EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER))) +        .pseudonym(processPseudonym(eidasAttrMap.get(EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER))) +        .familyName(processFamilyName(eidasAttrMap.get(EidasConstants.eIDAS_ATTR_CURRENTFAMILYNAME))) +        .givenName(processGivenName(eidasAttrMap.get(EidasConstants.eIDAS_ATTR_CURRENTGIVENNAME))) +        .dateOfBirth(processDateOfBirthToString(eidasAttrMap.get(EidasConstants.eIDAS_ATTR_DATEOFBIRTH)))          // additional attributes -        .placeOfBirth(processPlaceOfBirth(eidasAttrMap.get(Constants.eIDAS_ATTR_PLACEOFBIRTH))) -        .birthName(processBirthName(eidasAttrMap.get(Constants.eIDAS_ATTR_BIRTHNAME))) -        .address(processAddress(eidasAttrMap.get(Constants.eIDAS_ATTR_CURRENTADDRESS))); +        .placeOfBirth(processPlaceOfBirth(eidasAttrMap.get(EidasConstants.eIDAS_ATTR_PLACEOFBIRTH))) +        .birthName(processBirthName(eidasAttrMap.get(EidasConstants.eIDAS_ATTR_BIRTHNAME))) +        .address(processAddress(eidasAttrMap.get(EidasConstants.eIDAS_ATTR_CURRENTADDRESS))); -    if (eidasAttrMap.containsKey(Constants.eIDAS_ATTR_TAXREFERENCE)) { -      builder.taxNumber(EidasResponseUtils.processTaxReference(eidasAttrMap.get(Constants.eIDAS_ATTR_TAXREFERENCE))); +    if (eidasAttrMap.containsKey(EidasConstants.eIDAS_ATTR_TAXREFERENCE)) { +      builder.taxNumber(EidasResponseUtils.processTaxReference( +          eidasAttrMap.get(EidasConstants.eIDAS_ATTR_TAXREFERENCE)));      }      return builder.build(); +    } @@ -125,6 +129,7 @@ public abstract class AbstractEidProcessor implements INationalEidProcessor {    protected PostalAddressType processAddress(Object currentAddressObj) throws EidPostProcessingException,        EidasAttributeException {      return EidasResponseUtils.processAddress(currentAddressObj); +        }    /** @@ -138,6 +143,7 @@ public abstract class AbstractEidProcessor implements INationalEidProcessor {    protected String processBirthName(Object birthNameObj) throws EidPostProcessingException,        EidasAttributeException {      return EidasResponseUtils.processBirthName(birthNameObj); +    }    /** @@ -151,6 +157,7 @@ public abstract class AbstractEidProcessor implements INationalEidProcessor {    protected String processPlaceOfBirth(Object placeOfBirthObj) throws EidPostProcessingException,        EidasAttributeException {      return EidasResponseUtils.processPlaceOfBirth(placeOfBirthObj); +    }    /** @@ -164,6 +171,7 @@ public abstract class AbstractEidProcessor implements INationalEidProcessor {    protected DateTime processDateOfBirth(Object dateOfBirthObj) throws EidPostProcessingException,        EidasAttributeException {      return EidasResponseUtils.processDateOfBirth(dateOfBirthObj); +    }    /** @@ -177,6 +185,7 @@ public abstract class AbstractEidProcessor implements INationalEidProcessor {    protected String processGivenName(Object givenNameObj) throws EidPostProcessingException,        EidasAttributeException {      return EidasResponseUtils.processGivenName(givenNameObj); +    }    /** @@ -190,6 +199,7 @@ public abstract class AbstractEidProcessor implements INationalEidProcessor {    protected String processFamilyName(Object familyNameObj) throws EidPostProcessingException,        EidasAttributeException {      return EidasResponseUtils.processFamilyName(familyNameObj); +    }    /** @@ -203,6 +213,7 @@ public abstract class AbstractEidProcessor implements INationalEidProcessor {    protected String processPseudonym(Object personalIdObj) throws EidPostProcessingException,        EidasAttributeException {      return EidasResponseUtils.processPseudonym(personalIdObj); +    }    /** @@ -334,7 +345,7 @@ public abstract class AbstractEidProcessor implements INationalEidProcessor {      final ImmutableAttributeMap.Builder builder = ImmutableAttributeMap.builder();      for (final Map.Entry<String, Boolean> attribute : requiredAttributes.entrySet()) {        final String name = attribute.getKey(); -      final ImmutableSortedSet<AttributeDefinition<?>> byFriendlyName = attrRegistry +      final ImmutableSortedSet<AttributeDefinition<?>> byFriendlyName = attrRegistry.getCoreRegistry()            .getCoreAttributeRegistry().getByFriendlyName(name);        if (!byFriendlyName.isEmpty()) {          final AttributeDefinition<?> attributeDefinition = byFriendlyName.first(); diff --git a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/DeEidProcessor.java b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/DeEidProcessor.java index 6dc08181..2c1e8fdd 100644 --- a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/DeEidProcessor.java +++ b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/DeEidProcessor.java @@ -32,10 +32,10 @@ import org.apache.commons.codec.binary.Hex;  import org.slf4j.Logger;  import org.slf4j.LoggerFactory; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidPostProcessingException;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasAttributeException;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.EidasResponseUtils; +import at.asitplus.eidas.specific.modules.core.eidas.EidasConstants;  import at.gv.egiz.eaaf.core.impl.data.Triple; @@ -70,15 +70,15 @@ public class DeEidProcessor extends AbstractEidProcessor {    protected String processPseudonym(Object uniqeIdentifierObj) throws EidPostProcessingException,        EidasAttributeException {      if (uniqeIdentifierObj == null || !(uniqeIdentifierObj instanceof String)) { -      throw new EidasAttributeException(Constants.eIDAS_ATTR_PERSONALIDENTIFIER); +      throw new EidasAttributeException(EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER);      }      final Triple<String, String, String> eIdentifier =          EidasResponseUtils.parseEidasPersonalIdentifier((String) uniqeIdentifierObj); -    log.trace(getName() + " starts processing of attribute: " + Constants.eIDAS_ATTR_PERSONALIDENTIFIER); +    log.trace(getName() + " starts processing of attribute: " + EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER);      final String result = convertDeIdentifier(eIdentifier.getThird()); -    log.debug(getName() + " finished processing of attribute: " + Constants.eIDAS_ATTR_PERSONALIDENTIFIER); +    log.debug(getName() + " finished processing of attribute: " + EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER);      return result; diff --git a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/DeSpecificDetailSearchProcessor.java b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/DeSpecificDetailSearchProcessor.java index e05fe86b..64db9eed 100644 --- a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/DeSpecificDetailSearchProcessor.java +++ b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/DeSpecificDetailSearchProcessor.java @@ -27,6 +27,7 @@ import org.apache.commons.lang3.StringUtils;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData; +import at.asitplus.eidas.specific.modules.core.eidas.EidasConstants;  import at.gv.bmi.namespace.zmr_su.zmr._20040201.EidasSuchdatenType;  import at.gv.bmi.namespace.zmr_su.zmr._20040201.PersonSuchenRequest;  import at.gv.e_government.reference.namespace.persondata.de._20040201.NatuerlichePersonTyp; @@ -62,9 +63,9 @@ public class DeSpecificDetailSearchProcessor implements CountrySpecificDetailSea      //add addtional eIDAS attributes from DE      req.getEidasSuchdaten().add(buildEidasSuchData( -        Constants.eIDAS_ATTRURN_PLACEOFBIRTH, eidData.getPlaceOfBirth())); +        EidasConstants.eIDAS_ATTRURN_PLACEOFBIRTH, eidData.getPlaceOfBirth()));      req.getEidasSuchdaten().add(buildEidasSuchData( -        Constants.eIDAS_ATTRURN_BIRTHNAME, eidData.getBirthName())); +        EidasConstants.eIDAS_ATTRURN_BIRTHNAME, eidData.getBirthName()));      return req; diff --git a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/service/CcSpecificEidProcessingService.java b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/service/CcSpecificEidProcessingService.java index b5493edb..bbfcb5ff 100644 --- a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/service/CcSpecificEidProcessingService.java +++ b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/service/CcSpecificEidProcessingService.java @@ -32,7 +32,6 @@ import java.util.Map.Entry;  import javax.annotation.PostConstruct; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData;  import org.apache.commons.lang3.StringUtils;  import org.slf4j.Logger;  import org.slf4j.LoggerFactory; @@ -40,11 +39,12 @@ import org.springframework.beans.factory.annotation.Autowired;  import org.springframework.context.ApplicationContext;  import org.springframework.stereotype.Service; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidPostProcessingException;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasAttributeException;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.handler.INationalEidProcessor;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.EidasResponseUtils; +import at.asitplus.eidas.specific.modules.core.eidas.EidasConstants;  import at.gv.egiz.eaaf.core.api.IRequest;  import at.gv.egiz.eaaf.core.impl.data.Triple;  import eu.eidas.auth.commons.light.impl.LightRequest.Builder; @@ -107,9 +107,9 @@ public class CcSpecificEidProcessingService implements ICcSpecificEidProcessingS    public SimpleEidasData postProcess(Map<String, Object> eidasAttrMap) throws EidPostProcessingException,        EidasAttributeException {      // extract citizen country from eIDAS unique identifier -    final Object eIdentifierObj = eidasAttrMap.get(Constants.eIDAS_ATTR_PERSONALIDENTIFIER); +    final Object eIdentifierObj = eidasAttrMap.get(EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER);      if (eIdentifierObj == null || !(eIdentifierObj instanceof String)) { -      throw new EidasAttributeException(Constants.eIDAS_ATTR_PERSONALIDENTIFIER); +      throw new EidasAttributeException(EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER);      }      final Triple<String, String, String> eIdentifier = diff --git a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/service/ConnectorEidasAttributeRegistry.java b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/service/ConnectorEidasAttributeRegistry.java new file mode 100644 index 00000000..8a120093 --- /dev/null +++ b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/service/ConnectorEidasAttributeRegistry.java @@ -0,0 +1,107 @@ +package at.asitplus.eidas.specific.modules.auth.eidas.v2.service; + +import java.text.MessageFormat; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.lang.NonNull; + +import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; +import at.asitplus.eidas.specific.modules.core.eidas.service.EidasAttributeRegistry; +import at.gv.egiz.eaaf.core.api.idp.IConfigurationWithSP; +import at.gv.egiz.eaaf.core.impl.utils.KeyValueUtils; +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class ConnectorEidasAttributeRegistry { + +  @Autowired IConfigurationWithSP basicConfig; +   +  @Getter +  private EidasAttributeRegistry coreRegistry; +   +  /** +   * Attribute Registry for eIDAS Connector implementation. +   * @param registry Core attribute registry +   */ +  public ConnectorEidasAttributeRegistry(@Autowired EidasAttributeRegistry registry) { +    this.coreRegistry = registry; +         +  } +   +   +  /** +   * Get Map of attributes that are requested by default. +   *  +   * @return Map of AttributeIdentifier, isRequired flag +   */ +  @NonNull +  public Map<String, Boolean> getDefaultAttributeSetFromConfiguration() { +    /* +     * TODO: select set for representation if mandates should be used. It's an open +     * task in respect to requested eIDAS attributes and isRequired flag, because +     * there can be a decision problem in case of natural or legal person +     * representation! From an Austrian use-case point of view, an Austrian service +     * provider can support mandates for natural and legal persons at the same time. +     * However, we CAN NOT request attributes for natural AND legal persons on the +     * same time, because it's not possible to represent both simultaneously. +     */ +    final Map<String, String> configAttributes = +        basicConfig.getBasicConfigurationWithPrefix( +            Constants.CONIG_PROPS_EIDAS_NODE_ATTRIBUTES_REQUESTED_DEFAULT_ONLYNATURAL); +    return processAttributeInfosFromConfig(configAttributes); + +  } + +  /** +   * Get a Map of attributes that are additionally requested for a specific country. +   *  +   * @param countryCode Country Code +   * @return Map of AttributeIdentifier, isRequired flag +   */ +  @NonNull +  public Map<String, Boolean> getAttributeSetFromConfiguration(String countryCode) { + +    /* +     * TODO: select set for representation if mandates should be used. It's an open +     * task in respect to requested eIDAS attributes and isRequired flag, because +     * there can be a decision problem in case of natural or legal person +     * representation! From an Austrian use-case point of view, an Austrian service +     * provider can support mandates for natural and legal persons at the same time. +     * However, we CAN NOT request attributes for natural AND legal persons on the +     * same time, because it's not possible to represent both simultaneously. +     */ +    final Map<String, String> configAttributes = +        basicConfig.getBasicConfigurationWithPrefix( +            MessageFormat.format( +                Constants.CONIG_PROPS_EIDAS_NODE_ATTRIBUTES_REQUESTED_CC_SPECIFIC_ONLYNATURAL, +                countryCode.toLowerCase())); +    return processAttributeInfosFromConfig(configAttributes); + +  } +   +  private Map<String, Boolean> processAttributeInfosFromConfig(Map<String, String> configAttributes) { + +    final Map<String, Boolean> result = new HashMap<>(); +    for (final String el : configAttributes.values()) { +      if (StringUtils.isNotEmpty(el.trim())) { +        final List<String> attrDef = KeyValueUtils.getListOfCsvValues(el.trim()); +        boolean isRequired = false; +        if (attrDef.size() == 2) { +          isRequired = Boolean.parseBoolean(attrDef.get(1)); +        } + +        result.put(attrDef.get(0), isRequired); + +      } +    } + +    log.trace("Load #" + result.size() + " requested attributes from configuration"); +    return result; + +  } +} diff --git a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/CreateIdentityLinkTask.java b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/CreateIdentityLinkTask.java index 6d315b0a..e8b7b2c1 100644 --- a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/CreateIdentityLinkTask.java +++ b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/CreateIdentityLinkTask.java @@ -146,6 +146,7 @@ public class CreateIdentityLinkTask extends AbstractAuthServletTask {      }    } +    private void storeGenericInfoToSession(SimpleEidasData eidData) throws EaafStorageException {      AuthProcessDataWrapper authProcessData = MatchingTaskUtils.getAuthProcessDataWrapper(pendingReq);      authProcessData.setForeigner(true); 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 774d27d6..535c2958 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 @@ -44,6 +44,7 @@ import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidPostProcessingException;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasSAuthenticationException;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.ICcSpecificEidProcessingService; +import at.asitplus.eidas.specific.modules.core.eidas.EidasConstants;  import at.gv.egiz.eaaf.core.api.gui.ISpringMvcGuiFormBuilder;  import at.gv.egiz.eaaf.core.api.idp.IConfiguration;  import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext; @@ -131,6 +132,7 @@ public class GenerateAuthnRequestTask extends AbstractAuthServletTask {        } else {          sendPost(request, response, tokenBase64, forwardUrl); +        }        revisionsLogger.logEvent(pendingReq, MsConnectorEventCodes.EIDAS_NODE_CONNECTED, lightAuthnReq.getId()); @@ -257,20 +259,20 @@ public class GenerateAuthnRequestTask extends AbstractAuthServletTask {    private String selectedForwardUrlForEnvironment(String environment) {      log.trace("Starting endpoint selection process for environment: {} ... ", environment);      if (environment.equalsIgnoreCase(MsEidasNodeConstants.REQ_PARAM_SELECTED_ENVIRONMENT_VALUE_PRODUCTION)) { -      return basicConfig.getBasicConfiguration(Constants.CONIG_PROPS_EIDAS_CONNECTOR_NODE_FORWARD_URL); -       +      return basicConfig.getBasicConfiguration(EidasConstants.CONIG_PROPS_EIDAS_CONNECTOR_NODE_FORWARD_URL); +      } else if (environment.equalsIgnoreCase(MsEidasNodeConstants.REQ_PARAM_SELECTED_ENVIRONMENT_VALUE_QS)) { -      return basicConfig.getBasicConfiguration(Constants.CONIG_PROPS_EIDAS_CONNECTOR_NODE_FORWARD_URL +      return basicConfig.getBasicConfiguration(EidasConstants.CONIG_PROPS_EIDAS_CONNECTOR_NODE_FORWARD_URL            + "." + MsEidasNodeConstants.REQ_PARAM_SELECTED_ENVIRONMENT_VALUE_QS);      } else if (environment.equalsIgnoreCase(          MsEidasNodeConstants.REQ_PARAM_SELECTED_ENVIRONMENT_VALUE_TESTING)) { -      return basicConfig.getBasicConfiguration(Constants.CONIG_PROPS_EIDAS_CONNECTOR_NODE_FORWARD_URL +      return basicConfig.getBasicConfiguration(EidasConstants.CONIG_PROPS_EIDAS_CONNECTOR_NODE_FORWARD_URL            + "." + MsEidasNodeConstants.REQ_PARAM_SELECTED_ENVIRONMENT_VALUE_TESTING);      } else if (environment.equalsIgnoreCase(          MsEidasNodeConstants.REQ_PARAM_SELECTED_ENVIRONMENT_VALUE_DEVELOPMENT)) { -      return basicConfig.getBasicConfiguration(Constants.CONIG_PROPS_EIDAS_CONNECTOR_NODE_FORWARD_URL +      return basicConfig.getBasicConfiguration(EidasConstants.CONIG_PROPS_EIDAS_CONNECTOR_NODE_FORWARD_URL            + "." + MsEidasNodeConstants.REQ_PARAM_SELECTED_ENVIRONMENT_VALUE_DEVELOPMENT);      } @@ -292,11 +294,11 @@ public class GenerateAuthnRequestTask extends AbstractAuthServletTask {        throws GuiBuildException {      log.debug("Use http-post for eIDAS node forwarding ...  ");      final StaticGuiBuilderConfiguration config = new StaticGuiBuilderConfiguration( -        basicConfig, pendingReq, Constants.TEMPLATE_POST_FORWARD_NAME, null, resourceLoader); -    config.putCustomParameter(null, Constants.TEMPLATE_POST_FORWARD_ENDPOINT, forwardUrl); +        basicConfig, pendingReq, EidasConstants.TEMPLATE_POST_FORWARD_NAME, null, resourceLoader); +    config.putCustomParameter(null, EidasConstants.TEMPLATE_POST_FORWARD_ENDPOINT, forwardUrl);      String token = EidasParameterKeys.TOKEN.toString(); -    config.putCustomParameter(null, Constants.TEMPLATE_POST_FORWARD_TOKEN_NAME, token); -    config.putCustomParameter(null, Constants.TEMPLATE_POST_FORWARD_TOKEN_VALUE, tokenBase64); +    config.putCustomParameter(null, EidasConstants.TEMPLATE_POST_FORWARD_TOKEN_NAME, token); +    config.putCustomParameter(null, EidasConstants.TEMPLATE_POST_FORWARD_TOKEN_VALUE, tokenBase64);      guiBuilder.build(request, response, config, "Forward to eIDASNode form");    } 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 d2bd0128..ac70a2ac 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 @@ -39,8 +39,9 @@ import at.asitplus.eidas.specific.core.MsEidasNodeConstants;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasSAuthenticationException;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasValidationException; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.EidasAttributeRegistry;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.validator.EidasResponseValidator; +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.api.idp.IConfiguration;  import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext;  import at.gv.egiz.eaaf.core.exceptions.EaafException; @@ -135,7 +136,7 @@ public class ReceiveAuthnResponseAlternativeTask extends AbstractAuthServletTask    }    private void checkStatusCode(ILightResponse eidasResponse) throws EidasSAuthenticationException { -    if (!eidasResponse.getStatus().getStatusCode().equals(Constants.SUCCESS_URI)) { +    if (!eidasResponse.getStatus().getStatusCode().equals(EidasConstants.SUCCESS_URI)) {        log.info("Receive eIDAS Response with StatusCode: {} Subcode: {} Msg: {}",            eidasResponse.getStatus().getStatusCode(),            eidasResponse.getStatus().getSubStatusCode(), 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 5e4075de..a16da17f 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 @@ -40,8 +40,9 @@ import at.asitplus.eidas.specific.core.MsEidasNodeConstants;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasSAuthenticationException;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasValidationException; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.EidasAttributeRegistry;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.validator.EidasResponseValidator; +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.api.idp.IConfiguration;  import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext;  import at.gv.egiz.eaaf.core.exceptions.EaafException; @@ -162,17 +163,20 @@ public class ReceiveAuthnResponseTask extends AbstractAuthServletTask {      return eidasResponse;    } +    private void checkStatusCode(ILightResponse eidasResponse) throws EidasSAuthenticationException { -    if (!eidasResponse.getStatus().getStatusCode().equals(Constants.SUCCESS_URI)) { +    if (!eidasResponse.getStatus().getStatusCode().equals(EidasConstants.SUCCESS_URI)) {        log.info("Receive eIDAS Response with StatusCode: {} Subcode: {} Msg: {}",            eidasResponse.getStatus().getStatusCode(),            eidasResponse.getStatus().getSubStatusCode(),            eidasResponse.getStatus().getStatusMessage());        throw new EidasSAuthenticationException("eidas.02", new Object[]{eidasResponse.getStatus()            .getStatusCode(), eidasResponse.getStatus().getStatusMessage()}); +            }    } +    private void validateMsSpecificResponse(ExecutionContext executionContext, ILightResponse eidasResponse)        throws EidasValidationException {      final String spCountry = basicConfig.getBasicConfiguration(Constants.CONIG_PROPS_EIDAS_NODE_COUNTRYCODE, "AT"); diff --git a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/utils/EidasResponseUtils.java b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/utils/EidasResponseUtils.java index 2853d8ab..91a6ce42 100644 --- a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/utils/EidasResponseUtils.java +++ b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/utils/EidasResponseUtils.java @@ -38,8 +38,8 @@ import org.joda.time.DateTime;  import com.google.common.collect.ImmutableList;  import com.google.common.collect.ImmutableSet; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasAttributeException; +import at.asitplus.eidas.specific.modules.core.eidas.EidasConstants;  import at.gv.e_government.reference.namespace.persondata._20020228.PostalAddressType;  import at.gv.egiz.eaaf.core.impl.data.Triple;  import eu.eidas.auth.commons.attribute.AttributeDefinition; @@ -84,8 +84,9 @@ public class EidasResponseUtils {     */    public static Triple<String, String, String> parseEidasPersonalIdentifier(String uniqueID) {      if (!validateEidasPersonalIdentifier(uniqueID)) { -      log.error("eIDAS attribute value for {} looks wrong formated. Value: {}", -          Constants.eIDAS_ATTR_PERSONALIDENTIFIER, uniqueID); +      log.error("eIDAS attribute value for {} looks wrong formated. Value: {}",  +          EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER, uniqueID); +        return null;      } @@ -210,11 +211,11 @@ public class EidasResponseUtils {          // TODO: add more mappings          return result;        } else { -        log.warn("eIDAS attr: " + Constants.eIDAS_ATTR_CURRENTADDRESS + " is of WRONG type"); -        throw new EidasAttributeException(Constants.eIDAS_ATTR_CURRENTADDRESS); +        log.warn("eIDAS attr: " + EidasConstants.eIDAS_ATTR_CURRENTADDRESS + " is of WRONG type"); +        throw new EidasAttributeException(EidasConstants.eIDAS_ATTR_CURRENTADDRESS);        }      } else { -      log.debug("NO '" + Constants.eIDAS_ATTR_CURRENTADDRESS + "' attribute. Post-Processing skipped ... "); +      log.debug("NO '" + EidasConstants.eIDAS_ATTR_CURRENTADDRESS + "' attribute. Post-Processing skipped ... ");      }      return null;    } @@ -231,11 +232,11 @@ public class EidasResponseUtils {        if (birthNameObj instanceof String) {          return (String) birthNameObj;        } else { -        log.warn("eIDAS attr: " + Constants.eIDAS_ATTR_BIRTHNAME + " is of WRONG type"); -        throw new EidasAttributeException(Constants.eIDAS_ATTR_BIRTHNAME); +        log.warn("eIDAS attr: " + EidasConstants.eIDAS_ATTR_BIRTHNAME + " is of WRONG type"); +        throw new EidasAttributeException(EidasConstants.eIDAS_ATTR_BIRTHNAME);        }      } else { -      log.debug("NO '" + Constants.eIDAS_ATTR_BIRTHNAME + "' attribute. Post-Processing skipped ... "); +      log.debug("NO '" + EidasConstants.eIDAS_ATTR_BIRTHNAME + "' attribute. Post-Processing skipped ... ");      }      return null;    } @@ -253,13 +254,13 @@ public class EidasResponseUtils {          return (String) placeOfBirthObj;        } else { -        log.warn("eIDAS attr: " + Constants.eIDAS_ATTR_PLACEOFBIRTH + " is of WRONG type"); -        throw new EidasAttributeException(Constants.eIDAS_ATTR_PLACEOFBIRTH); +        log.warn("eIDAS attr: " + EidasConstants.eIDAS_ATTR_PLACEOFBIRTH + " is of WRONG type"); +        throw new EidasAttributeException(EidasConstants.eIDAS_ATTR_PLACEOFBIRTH);        }      } else { -      log.debug("NO '" + Constants.eIDAS_ATTR_PLACEOFBIRTH + "' attribute. Post-Processing skipped ... "); +      log.debug("NO '" + EidasConstants.eIDAS_ATTR_PLACEOFBIRTH + "' attribute. Post-Processing skipped ... ");      }      return null;    } @@ -273,7 +274,7 @@ public class EidasResponseUtils {     */    public static DateTime processDateOfBirth(Object dateOfBirthObj) throws EidasAttributeException {      if (!(dateOfBirthObj instanceof DateTime)) { -      throw new EidasAttributeException(Constants.eIDAS_ATTR_DATEOFBIRTH); +      throw new EidasAttributeException(EidasConstants.eIDAS_ATTR_DATEOFBIRTH);      }      return (DateTime) dateOfBirthObj;    } @@ -291,11 +292,11 @@ public class EidasResponseUtils {          new SimpleDateFormat("yyyy-MM-dd").parse((String) dateOfBirthObj);          return (String) dateOfBirthObj;        } catch (ParseException e) { -        throw new EidasAttributeException(Constants.eIDAS_ATTR_DATEOFBIRTH); +        throw new EidasAttributeException(EidasConstants.eIDAS_ATTR_DATEOFBIRTH);        }      }      if (!(dateOfBirthObj instanceof DateTime)) { -      throw new EidasAttributeException(Constants.eIDAS_ATTR_DATEOFBIRTH); +      throw new EidasAttributeException(EidasConstants.eIDAS_ATTR_DATEOFBIRTH);      }      return new SimpleDateFormat("yyyy-MM-dd").format(((DateTime) dateOfBirthObj).toDate());    } @@ -309,7 +310,7 @@ public class EidasResponseUtils {     */    public static String processGivenName(Object givenNameObj) throws EidasAttributeException {      if (!(givenNameObj instanceof String)) { -      throw new EidasAttributeException(Constants.eIDAS_ATTR_CURRENTGIVENNAME); +      throw new EidasAttributeException(EidasConstants.eIDAS_ATTR_CURRENTGIVENNAME);      }      return (String) givenNameObj;    } @@ -323,7 +324,7 @@ public class EidasResponseUtils {     */    public static String processFamilyName(Object familyNameObj) throws EidasAttributeException {      if (!(familyNameObj instanceof String)) { -      throw new EidasAttributeException(Constants.eIDAS_ATTR_CURRENTFAMILYNAME); +      throw new EidasAttributeException(EidasConstants.eIDAS_ATTR_CURRENTFAMILYNAME);      }      return (String) familyNameObj;    } @@ -337,7 +338,7 @@ public class EidasResponseUtils {     */    public static String processPersonalIdentifier(Object personalIdentifierObj) throws EidasAttributeException {      if (!(personalIdentifierObj instanceof String)) { -      throw new EidasAttributeException(Constants.eIDAS_ATTR_PERSONALIDENTIFIER); +      throw new EidasAttributeException(EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER);      }      return (String) personalIdentifierObj;    } @@ -352,7 +353,7 @@ public class EidasResponseUtils {     */    public static String processPseudonym(Object personalIdObj) throws EidasAttributeException {      if (!(personalIdObj instanceof String)) { -      throw new EidasAttributeException(Constants.eIDAS_ATTR_PERSONALIDENTIFIER); +      throw new EidasAttributeException(EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER);      }      final Triple<String, String, String> eIdentifier =          EidasResponseUtils.parseEidasPersonalIdentifier((String) personalIdObj); @@ -371,7 +372,7 @@ public class EidasResponseUtils {     */    public static String processCountryCode(Object personalIdObj) throws EidasAttributeException {      if (!(personalIdObj instanceof String)) { -      throw new EidasAttributeException(Constants.eIDAS_ATTR_PERSONALIDENTIFIER); +      throw new EidasAttributeException(EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER);      }      final Triple<String, String, String> eIdentifier =          EidasResponseUtils.parseEidasPersonalIdentifier((String) personalIdObj); @@ -390,7 +391,7 @@ public class EidasResponseUtils {     */    public static String processTaxReference(Object taxReferenceObj) throws EidasAttributeException {      if (!(taxReferenceObj instanceof String)) { -      throw new EidasAttributeException(Constants.eIDAS_ATTR_TAXREFERENCE); +      throw new EidasAttributeException(EidasConstants.eIDAS_ATTR_TAXREFERENCE);      }      return (String) taxReferenceObj;    } diff --git a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/validator/EidasResponseValidator.java b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/validator/EidasResponseValidator.java index 9d9a0647..d1962654 100644 --- a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/validator/EidasResponseValidator.java +++ b/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/validator/EidasResponseValidator.java @@ -31,10 +31,10 @@ import org.slf4j.LoggerFactory;  import com.google.common.collect.ImmutableSet; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasValidationException; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.EidasAttributeRegistry;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.EidasResponseUtils; +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.api.IRequest;  import at.gv.egiz.eaaf.core.impl.data.Triple;  import eu.eidas.auth.commons.attribute.AttributeDefinition; @@ -97,7 +97,7 @@ public class EidasResponseValidator {       *_____________________________________________________|       */      final AttributeDefinition<?> attrDefinition = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -        Constants.eIDAS_ATTR_PERSONALIDENTIFIER).first(); +        EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER).first();      final ImmutableSet<? extends AttributeValue<?>> attributeValues = eidasResponse.getAttributes()          .getAttributeMap().get(attrDefinition);      final List<String> personalIdObj = EidasResponseUtils.translateStringListAttribute(attrDefinition, @@ -123,48 +123,48 @@ public class EidasResponseValidator {        if (split == null) {          throw new EidasValidationException("eidas.07",              new Object[] { -                Constants.eIDAS_ATTR_PERSONALIDENTIFIER, +                EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER,                  "Wrong identifier format" });        } else {          // validation according to eIDAS SAML Attribute Profile, Section 2.2.3          if (StringUtils.isEmpty(split.getSecond())) { -          log.warn("eIDAS attribute value for " + Constants.eIDAS_ATTR_PERSONALIDENTIFIER +          log.warn("eIDAS attribute value for " + EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER                + " includes NO destination country. Value:" + natPersId);            throw new EidasValidationException("eidas.07",                new Object[] { -                  Constants.eIDAS_ATTR_PERSONALIDENTIFIER, +                  EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER,                    "No or empty destination country" });          }          if (!split.getSecond().equalsIgnoreCase(spCountry)) { -          log.warn("eIDAS attribute value for " + Constants.eIDAS_ATTR_PERSONALIDENTIFIER +          log.warn("eIDAS attribute value for " + EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER                + " includes wrong destination country. Value:" + natPersId                + " SP-Country:" + spCountry);            throw new EidasValidationException("eidas.07",                new Object[] { -                  Constants.eIDAS_ATTR_PERSONALIDENTIFIER, +                  EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER,                    "Destination country does not match to SP country" });          }          if (StringUtils.isEmpty(split.getFirst())) { -          log.warn("eIDAS attribute value for " + Constants.eIDAS_ATTR_PERSONALIDENTIFIER +          log.warn("eIDAS attribute value for " + EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER                + " includes NO citizen country. Value:" + natPersId);            throw new EidasValidationException("eidas.07",                new Object[] { -                  Constants.eIDAS_ATTR_PERSONALIDENTIFIER, +                  EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER,                    "No or empty citizen country" });          }          if (!split.getFirst().equalsIgnoreCase(citizenCountryCode)) { -          log.warn("eIDAS attribute value for " + Constants.eIDAS_ATTR_PERSONALIDENTIFIER +          log.warn("eIDAS attribute value for " + EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER                + " includes a citizen country that does not match to service-provider country. "                + " Value:" + natPersId                + " citiczen Country:" + spCountry);            throw new EidasValidationException("eidas.07",                new Object[] { -                  Constants.eIDAS_ATTR_PERSONALIDENTIFIER, +                  EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER,                    "Citizen country does not match to eIDAS-node country that generates the response" });          } diff --git a/modules/authmodule-eIDAS-v2/src/main/resources/eidas_v2_auth.beans.xml b/modules/authmodule-eIDAS-v2/src/main/resources/eidas_v2_auth.beans.xml index 178d768f..ab4228fd 100644 --- a/modules/authmodule-eIDAS-v2/src/main/resources/eidas_v2_auth.beans.xml +++ b/modules/authmodule-eIDAS-v2/src/main/resources/eidas_v2_auth.beans.xml @@ -38,13 +38,16 @@      class="at.asitplus.eidas.specific.modules.auth.eidas.v2.EidasSignalServlet" />    <bean id="attributeRegistry" -    class="at.asitplus.eidas.specific.modules.auth.eidas.v2.service.EidasAttributeRegistry"> +    class="at.asitplus.eidas.specific.modules.core.eidas.service.EidasAttributeRegistry">      <property name="eidasAttributesFile"        ref="specificConnectorAttributesFileWithPath" />      <property name="additionalAttributesFile"        ref="specificConnectorAdditionalAttributesFileWithPath" />    </bean> +  <bean id="connectorAttributeRegistry" +        class="at.asitplus.eidas.specific.modules.auth.eidas.v2.service.ConnectorEidasAttributeRegistry" /> +    <!-- <bean id="eIDASDataStore" class="at.asitplus.eidas.specific.modules.auth.eidas.v2.service.eIDASDataStore"      /> --> diff --git a/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasSignalServletTest.java b/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasSignalServletTest.java index 4d4ac47d..3bc06092 100644 --- a/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasSignalServletTest.java +++ b/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/EidasSignalServletTest.java @@ -29,7 +29,8 @@ import at.asitplus.eidas.specific.core.test.config.dummy.MsConnectorDummySpConfi  import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.EidasSignalServlet;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.CreateIdentityLinkTask; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.test.dummy.DummySpecificCommunicationService; +import at.asitplus.eidas.specific.modules.core.eidas.EidasConstants; +import at.asitplus.eidas.specific.modules.core.eidas.test.dummy.DummySpecificCommunicationService;  import at.gv.egiz.eaaf.core.api.IRequestStorage;  import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants;  import at.gv.egiz.eaaf.core.api.data.EaafConstants; @@ -138,7 +139,7 @@ public class EidasSignalServletTest {      iLightResponse.id("_".concat(Random.nextHexRandom16()))          .issuer(RandomStringUtils.randomAlphabetic(10))          .subject(RandomStringUtils.randomAlphabetic(10)) -        .statusCode(Constants.SUCCESS_URI) +        .statusCode(EidasConstants.SUCCESS_URI)          .inResponseTo("_".concat(Random.nextHexRandom16()))          .subjectNameIdFormat("afaf")          .relayState(relayState); @@ -177,7 +178,7 @@ public class EidasSignalServletTest {      iLightResponse.id("_".concat(Random.nextHexRandom16()))          .issuer(RandomStringUtils.randomAlphabetic(10))          .subject(RandomStringUtils.randomAlphabetic(10)) -        .statusCode(Constants.SUCCESS_URI) +        .statusCode(EidasConstants.SUCCESS_URI)          .inResponseTo(inResponseTo)          .subjectNameIdFormat("afaf"); @@ -213,7 +214,7 @@ public class EidasSignalServletTest {      iLightResponse.id("_".concat(Random.nextHexRandom16()))          .issuer(RandomStringUtils.randomAlphabetic(10))          .subject(RandomStringUtils.randomAlphabetic(10)) -        .statusCode(Constants.SUCCESS_URI) +        .statusCode(EidasConstants.SUCCESS_URI)          .inResponseTo(inResponseTo)          .subjectNameIdFormat("afaf"); diff --git a/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ZmrClientProductionTest.java b/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ZmrClientProductionTest.java index cb9df7e5..af1867e7 100644 --- a/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ZmrClientProductionTest.java +++ b/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ZmrClientProductionTest.java @@ -19,12 +19,12 @@ import org.springframework.test.context.ContextConfiguration;  import org.springframework.test.context.TestPropertySource;  import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.zmr.ZmrSoapClient;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.zmr.ZmrSoapClient.ZmrRegisterResult;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasSAuthenticationException;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.LoggingHandler; +import at.asitplus.eidas.specific.modules.core.eidas.EidasConstants;  import at.gv.bmi.namespace.zmr_su.zmr._20040201.EidasSuchdatenType;  import at.gv.bmi.namespace.zmr_su.zmr._20040201.PersonSuchenRequest;  import at.gv.e_government.reference.namespace.persondata.de._20040201.NatuerlichePersonTyp; @@ -453,9 +453,9 @@ public class ZmrClientProductionTest {      searchNatPerson.setGeburtsdatum(dateOfBirth);      // add addtional eIDAS attributes if available -    addIfAvailable(req.getEidasSuchdaten(), cc, Constants.eIDAS_ATTRURN_PLACEOFBIRTH, placeOfBirth); -    addIfAvailable(req.getEidasSuchdaten(), cc, Constants.eIDAS_ATTRURN_BIRTHNAME, birthName); -    addIfAvailable(req.getEidasSuchdaten(), cc, Constants.eIDAS_ATTRURN_PERSONALIDENTIFIER, personalId); +    addIfAvailable(req.getEidasSuchdaten(), cc, EidasConstants.eIDAS_ATTRURN_PLACEOFBIRTH, placeOfBirth); +    addIfAvailable(req.getEidasSuchdaten(), cc, EidasConstants.eIDAS_ATTRURN_BIRTHNAME, birthName); +    addIfAvailable(req.getEidasSuchdaten(), cc, EidasConstants.eIDAS_ATTRURN_PERSONALIDENTIFIER, personalId);      return req; diff --git a/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ZmrClientTest.java b/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ZmrClientTest.java index 4e0a1f28..ef9cc9b7 100644 --- a/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ZmrClientTest.java +++ b/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ZmrClientTest.java @@ -38,7 +38,6 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;  import com.github.skjolber.mockito.soap.SoapServiceRule;  import at.asitplus.eidas.specific.core.test.config.dummy.MsConnectorDummyConfigMap; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.zmr.ZmrSoapClient;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.zmr.ZmrSoapClient.ZmrRegisterResult;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.controller.AdresssucheController.AdresssucheOutput; @@ -46,6 +45,7 @@ import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.RegisterResult;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasSAuthenticationException;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.WorkflowException; +import at.asitplus.eidas.specific.modules.core.eidas.EidasConstants;  import at.gv.bmi.namespace.zmr_su.base._20040201.RequestType;  import at.gv.bmi.namespace.zmr_su.base._20040201.ResponseType;  import at.gv.bmi.namespace.zmr_su.base._20040201_.ServicePort; @@ -1139,9 +1139,9 @@ public class ZmrClientTest {      searchNatPerson.setGeburtsdatum(dateOfBirth);      // add addtional eIDAS attributes if available -    addIfAvailable(req.getEidasSuchdaten(), cc, Constants.eIDAS_ATTRURN_PLACEOFBIRTH, placeOfBirth); -    addIfAvailable(req.getEidasSuchdaten(), cc, Constants.eIDAS_ATTRURN_BIRTHNAME, birthName); -    addIfAvailable(req.getEidasSuchdaten(), cc, Constants.eIDAS_ATTRURN_PERSONALIDENTIFIER, personalId); +    addIfAvailable(req.getEidasSuchdaten(), cc, EidasConstants.eIDAS_ATTRURN_PLACEOFBIRTH, placeOfBirth); +    addIfAvailable(req.getEidasSuchdaten(), cc, EidasConstants.eIDAS_ATTRURN_BIRTHNAME, birthName); +    addIfAvailable(req.getEidasSuchdaten(), cc, EidasConstants.eIDAS_ATTRURN_PERSONALIDENTIFIER, personalId);      return req; diff --git a/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/AlternativeSearchTaskWithRegisterTest.java b/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/AlternativeSearchTaskWithRegisterTest.java index 682db41e..176e95cb 100644 --- a/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/AlternativeSearchTaskWithRegisterTest.java +++ b/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/AlternativeSearchTaskWithRegisterTest.java @@ -67,6 +67,7 @@ import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchSe  import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.AlternativeSearchTask;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.test.clients.ZmrClientTest;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.MatchingTaskUtils; +import at.asitplus.eidas.specific.modules.core.eidas.EidasConstants;  import at.gv.bmi.namespace.zmr_su.base._20040201.RequestType;  import at.gv.bmi.namespace.zmr_su.base._20040201.ResponseType;  import at.gv.bmi.namespace.zmr_su.base._20040201_.ServicePort; @@ -913,24 +914,24 @@ public class AlternativeSearchTaskWithRegisterTest {                                                          String dateOfBirth, String taxNumber, String placeOfBirth,                                                          String birthName) throws URISyntaxException {      ImmutableAttributeMap.Builder builder = ImmutableAttributeMap.builder() -        .put(generateStringAttribute(Constants.eIDAS_ATTR_PERSONALIDENTIFIER, +        .put(generateStringAttribute(EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER,              randomAlphabetic(2), randomAlphabetic(2)), identifier) -        .put(generateStringAttribute(Constants.eIDAS_ATTR_CURRENTFAMILYNAME, +        .put(generateStringAttribute(EidasConstants.eIDAS_ATTR_CURRENTFAMILYNAME,              randomAlphabetic(3), randomAlphabetic(3)), familyName) -        .put(generateStringAttribute(Constants.eIDAS_ATTR_CURRENTGIVENNAME, +        .put(generateStringAttribute(EidasConstants.eIDAS_ATTR_CURRENTGIVENNAME,              randomAlphabetic(4), randomAlphabetic(4)), givenName) -        .put(generateDateTimeAttribute(Constants.eIDAS_ATTR_DATEOFBIRTH, +        .put(generateDateTimeAttribute(EidasConstants.eIDAS_ATTR_DATEOFBIRTH,              randomAlphabetic(5), randomAlphabetic(5)), dateOfBirth);      if (taxNumber != null) { -      builder.put(generateStringAttribute(Constants.eIDAS_ATTR_TAXREFERENCE, +      builder.put(generateStringAttribute(EidasConstants.eIDAS_ATTR_TAXREFERENCE,            randomAlphabetic(6), randomAlphabetic(6)), taxNumber);      }      if (birthName != null) { -      builder.put(generateStringAttribute(Constants.eIDAS_ATTR_BIRTHNAME, +      builder.put(generateStringAttribute(EidasConstants.eIDAS_ATTR_BIRTHNAME,            randomAlphabetic(7), randomAlphabetic(7)), birthName);      }      if (placeOfBirth != null) { -      builder.put(generateStringAttribute(Constants.eIDAS_ATTR_PLACEOFBIRTH, +      builder.put(generateStringAttribute(EidasConstants.eIDAS_ATTR_PLACEOFBIRTH,            randomAlphabetic(8), randomAlphabetic(8)), placeOfBirth);      }      final ImmutableAttributeMap attributeMap = builder.build(); diff --git a/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/CreateIdentityLinkTaskEidNewTest.java b/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/CreateIdentityLinkTaskEidNewTest.java index 023c196c..36c0c2af 100644 --- a/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/CreateIdentityLinkTaskEidNewTest.java +++ b/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/CreateIdentityLinkTaskEidNewTest.java @@ -57,13 +57,14 @@ import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidPostProcessingException;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasAttributeException;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.SzrCommunicationException; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.EidasAttributeRegistry;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.ICcSpecificEidProcessingService;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.CreateIdentityLinkTask;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.EidasResponseUtils;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.JoseUtils;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.JoseUtils.JwsResult;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.MatchingTaskUtils; +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.api.IRequest;  import at.gv.egiz.eaaf.core.api.IRequestStorage;  import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants; @@ -605,18 +606,18 @@ public class CreateIdentityLinkTaskEidNewTest {    @Nonnull    private AuthenticationResponse buildDummyAuthResponse(boolean withAll, boolean withEmpty) throws URISyntaxException {      final AttributeDefinition attributeDef = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -        Constants.eIDAS_ATTR_PERSONALIDENTIFIER).first(); +        EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER).first();      final AttributeDefinition attributeDef2 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -        Constants.eIDAS_ATTR_CURRENTFAMILYNAME).first(); +        EidasConstants.eIDAS_ATTR_CURRENTFAMILYNAME).first();      final AttributeDefinition attributeDef3 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -        Constants.eIDAS_ATTR_CURRENTGIVENNAME).first(); +        EidasConstants.eIDAS_ATTR_CURRENTGIVENNAME).first();      final AttributeDefinition attributeDef4 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -        Constants.eIDAS_ATTR_DATEOFBIRTH).first(); +        EidasConstants.eIDAS_ATTR_DATEOFBIRTH).first();      final AttributeDefinition attributeDef5 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -        Constants.eIDAS_ATTR_PLACEOFBIRTH).first(); +        EidasConstants.eIDAS_ATTR_PLACEOFBIRTH).first();      final AttributeDefinition attributeDef6 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -        Constants.eIDAS_ATTR_BIRTHNAME).first(); - +        EidasConstants.eIDAS_ATTR_BIRTHNAME).first(); +         final Builder attributeMap = ImmutableAttributeMap.builder();      attributeMap.put(attributeDef, "LU/AT/" + RandomStringUtils.randomNumeric(64));      attributeMap.put(attributeDef2, RandomStringUtils.randomAlphabetic(10)); @@ -638,7 +639,7 @@ public class CreateIdentityLinkTaskEidNewTest {      return b.id("_".concat(Random.nextHexRandom16()))          .issuer(RandomStringUtils.randomAlphabetic(10))          .subject(RandomStringUtils.randomAlphabetic(10)) -        .statusCode(Constants.SUCCESS_URI) +        .statusCode(EidasConstants.SUCCESS_URI)          .inResponseTo("_".concat(Random.nextHexRandom16()))          .subjectNameIdFormat("afaf")          .levelOfAssurance(EaafConstants.EIDAS_LOA_PREFIX + RandomStringUtils.randomAlphabetic(5)) diff --git a/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/CreateIdentityLinkTaskTest.java b/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/CreateIdentityLinkTaskTest.java index 5c528532..5db6e95d 100644 --- a/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/CreateIdentityLinkTaskTest.java +++ b/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/CreateIdentityLinkTaskTest.java @@ -41,11 +41,12 @@ import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.MatchedPersonResult;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidPostProcessingException;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasAttributeException; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.EidasAttributeRegistry;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.ICcSpecificEidProcessingService;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.CreateIdentityLinkTask;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.EidasResponseUtils;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.MatchingTaskUtils; +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.api.IRequest;  import at.gv.egiz.eaaf.core.api.IRequestStorage;  import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants; @@ -475,13 +476,13 @@ public class CreateIdentityLinkTaskTest {    @NotNull    private AuthenticationResponse buildDummyAuthResponse() throws URISyntaxException {      final AttributeDefinition attributeDef = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -        Constants.eIDAS_ATTR_PERSONALIDENTIFIER).first(); +        EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER).first();      final AttributeDefinition attributeDef2 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -        Constants.eIDAS_ATTR_CURRENTFAMILYNAME).first(); +        EidasConstants.eIDAS_ATTR_CURRENTFAMILYNAME).first();      final AttributeDefinition attributeDef3 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -        Constants.eIDAS_ATTR_CURRENTGIVENNAME).first(); +        EidasConstants.eIDAS_ATTR_CURRENTGIVENNAME).first();      final AttributeDefinition attributeDef4 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -        Constants.eIDAS_ATTR_DATEOFBIRTH).first(); +        EidasConstants.eIDAS_ATTR_DATEOFBIRTH).first();      final ImmutableAttributeMap attributeMap = ImmutableAttributeMap.builder()          .put(attributeDef, "LU/AT/" + RandomStringUtils.randomNumeric(64)) diff --git a/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateAuthnRequestTaskTest.java b/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateAuthnRequestTaskTest.java index 9521e348..761738aa 100644 --- a/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateAuthnRequestTaskTest.java +++ b/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/GenerateAuthnRequestTaskTest.java @@ -26,7 +26,8 @@ import at.asitplus.eidas.specific.core.test.config.dummy.MsConnectorDummyConfigM  import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasSAuthenticationException;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.GenerateAuthnRequestTask; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.test.dummy.DummySpecificCommunicationService; +import at.asitplus.eidas.specific.modules.core.eidas.EidasConstants; +import at.asitplus.eidas.specific.modules.core.eidas.test.dummy.DummySpecificCommunicationService;  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.idp.process.ExecutionContext; @@ -138,7 +139,7 @@ public class GenerateAuthnRequestTaskTest {            .getErrorId());        Assert.assertEquals("wrong parameter size", 1, ((EaafException) e.getOriginalException())            .getParams().length); -      Assert.assertEquals("wrong errorMsg", Constants.CONIG_PROPS_EIDAS_CONNECTOR_NODE_FORWARD_URL, ((EaafException) e +      Assert.assertEquals("wrong errorMsg", EidasConstants.CONIG_PROPS_EIDAS_CONNECTOR_NODE_FORWARD_URL, ((EaafException) e            .getOriginalException()).getParams()[0]);      } @@ -163,7 +164,7 @@ public class GenerateAuthnRequestTaskTest {            .getErrorId());        Assert.assertEquals("wrong parameter size", 1, ((EaafException) e.getOriginalException())            .getParams().length); -      Assert.assertEquals("wrong errorMsg", Constants.CONIG_PROPS_EIDAS_CONNECTOR_NODE_FORWARD_URL + "." + stage, ((EaafException) e +      Assert.assertEquals("wrong errorMsg", EidasConstants.CONIG_PROPS_EIDAS_CONNECTOR_NODE_FORWARD_URL + "." + stage, ((EaafException) e            .getOriginalException()).getParams()[0]);      } diff --git a/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskTest.java b/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskTest.java index 74ac065e..eef31a02 100644 --- a/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskTest.java +++ b/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskTest.java @@ -83,6 +83,7 @@ import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchSe  import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService.RegisterStatusResults;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.InitialSearchTask;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.MatchingTaskUtils; +import at.asitplus.eidas.specific.modules.core.eidas.EidasConstants;  import at.gv.bmi.namespace.zmr_su.zmr._20040201.PersonSuchenRequest;  import at.gv.egiz.eaaf.core.api.IRequest;  import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext; @@ -887,24 +888,24 @@ public class InitialSearchTaskTest {                                                          String dateOfBirth, String taxNumber, String placeOfBirth,                                                          String birthName) throws URISyntaxException {      ImmutableAttributeMap.Builder builder = ImmutableAttributeMap.builder() -        .put(generateStringAttribute(Constants.eIDAS_ATTR_PERSONALIDENTIFIER, +        .put(generateStringAttribute(EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER,              randomAlphabetic(2), randomAlphabetic(2)), identifier) -        .put(generateStringAttribute(Constants.eIDAS_ATTR_CURRENTFAMILYNAME, +        .put(generateStringAttribute(EidasConstants.eIDAS_ATTR_CURRENTFAMILYNAME,              randomAlphabetic(3), randomAlphabetic(3)), familyName) -        .put(generateStringAttribute(Constants.eIDAS_ATTR_CURRENTGIVENNAME, +        .put(generateStringAttribute(EidasConstants.eIDAS_ATTR_CURRENTGIVENNAME,              randomAlphabetic(4), randomAlphabetic(4)), givenName) -        .put(generateDateTimeAttribute(Constants.eIDAS_ATTR_DATEOFBIRTH, +        .put(generateDateTimeAttribute(EidasConstants.eIDAS_ATTR_DATEOFBIRTH,              randomAlphabetic(5), randomAlphabetic(5)), dateOfBirth);      if (taxNumber != null) { -      builder.put(generateStringAttribute(Constants.eIDAS_ATTR_TAXREFERENCE, +      builder.put(generateStringAttribute(EidasConstants.eIDAS_ATTR_TAXREFERENCE,            randomAlphabetic(6), randomAlphabetic(6)), taxNumber);      }      if (birthName != null) { -      builder.put(generateStringAttribute(Constants.eIDAS_ATTR_BIRTHNAME, +      builder.put(generateStringAttribute(EidasConstants.eIDAS_ATTR_BIRTHNAME,            randomAlphabetic(7), randomAlphabetic(7)), birthName);      }      if (placeOfBirth != null) { -      builder.put(generateStringAttribute(Constants.eIDAS_ATTR_PLACEOFBIRTH, +      builder.put(generateStringAttribute(EidasConstants.eIDAS_ATTR_PLACEOFBIRTH,            randomAlphabetic(8), randomAlphabetic(8)), placeOfBirth);      }      final ImmutableAttributeMap attributeMap = builder.build(); diff --git a/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskWithRegistersTest.java b/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskWithRegistersTest.java index 6d0e7c31..4b9e9fe2 100644 --- a/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskWithRegistersTest.java +++ b/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskWithRegistersTest.java @@ -88,6 +88,7 @@ import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.InitialSearchTask;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.test.clients.ErnpRestClientTest;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.test.clients.ZmrClientTest;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.MatchingTaskUtils; +import at.asitplus.eidas.specific.modules.core.eidas.EidasConstants;  import at.gv.bmi.namespace.zmr_su.base._20040201.RequestType;  import at.gv.bmi.namespace.zmr_su.base._20040201.ResponseType;  import at.gv.bmi.namespace.zmr_su.base._20040201_.ServicePort; @@ -607,24 +608,24 @@ public class InitialSearchTaskWithRegistersTest {                                                          String dateOfBirth, String taxNumber, String placeOfBirth,                                                          String birthName) throws URISyntaxException {      ImmutableAttributeMap.Builder builder = ImmutableAttributeMap.builder() -        .put(generateStringAttribute(Constants.eIDAS_ATTR_PERSONALIDENTIFIER, +        .put(generateStringAttribute(EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER,              randomAlphabetic(2), randomAlphabetic(2)), identifier) -        .put(generateStringAttribute(Constants.eIDAS_ATTR_CURRENTFAMILYNAME, +        .put(generateStringAttribute(EidasConstants.eIDAS_ATTR_CURRENTFAMILYNAME,              randomAlphabetic(3), randomAlphabetic(3)), familyName) -        .put(generateStringAttribute(Constants.eIDAS_ATTR_CURRENTGIVENNAME, +        .put(generateStringAttribute(EidasConstants.eIDAS_ATTR_CURRENTGIVENNAME,              randomAlphabetic(4), randomAlphabetic(4)), givenName) -        .put(generateDateTimeAttribute(Constants.eIDAS_ATTR_DATEOFBIRTH, +        .put(generateDateTimeAttribute(EidasConstants.eIDAS_ATTR_DATEOFBIRTH,              randomAlphabetic(5), randomAlphabetic(5)), dateOfBirth);      if (taxNumber != null) { -      builder.put(generateStringAttribute(Constants.eIDAS_ATTR_TAXREFERENCE, +      builder.put(generateStringAttribute(EidasConstants.eIDAS_ATTR_TAXREFERENCE,            randomAlphabetic(6), randomAlphabetic(6)), taxNumber);      }      if (birthName != null) { -      builder.put(generateStringAttribute(Constants.eIDAS_ATTR_BIRTHNAME, +      builder.put(generateStringAttribute(EidasConstants.eIDAS_ATTR_BIRTHNAME,            randomAlphabetic(7), randomAlphabetic(7)), birthName);      }      if (placeOfBirth != null) { -      builder.put(generateStringAttribute(Constants.eIDAS_ATTR_PLACEOFBIRTH, +      builder.put(generateStringAttribute(EidasConstants.eIDAS_ATTR_PLACEOFBIRTH,            randomAlphabetic(8), randomAlphabetic(8)), placeOfBirth);      }      final ImmutableAttributeMap attributeMap = builder.build(); diff --git a/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveAuthnResponseTaskTest.java b/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveAuthnResponseTaskTest.java index 842c8bf7..53f83095 100644 --- a/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveAuthnResponseTaskTest.java +++ b/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveAuthnResponseTaskTest.java @@ -27,8 +27,9 @@ import at.asitplus.eidas.specific.core.MsEidasNodeConstants;  import at.asitplus.eidas.specific.core.test.config.dummy.MsConnectorDummyConfigMap;  import at.asitplus.eidas.specific.core.test.config.dummy.MsConnectorDummySpConfiguration;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.EidasAttributeRegistry;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.ReceiveAuthnResponseTask; +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.api.IRequest;  import at.gv.egiz.eaaf.core.api.IRequestStorage;  import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants; @@ -142,7 +143,7 @@ public class ReceiveAuthnResponseTaskTest {    public void successAndForward() throws URISyntaxException, TaskExecutionException,         PendingReqIdValidationException, EaafStorageException {     -    AuthenticationResponse eidasResponse = buildDummyAuthResponse(Constants.SUCCESS_URI); +    AuthenticationResponse eidasResponse = buildDummyAuthResponse(EidasConstants.SUCCESS_URI);      httpReq.setAttribute(Constants.DATA_FULL_EIDAS_RESPONSE, eidasResponse);      String alternativReturnEndpoint = "http://ms-connector.alternative/" + RandomStringUtils.randomAlphabetic(10); @@ -172,7 +173,7 @@ public class ReceiveAuthnResponseTaskTest {    public void success() throws URISyntaxException, TaskExecutionException, PendingReqIdValidationException {      @Nonnull -    AuthenticationResponse eidasResponse = buildDummyAuthResponse(Constants.SUCCESS_URI); +    AuthenticationResponse eidasResponse = buildDummyAuthResponse(EidasConstants.SUCCESS_URI);      httpReq.setAttribute(Constants.DATA_FULL_EIDAS_RESPONSE, eidasResponse);      executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "LU"); @@ -200,7 +201,7 @@ public class ReceiveAuthnResponseTaskTest {      basicConfig.putConfigValue("eidas.ms.auth.eIDAS.eid.testidentity.default", "true");      @Nonnull       -    AuthenticationResponse eidasResponse = buildDummyAuthResponse(Constants.SUCCESS_URI); +    AuthenticationResponse eidasResponse = buildDummyAuthResponse(EidasConstants.SUCCESS_URI);      httpReq.setAttribute(Constants.DATA_FULL_EIDAS_RESPONSE, eidasResponse);      executionContext.put(MsEidasNodeConstants.REQ_PARAM_SELECTED_COUNTRY, "LU");     @@ -226,13 +227,13 @@ public class ReceiveAuthnResponseTaskTest {    @Nonnull    private AuthenticationResponse buildDummyAuthResponse(String statusCode) throws URISyntaxException {      final AttributeDefinition attributeDef = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -        Constants.eIDAS_ATTR_PERSONALIDENTIFIER).first(); +        EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER).first();      final AttributeDefinition attributeDef2 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -        Constants.eIDAS_ATTR_CURRENTFAMILYNAME).first(); +        EidasConstants.eIDAS_ATTR_CURRENTFAMILYNAME).first();      final AttributeDefinition attributeDef3 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -        Constants.eIDAS_ATTR_CURRENTGIVENNAME).first(); +        EidasConstants.eIDAS_ATTR_CURRENTGIVENNAME).first();      final AttributeDefinition attributeDef4 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -        Constants.eIDAS_ATTR_DATEOFBIRTH).first(); +        EidasConstants.eIDAS_ATTR_DATEOFBIRTH).first();      final ImmutableAttributeMap attributeMap = ImmutableAttributeMap.builder()          .put(attributeDef, "LU/AT/" + RandomStringUtils.randomNumeric(64)) diff --git a/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveEidasResponseTaskTest.java b/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveEidasResponseTaskTest.java index 4148b138..4112e047 100644 --- a/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveEidasResponseTaskTest.java +++ b/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveEidasResponseTaskTest.java @@ -27,8 +27,9 @@ import at.asitplus.eidas.specific.core.MsEidasNodeConstants;  import at.asitplus.eidas.specific.core.test.config.dummy.MsConnectorDummyConfigMap;  import at.asitplus.eidas.specific.core.test.config.dummy.MsConnectorDummySpConfiguration;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.EidasAttributeRegistry;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.ReceiveAuthnResponseAlternativeTask; +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.api.IRequest;  import at.gv.egiz.eaaf.core.api.IRequestStorage;  import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants; @@ -141,7 +142,7 @@ public class ReceiveEidasResponseTaskTest {    public void successAndForward() throws URISyntaxException, TaskExecutionException,         PendingReqIdValidationException, EaafStorageException {     -    AuthenticationResponse eidasResponse = buildDummyAuthResponse(Constants.SUCCESS_URI); +    AuthenticationResponse eidasResponse = buildDummyAuthResponse(EidasConstants.SUCCESS_URI);      httpReq.setAttribute(Constants.DATA_FULL_EIDAS_RESPONSE, eidasResponse);      String alternativReturnEndpoint = "http://ms-connector.alternative/" + RandomStringUtils.randomAlphabetic(10); @@ -171,7 +172,7 @@ public class ReceiveEidasResponseTaskTest {    public void success() throws URISyntaxException, TaskExecutionException, PendingReqIdValidationException {      @Nonnull -    AuthenticationResponse eidasResponse = buildDummyAuthResponse(Constants.SUCCESS_URI); +    AuthenticationResponse eidasResponse = buildDummyAuthResponse(EidasConstants.SUCCESS_URI);      httpReq.setAttribute(Constants.DATA_FULL_EIDAS_RESPONSE, eidasResponse);      //execute test @@ -198,7 +199,7 @@ public class ReceiveEidasResponseTaskTest {      basicConfig.putConfigValue("eidas.ms.auth.eIDAS.eid.testidentity.default", "true");      @Nonnull       -    AuthenticationResponse eidasResponse = buildDummyAuthResponse(Constants.SUCCESS_URI); +    AuthenticationResponse eidasResponse = buildDummyAuthResponse(EidasConstants.SUCCESS_URI);      httpReq.setAttribute(Constants.DATA_FULL_EIDAS_RESPONSE, eidasResponse);      //execute test @@ -223,14 +224,14 @@ public class ReceiveEidasResponseTaskTest {    @Nonnull    private AuthenticationResponse buildDummyAuthResponse(String statusCode) throws URISyntaxException {      final AttributeDefinition attributeDef = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -        Constants.eIDAS_ATTR_PERSONALIDENTIFIER).first(); +        EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER).first();      final AttributeDefinition attributeDef2 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -        Constants.eIDAS_ATTR_CURRENTFAMILYNAME).first(); +        EidasConstants.eIDAS_ATTR_CURRENTFAMILYNAME).first();      final AttributeDefinition attributeDef3 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -        Constants.eIDAS_ATTR_CURRENTGIVENNAME).first(); +        EidasConstants.eIDAS_ATTR_CURRENTGIVENNAME).first();      final AttributeDefinition attributeDef4 = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -        Constants.eIDAS_ATTR_DATEOFBIRTH).first(); - +        EidasConstants.eIDAS_ATTR_DATEOFBIRTH).first(); +         final ImmutableAttributeMap attributeMap = ImmutableAttributeMap.builder()          .put(attributeDef, "LU/AT/" + RandomStringUtils.randomNumeric(64))          .put(attributeDef2, RandomStringUtils.randomAlphabetic(10)) diff --git a/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasAttributePostProcessingTest.java b/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasAttributePostProcessingTest.java index 16efd84b..b8cb0642 100644 --- a/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasAttributePostProcessingTest.java +++ b/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasAttributePostProcessingTest.java @@ -40,12 +40,13 @@ 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.modules.auth.eidas.v2.Constants;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasSAuthenticationException;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.CcSpecificEidProcessingService; +import at.asitplus.eidas.specific.modules.core.eidas.EidasConstants;  import lombok.SneakyThrows; +  @RunWith(SpringJUnit4ClassRunner.class)  @ContextConfiguration(locations = {      "/SpringTest-context_tasks_test.xml", @@ -352,12 +353,12 @@ public class EidasAttributePostProcessingTest {    private Map<String, Object> generateInputData(String id, String familyName, String givenName,        String dateOfBirth, String placeOfBirth, String birthName) {      final Map<String, Object> result = new HashMap<>(); -    result.put(Constants.eIDAS_ATTR_PERSONALIDENTIFIER, id); -    result.put(Constants.eIDAS_ATTR_CURRENTGIVENNAME, givenName); -    result.put(Constants.eIDAS_ATTR_CURRENTFAMILYNAME, familyName); -    result.put(Constants.eIDAS_ATTR_DATEOFBIRTH, dateOfBirth); -    result.put(Constants.eIDAS_ATTR_PLACEOFBIRTH, placeOfBirth); -    result.put(Constants.eIDAS_ATTR_BIRTHNAME, birthName); +    result.put(EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER, id); +    result.put(EidasConstants.eIDAS_ATTR_CURRENTGIVENNAME, givenName); +    result.put(EidasConstants.eIDAS_ATTR_CURRENTFAMILYNAME, familyName); +    result.put(EidasConstants.eIDAS_ATTR_DATEOFBIRTH, dateOfBirth); +    result.put(EidasConstants.eIDAS_ATTR_PLACEOFBIRTH, placeOfBirth); +    result.put(EidasConstants.eIDAS_ATTR_BIRTHNAME, birthName);      return result;    } diff --git a/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasResponseValidatorTest.java b/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasResponseValidatorTest.java index bbba56e2..91a50d28 100644 --- a/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasResponseValidatorTest.java +++ b/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/validation/EidasResponseValidatorTest.java @@ -21,10 +21,10 @@ import com.google.common.collect.ImmutableSet;  import at.asitplus.eidas.specific.core.test.config.dummy.MsConnectorDummyConfigMap;  import at.asitplus.eidas.specific.core.test.config.dummy.MsConnectorDummySpConfiguration; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.EidasValidationException; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.EidasAttributeRegistry;  import at.asitplus.eidas.specific.modules.auth.eidas.v2.validator.EidasResponseValidator; +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.api.data.EaafConfigConstants;  import at.gv.egiz.eaaf.core.api.data.EaafConstants;  import at.gv.egiz.eaaf.core.exceptions.EaafStorageException; @@ -300,7 +300,7 @@ public class EidasResponseValidatorTest {      final AttributeDefinition personIdattributeDef = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -        Constants.eIDAS_ATTR_PERSONALIDENTIFIER).first(); +        EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER).first();      final Builder attributeMap = ImmutableAttributeMap.builder();      if (personalId != null) { @@ -319,7 +319,7 @@ public class EidasResponseValidatorTest {      return b.id("_".concat(Random.nextHexRandom16()))          .issuer(RandomStringUtils.randomAlphabetic(10))          .subject(RandomStringUtils.randomAlphabetic(10)) -        .statusCode(Constants.SUCCESS_URI) +        .statusCode(EidasConstants.SUCCESS_URI)          .inResponseTo("_".concat(Random.nextHexRandom16()))          .subjectNameIdFormat("afaf")          .levelOfAssurance(loa) 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 c843c40c..d71a47dc 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 @@ -17,13 +17,13 @@          class="at.asitplus.eidas.specific.modules.auth.eidas.v2.config.EidasConnectorMessageSource"/>    <bean id="SZRClientForeIDAS" -    class="at.asitplus.eidas.specific.modules.auth.eidas.v2.szr.SzrClient" /> +    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" -    class="at.asitplus.eidas.specific.modules.auth.eidas.v2.test.dummy.DummySpecificCommunicationService" /> +    class="at.asitplus.eidas.specific.modules.core.eidas.test.dummy.DummySpecificCommunicationService" />    <bean id="specificConnectorAttributesFileWithPath"      class="java.lang.String"> @@ -38,13 +38,16 @@    </bean>    <bean id="attributeRegistry" -    class="at.asitplus.eidas.specific.modules.auth.eidas.v2.service.EidasAttributeRegistry"> +    class="at.asitplus.eidas.specific.modules.core.eidas.service.EidasAttributeRegistry">      <property name="eidasAttributesFile"        ref="specificConnectorAttributesFileWithPath" />      <property name="additionalAttributesFile"        ref="specificConnectorAdditionalAttributesFileWithPath" />    </bean> +  <bean id="connectorAttributeRegistry" +        class="at.asitplus.eidas.specific.modules.auth.eidas.v2.service.ConnectorEidasAttributeRegistry" /> +    <bean id="EIDPostProcessingService"      class="at.asitplus.eidas.specific.modules.auth.eidas.v2.service.CcSpecificEidProcessingService" /> 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 0afa0d7d..1b5391d5 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 @@ -25,7 +25,7 @@      class="at.gv.egiz.eaaf.core.impl.gui.builder.SpringMvcGuiFormBuilderImpl" />    <bean id="springManagedSpecificConnectorCommunicationService" -    class="at.asitplus.eidas.specific.modules.auth.eidas.v2.test.dummy.DummySpecificCommunicationService" /> +    class="at.asitplus.eidas.specific.modules.core.eidas.test.dummy.DummySpecificCommunicationService" />    <bean id="dummyPvpConfig"          class="at.gv.egiz.eaaf.modules.pvp2.idp.test.dummy.DummyPvpConfiguration" /> @@ -36,17 +36,5 @@    <bean id="dummyVelocityBuilder"          class="at.gv.egiz.eaaf.core.impl.idp.module.gui.DummyVelocityGuiFormBuilder" /> -  <bean id="specificConnectorAttributesFileWithPath" -    class="java.lang.String"> -    <constructor-arg -      value="src/test/resources/config/eidas-attributes.xml" /> -  </bean> - -  <bean id="specificConnectorAdditionalAttributesFileWithPath" -    class="java.lang.String"> -    <constructor-arg -      value="src/test/resources/config/additional-attributes.xml" /> -  </bean> -  </beans>
\ No newline at end of file diff --git a/modules/core_commons_eidas/checks/spotbugs-exclude.xml b/modules/core_commons_eidas/checks/spotbugs-exclude.xml new file mode 100644 index 00000000..bcb1402f --- /dev/null +++ b/modules/core_commons_eidas/checks/spotbugs-exclude.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<FindBugsFilter> +  <Match> +    <!-- File path is only loaded from configuration --> +    <Class name="at.asitplus.eidas.specific.modules.core.eidas.service.EidasAttributeRegistry" /> +    <Method name="initialize" /> +    <Bug pattern="PATH_TRAVERSAL_IN" />                +  </Match>         +</FindBugsFilter> diff --git a/modules/core_commons_eidas/pom.xml b/modules/core_commons_eidas/pom.xml new file mode 100644 index 00000000..2a1e2575 --- /dev/null +++ b/modules/core_commons_eidas/pom.xml @@ -0,0 +1,174 @@ +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> +  <modelVersion>4.0.0</modelVersion> +  <parent> +    <groupId>at.asitplus.eidas.ms_specific</groupId> +    <artifactId>modules</artifactId> +    <version>1.3.1-SNAPSHOT</version> +  </parent> +  <artifactId>core_commons_eidas</artifactId> +  <name>Commons for eIDAS Node communication</name> +   +  <profiles> +    <profile> +      <id>default</id> +      <activation> +        <activeByDefault>true</activeByDefault> +      </activation> +      <repositories> +        <repository> +          <id>egiz-commons</id> +          <url>https://apps.egiz.gv.at/maven/</url> +          <releases> +            <enabled>true</enabled> +          </releases> +        </repository> +        <repository> +          <id>eIDASNode-local</id> +          <name>local</name> +          <url>file:${basedir}/../../repository</url> +        </repository> +      </repositories> +    </profile> +  </profiles> + +  <dependencies> +    <dependency> +      <groupId>at.gv.egiz.components</groupId> +      <artifactId>egiz-spring-api</artifactId> +    </dependency> +    <dependency> +      <groupId>at.asitplus.eidas.ms_specific</groupId> +      <artifactId>core_common_lib</artifactId> +    </dependency>   +    <dependency> +      <groupId>at.gv.egiz.eaaf</groupId> +      <artifactId>eaaf-core</artifactId> +    </dependency> + +    <!-- eIDAS reference implemenation libs --> +    <dependency> +      <groupId>eu.eidas</groupId> +      <artifactId>eidas-commons</artifactId> +      <exclusions> +        <exclusion> +          <groupId>log4j</groupId> +          <artifactId>log4j</artifactId> +        </exclusion> +        <exclusion> +          <artifactId>log4j-over-slf4j</artifactId> +          <groupId>org.slf4j</groupId> +        </exclusion> +      </exclusions> +    </dependency> +    <dependency> +      <groupId>eu.eidas</groupId> +      <artifactId>eidas-specific-communication-definition</artifactId> +    </dependency> +    <dependency> +      <groupId>eu.eidas</groupId> +      <artifactId>eidas-jcache-ignite-specific-communication</artifactId> +    </dependency>     +     + +  <!-- Testing --> +    <dependency> +      <groupId>junit</groupId> +      <artifactId>junit</artifactId> +      <scope>test</scope> +    </dependency> +    <dependency> +      <groupId>org.springframework</groupId> +      <artifactId>spring-test</artifactId> +      <scope>test</scope> +    </dependency> +     +    <dependency> +      <groupId>at.asitplus.eidas.ms_specific</groupId> +      <artifactId>core_common_lib</artifactId> +      <scope>test</scope> +      <type>test-jar</type> +    </dependency> +     +    <dependency> +      <groupId>at.gv.egiz.eaaf</groupId> +      <artifactId>eaaf_core_utils</artifactId> +      <scope>test</scope> +      <type>test-jar</type> +    </dependency> +    <dependency> +      <groupId>at.gv.egiz.eaaf</groupId> +      <artifactId>eaaf-core</artifactId> +      <scope>test</scope> +      <type>test-jar</type> +    </dependency>     +     +  </dependencies> +   +  <build> +    <resources> +      <resource> +        <directory>src/main/resources</directory> +      </resource> +      <resource> +        <directory>target/generated-sources/cxf</directory> +      </resource> +    </resources> + +    <plugins> +      <plugin> +        <groupId>org.apache.maven.plugins</groupId> +        <artifactId>maven-compiler-plugin</artifactId> +        <configuration> +          <source>1.8</source> +          <target>1.8</target> +        </configuration> +      </plugin> +       +      <plugin> +        <groupId>com.github.spotbugs</groupId> +        <artifactId>spotbugs-maven-plugin</artifactId> +        <version>${spotbugs-maven-plugin.version}</version> +        <configuration> +          <excludeFilterFile>checks/spotbugs-exclude.xml</excludeFilterFile> +        </configuration> +      </plugin> + +      <plugin> +        <groupId>org.jacoco</groupId> +        <artifactId>jacoco-maven-plugin</artifactId> +        <executions> +          <execution> +            <id>post-unit-check</id> +            <phase>test</phase> +            <goals> +              <goal>check</goal> +              <goal>report</goal> +            </goals> +            <configuration> +              <haltOnFailure>true</haltOnFailure> +              <excludes />                                                     +            </configuration> +          </execution> +        </executions> +      </plugin> + +      <!-- enable co-existence of testng and junit --> +      <plugin> +        <artifactId>maven-surefire-plugin</artifactId> +        <configuration> +          <threadCount>1</threadCount> +        </configuration> +        <dependencies> +          <dependency> +            <groupId>org.apache.maven.surefire</groupId> +            <artifactId>surefire-junit47</artifactId> +            <version>${surefire.version}</version> +          </dependency> +        </dependencies> +      </plugin> +    </plugins> +  </build>  +   +   +   +</project>
\ No newline at end of file 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 new file mode 100644 index 00000000..ac17c30f --- /dev/null +++ b/modules/core_commons_eidas/src/main/java/at/asitplus/eidas/specific/modules/core/eidas/EidasConstants.java @@ -0,0 +1,85 @@ +package at.asitplus.eidas.specific.modules.core.eidas; + +/** + * Constants to communicate with eIDAS Node. + *  + * @author tlenz + * + */ +public class EidasConstants { + +  // 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"; +   +  public static final String CONIG_PROPS_EIDAS_CONNECTOR_NODE_FORWARD_URL =  +      EidasConstants.CONIG_PROPS_EIDAS_NODE + ".forward.endpoint"; +  public static final String CONIG_PROPS_EIDAS_NODE_FORWARD_METHOD =  +      EidasConstants.CONIG_PROPS_EIDAS_NODE + ".forward.method"; +   +  public static final String CONIG_PROPS_EIDAS_NODE_COUNTRYCODE =  +      CONIG_PROPS_EIDAS_NODE + ".countrycode"; +   +   +  // templates for post-binding forwarding +  public static final String TEMPLATE_POST_FORWARD_NAME = "eidas_node_forward.html"; +  public static final String TEMPLATE_POST_FORWARD_ENDPOINT = "endPoint"; +  public static final String TEMPLATE_POST_FORWARD_TOKEN_NAME = "tokenName"; +  public static final String TEMPLATE_POST_FORWARD_TOKEN_VALUE = "tokenValue"; +   +   +  // common default values +  public static final String FORWARD_METHOD_POST = "POST"; +  public static final String FORWARD_METHOD_GET = "GET";   +  public static final String DEFAULT_MS_NODE_COUNTRY_CODE = "AT"; +   +   +  // SAML2 Constants +  public static final String SUCCESS_URI = "urn:oasis:names:tc:SAML:2.0:status:Success"; +  public static final String ERROR_URI = "urn:oasis:names:tc:SAML:2.0:status:Responder"; +   +   +  // eIDAS attribute names +  public static final String eIDAS_ATTR_PERSONALIDENTIFIER = "PersonIdentifier"; +  public static final String eIDAS_ATTR_DATEOFBIRTH = "DateOfBirth"; +  public static final String eIDAS_ATTR_CURRENTGIVENNAME = "FirstName"; +  public static final String eIDAS_ATTR_CURRENTFAMILYNAME = "FamilyName"; +  public static final String eIDAS_ATTR_PLACEOFBIRTH = "PlaceOfBirth"; +  public static final String eIDAS_ATTR_BIRTHNAME = "BirthName"; +  public static final String eIDAS_ATTR_CURRENTADDRESS = "CurrentAddress"; +   +  //TODO: set parameter if it's defined +  public static final String eIDAS_ATTR_TAXREFERENCE = "notYetDefined"; +   +  public static final String eIDAS_ATTR_LEGALPERSONIDENTIFIER = "LegalPersonIdentifier"; +  public static final String eIDAS_ATTR_LEGALNAME = "LegalName"; + +  public static final String eIDAS_ATTR_REPRESENTATIVE_PERSONALIDENTIFIER = "RepresentativePersonIdentifier"; +  public static final String eIDAS_ATTR_REPRESENTATIVE_DATEOFBIRTH = "RepresentativeDateOfBirth"; +  public static final String eIDAS_ATTR_REPRESENTATIVE_CURRENTGIVENNAME = "RepresentativeFirstName"; +  public static final String eIDAS_ATTR_REPRESENTATIVE_CURRENTFAMILYNAME = "RepresentativeFamilyName"; + +  //eIDAS attribute URN +  public static final String eIDAS_ATTRURN_PREFIX = "http://eidas.europa.eu/attributes/"; +  public static final String eIDAS_ATTRURN_PREFIX_NATURAL = eIDAS_ATTRURN_PREFIX + "naturalperson/"; +   +  public static final String eIDAS_ATTRURN_PERSONALIDENTIFIER = +      eIDAS_ATTRURN_PREFIX_NATURAL + eIDAS_ATTR_PERSONALIDENTIFIER;   +  public static final String eIDAS_ATTRURN_CURRENTGIVENNAME = +      eIDAS_ATTRURN_PREFIX_NATURAL + "CurrentGivenName"; +  public static final String eIDAS_ATTRURN_CURRENTFAMILYNAME = +      eIDAS_ATTRURN_PREFIX_NATURAL + "CurrentFamilyName"; +  public static final String eIDAS_ATTRURN_DATEOFBIRTH = +      eIDAS_ATTRURN_PREFIX_NATURAL + eIDAS_ATTR_DATEOFBIRTH;   +  public static final String eIDAS_ATTRURN_PLACEOFBIRTH = +      eIDAS_ATTRURN_PREFIX_NATURAL + eIDAS_ATTR_PLACEOFBIRTH; +  public static final String eIDAS_ATTRURN_BIRTHNAME = +      eIDAS_ATTRURN_PREFIX_NATURAL + eIDAS_ATTR_BIRTHNAME; +   +   +   +  private EidasConstants() { +    // hide Constructor for class with static content only.  +  } +   +} diff --git a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/service/EidasAttributeRegistry.java b/modules/core_commons_eidas/src/main/java/at/asitplus/eidas/specific/modules/core/eidas/service/EidasAttributeRegistry.java index e73491ab..15c8b3c0 100644 --- a/modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/service/EidasAttributeRegistry.java +++ b/modules/core_commons_eidas/src/main/java/at/asitplus/eidas/specific/modules/core/eidas/service/EidasAttributeRegistry.java @@ -21,27 +21,19 @@   * that you distribute must include a readable copy of the "NOTICE" text file.  */ -package at.asitplus.eidas.specific.modules.auth.eidas.v2.service; +package at.asitplus.eidas.specific.modules.core.eidas.service;  import java.io.File; -import java.text.MessageFormat; -import java.util.HashMap; -import java.util.List; -import java.util.Map;  import javax.annotation.PostConstruct; -import org.apache.commons.lang3.StringUtils;  import org.slf4j.Logger;  import org.slf4j.LoggerFactory;  import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.lang.NonNull;  import org.springframework.stereotype.Service; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants;  import at.gv.egiz.eaaf.core.api.idp.IConfigurationWithSP;  import at.gv.egiz.eaaf.core.exceptions.EaafConfigurationException; -import at.gv.egiz.eaaf.core.impl.utils.KeyValueUtils;  import eu.eidas.auth.commons.attribute.AttributeRegistries;  import eu.eidas.auth.commons.attribute.AttributeRegistry; @@ -49,7 +41,7 @@ import eu.eidas.auth.commons.attribute.AttributeRegistry;  public class EidasAttributeRegistry {    private static final Logger log = LoggerFactory.getLogger(EidasAttributeRegistry.class);    @Autowired -  private IConfigurationWithSP basicConfig; +  protected IConfigurationWithSP basicConfig;    private AttributeRegistry coreAttributeRegistry; @@ -98,77 +90,7 @@ public class EidasAttributeRegistry {      return coreAttributeRegistry;    } -  /** -   * Get Map of attributes that are requested by default. -   *  -   * @return Map of AttributeIdentifier, isRequired flag -   */ -  @NonNull -  public Map<String, Boolean> getDefaultAttributeSetFromConfiguration() { -    /* -     * TODO: select set for representation if mandates should be used. It's an open -     * task in respect to requested eIDAS attributes and isRequired flag, because -     * there can be a decision problem in case of natural or legal person -     * representation! From an Austrian use-case point of view, an Austrian service -     * provider can support mandates for natural and legal persons at the same time. -     * However, we CAN NOT request attributes for natural AND legal persons on the -     * same time, because it's not possible to represent both simultaneously. -     */ -    final Map<String, String> configAttributes = -        basicConfig.getBasicConfigurationWithPrefix( -            Constants.CONIG_PROPS_EIDAS_NODE_ATTRIBUTES_REQUESTED_DEFAULT_ONLYNATURAL); -    return processAttributeInfosFromConfig(configAttributes); - -  } - -  /** -   * Get a Map of attributes that are additionally requested for a specific country. -   *  -   * @param countryCode Country Code -   * @return Map of AttributeIdentifier, isRequired flag -   */ -  @NonNull -  public Map<String, Boolean> getAttributeSetFromConfiguration(String countryCode) { - -    /* -     * TODO: select set for representation if mandates should be used. It's an open -     * task in respect to requested eIDAS attributes and isRequired flag, because -     * there can be a decision problem in case of natural or legal person -     * representation! From an Austrian use-case point of view, an Austrian service -     * provider can support mandates for natural and legal persons at the same time. -     * However, we CAN NOT request attributes for natural AND legal persons on the -     * same time, because it's not possible to represent both simultaneously. -     */ -    final Map<String, String> configAttributes = -        basicConfig.getBasicConfigurationWithPrefix( -            MessageFormat.format( -                Constants.CONIG_PROPS_EIDAS_NODE_ATTRIBUTES_REQUESTED_CC_SPECIFIC_ONLYNATURAL, -                countryCode.toLowerCase())); -    return processAttributeInfosFromConfig(configAttributes); - -  } - -  private Map<String, Boolean> processAttributeInfosFromConfig(Map<String, String> configAttributes) { - -    final Map<String, Boolean> result = new HashMap<>(); -    for (final String el : configAttributes.values()) { -      if (StringUtils.isNotEmpty(el.trim())) { -        final List<String> attrDef = KeyValueUtils.getListOfCsvValues(el.trim()); -        boolean isRequired = false; -        if (attrDef.size() == 2) { -          isRequired = Boolean.parseBoolean(attrDef.get(1)); -        } - -        result.put(attrDef.get(0), isRequired); - -      } -    } - -    log.trace("Load #" + result.size() + " requested attributes from configuration"); -    return result; - -  } - +     public void setEidasAttributesFile(String eidasAttributesFile) {      this.eidasAttributesFile = eidasAttributesFile;    } diff --git a/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/dummy/DummySpecificCommunicationService.java b/modules/core_commons_eidas/src/test/java/at/asitplus/eidas/specific/modules/core/eidas/test/dummy/DummySpecificCommunicationService.java index 78294047..97ccade4 100644 --- a/modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/dummy/DummySpecificCommunicationService.java +++ b/modules/core_commons_eidas/src/test/java/at/asitplus/eidas/specific/modules/core/eidas/test/dummy/DummySpecificCommunicationService.java @@ -1,4 +1,4 @@ -package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.dummy; +package at.asitplus.eidas.specific.modules.core.eidas.test.dummy;  import java.util.Collection; diff --git a/modules/eidas_proxy-sevice/pom.xml b/modules/eidas_proxy-sevice/pom.xml index 39763edf..e45d6ee0 100644 --- a/modules/eidas_proxy-sevice/pom.xml +++ b/modules/eidas_proxy-sevice/pom.xml @@ -25,12 +25,12 @@      </dependency>      <dependency>        <groupId>at.asitplus.eidas.ms_specific</groupId> -      <artifactId>core_common_lib</artifactId> +      <artifactId>core_common_lib</artifactId>            </dependency>      <dependency> -      <groupId>at.asitplus.eidas.ms_specific.modules</groupId> -      <artifactId>authmodule-eIDAS-v2</artifactId> -    </dependency> +      <groupId>at.asitplus.eidas.ms_specific</groupId> +      <artifactId>core_commons_eidas</artifactId> +    </dependency>            <dependency>        <groupId>at.gv.egiz.eaaf</groupId>        <artifactId>eaaf-core</artifactId> @@ -101,11 +101,17 @@        <type>test-jar</type>      </dependency>      <dependency> +      <groupId>at.asitplus.eidas.ms_specific</groupId> +      <artifactId>core_commons_eidas</artifactId> +      <scope>test</scope> +      <type>test-jar</type>         +    </dependency>     +    <!-- dependency>        <groupId>at.asitplus.eidas.ms_specific.modules</groupId>        <artifactId>authmodule-eIDAS-v2</artifactId>        <scope>test</scope>        <type>test-jar</type> -    </dependency>       +    </dependency>-->            <dependency>        <groupId>at.gv.egiz.eaaf</groupId> diff --git a/modules/eidas_proxy-sevice/src/main/java/at/asitplus/eidas/specific/modules/msproxyservice/MsProxyServiceConstants.java b/modules/eidas_proxy-sevice/src/main/java/at/asitplus/eidas/specific/modules/msproxyservice/MsProxyServiceConstants.java index f6a88aa3..fd6b45bb 100644 --- a/modules/eidas_proxy-sevice/src/main/java/at/asitplus/eidas/specific/modules/msproxyservice/MsProxyServiceConstants.java +++ b/modules/eidas_proxy-sevice/src/main/java/at/asitplus/eidas/specific/modules/msproxyservice/MsProxyServiceConstants.java @@ -1,6 +1,6 @@  package at.asitplus.eidas.specific.modules.msproxyservice; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; +import at.asitplus.eidas.specific.modules.core.eidas.EidasConstants;  import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants;  /** @@ -15,22 +15,22 @@ public class MsProxyServiceConstants {    public static final String TEMPLATE_SP_UNIQUE_ID = "eidasProxyAuth_from_{0}_type_{1}";    // configuration constants -  public static final String CONIG_PROPS_EIDAS_PROXY_NODE_ENTITYID = Constants.CONIG_PROPS_EIDAS_NODE +  public static final String CONIG_PROPS_EIDAS_PROXY_NODE_ENTITYID = EidasConstants.CONIG_PROPS_EIDAS_NODE        + ".proxy.entityId"; -  public static final String CONIG_PROPS_EIDAS_PROXY_NODE_FORWARD_URL = Constants.CONIG_PROPS_EIDAS_NODE +  public static final String CONIG_PROPS_EIDAS_PROXY_NODE_FORWARD_URL = EidasConstants.CONIG_PROPS_EIDAS_NODE        + ".proxy.forward.endpoint";    // mandate configuration    public static final String CONIG_PROPS_EIDAS_PROXY_MANDATES_ENABLED =  -      Constants.CONIG_PROPS_EIDAS_PREFIX + ".proxy.mandates.enabled";   +      EidasConstants.CONIG_PROPS_EIDAS_PREFIX + ".proxy.mandates.enabled";      public static final String CONIG_PROPS_EIDAS_PROXY_MANDATES_PROFILE_DEFAULT_NATURAL =  -      Constants.CONIG_PROPS_EIDAS_PREFIX + ".proxy.mandates.profiles.natural.default"; +      EidasConstants.CONIG_PROPS_EIDAS_PREFIX + ".proxy.mandates.profiles.natural.default";    public static final String CONIG_PROPS_EIDAS_PROXY_MANDATES_PROFILE_DEFAULT_LEGAL =  -      Constants.CONIG_PROPS_EIDAS_PREFIX + ".proxy.mandates.profiles.legal.default"; +      EidasConstants.CONIG_PROPS_EIDAS_PREFIX + ".proxy.mandates.profiles.legal.default";    public static final String CONIG_PROPS_EIDAS_PROXY_WORKAROUND_MANDATES_LEGAL_PERSON =  -      Constants.CONIG_PROPS_EIDAS_PREFIX + ".proxy.workaround.mandates.legalperson"; +      EidasConstants.CONIG_PROPS_EIDAS_PREFIX + ".proxy.workaround.mandates.legalperson";    // specific eIDAS-Connector configuration    public static final String CONIG_PROPS_CONNECTOR_PREFIX = "connector"; 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 e24c753e..cd404cee 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 @@ -25,8 +25,8 @@ import com.google.common.collect.ImmutableSortedSet;  import at.asitplus.eidas.specific.core.MsEidasNodeConstants;  import at.asitplus.eidas.specific.core.config.ServiceProviderConfiguration; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.EidasAttributeRegistry; +import at.asitplus.eidas.specific.modules.core.eidas.EidasConstants; +import at.asitplus.eidas.specific.modules.core.eidas.service.EidasAttributeRegistry;  import at.asitplus.eidas.specific.modules.msproxyservice.MsProxyServiceConstants;  import at.asitplus.eidas.specific.modules.msproxyservice.exception.EidasProxyServiceException;  import at.asitplus.eidas.specific.modules.msproxyservice.utils.EidasProxyServiceUtils; @@ -308,8 +308,8 @@ public class EidasProxyServiceController extends AbstractController implements I        final ServiceProviderConfiguration spConfig = new ServiceProviderConfiguration(connectorConfigMap, authConfig);        // build bPK target from Country-Code  -      final String ccCountry = authConfig.getBasicConfiguration(Constants.CONIG_PROPS_EIDAS_NODE_COUNTRYCODE, -          Constants.DEFAULT_MS_NODE_COUNTRY_CODE); +      final String ccCountry = authConfig.getBasicConfiguration(EidasConstants.CONIG_PROPS_EIDAS_NODE_COUNTRYCODE, +          EidasConstants.DEFAULT_MS_NODE_COUNTRY_CODE);        spConfig.setBpkTargetIdentifier(            EaafConstants.URN_PREFIX_EIDAS + ccCountry + "+" + spCountry); 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 15524005..92165412 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 @@ -17,8 +17,8 @@ import org.springframework.web.util.UriComponentsBuilder;  import at.asitplus.eidas.specific.core.MsEidasNodeConstants;  import at.asitplus.eidas.specific.core.gui.StaticGuiBuilderConfiguration; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.EidasAttributeRegistry; +import at.asitplus.eidas.specific.modules.core.eidas.EidasConstants; +import at.asitplus.eidas.specific.modules.core.eidas.service.EidasAttributeRegistry;  import at.asitplus.eidas.specific.modules.msproxyservice.MsProxyServiceConstants;  import at.asitplus.eidas.specific.modules.msproxyservice.exception.EidasProxyServiceException;  import at.asitplus.eidas.specific.modules.msproxyservice.utils.EidasProxyServiceUtils; @@ -85,7 +85,7 @@ public class ProxyServiceAuthenticationAction implements IAction {          lightRespBuilder.relayState(eidasReq.getRelayState());          lightRespBuilder.status(ResponseStatus.builder() -            .statusCode(Constants.SUCCESS_URI) +            .statusCode(EidasConstants.SUCCESS_URI)              .build());          //TODO: check if we can use transient subjectNameIds @@ -168,8 +168,8 @@ public class ProxyServiceAuthenticationAction implements IAction {      log.debug("ForwardURL: " + forwardUrl + " selected to forward eIDAS request");      if (basicConfig.getBasicConfiguration( -        Constants.CONIG_PROPS_EIDAS_NODE_FORWARD_METHOD, -        Constants.FORWARD_METHOD_GET).equals(Constants.FORWARD_METHOD_GET)) { +        EidasConstants.CONIG_PROPS_EIDAS_NODE_FORWARD_METHOD, +        EidasConstants.FORWARD_METHOD_GET).equals(EidasConstants.FORWARD_METHOD_GET)) {        log.debug("Use http-redirect for eIDAS node forwarding ...  ");        // send redirect @@ -182,14 +182,14 @@ public class ProxyServiceAuthenticationAction implements IAction {        final StaticGuiBuilderConfiguration config = new StaticGuiBuilderConfiguration(            basicConfig,            pendingReq, -          Constants.TEMPLATE_POST_FORWARD_NAME, +          EidasConstants.TEMPLATE_POST_FORWARD_NAME,            null,            resourceLoader); -      config.putCustomParameter(null, Constants.TEMPLATE_POST_FORWARD_ENDPOINT, forwardUrl); -      config.putCustomParameter(null, Constants.TEMPLATE_POST_FORWARD_TOKEN_NAME, +      config.putCustomParameter(null, EidasConstants.TEMPLATE_POST_FORWARD_ENDPOINT, forwardUrl); +      config.putCustomParameter(null, EidasConstants.TEMPLATE_POST_FORWARD_TOKEN_NAME,            EidasParameterKeys.TOKEN.toString()); -      config.putCustomParameter(null, Constants.TEMPLATE_POST_FORWARD_TOKEN_VALUE, +      config.putCustomParameter(null, EidasConstants.TEMPLATE_POST_FORWARD_TOKEN_VALUE,            tokenBase64);        guiBuilder.build(httpReq, httpResp, config, "Forward to eIDASNode form"); @@ -233,13 +233,13 @@ public class ProxyServiceAuthenticationAction implements IAction {      if (StringUtils.isNotEmpty(natMandatorId)) {        log.debug("Injecting natural mandator informations ... ");        final AttributeDefinition<?> attrDefPersonalId = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -          Constants.eIDAS_ATTR_PERSONALIDENTIFIER).first(); +          EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER).first();        final AttributeDefinition<?> attrDefFamilyName = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -          Constants.eIDAS_ATTR_CURRENTFAMILYNAME).first(); +          EidasConstants.eIDAS_ATTR_CURRENTFAMILYNAME).first();        final AttributeDefinition<?> attrDefGivenName = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -          Constants.eIDAS_ATTR_CURRENTGIVENNAME).first(); +          EidasConstants.eIDAS_ATTR_CURRENTGIVENNAME).first();        final AttributeDefinition<?> attrDefDateOfBirth = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -          Constants.eIDAS_ATTR_DATEOFBIRTH).first(); +          EidasConstants.eIDAS_ATTR_DATEOFBIRTH).first();        attributeMap.put(attrDefPersonalId, natMandatorId);        attributeMap.put(attrDefFamilyName, eidAuthData.getGenericData( @@ -252,9 +252,9 @@ public class ProxyServiceAuthenticationAction implements IAction {      } else {        log.debug("Injecting legal mandator informations ... ");        final AttributeDefinition<?> commonName = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -          Constants.eIDAS_ATTR_LEGALNAME).first(); +          EidasConstants.eIDAS_ATTR_LEGALNAME).first();        final AttributeDefinition<?> legalPersonId = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -          Constants.eIDAS_ATTR_LEGALPERSONIDENTIFIER).first(); +          EidasConstants.eIDAS_ATTR_LEGALPERSONIDENTIFIER).first();        attributeMap.put(commonName, eidAuthData.getGenericData(            PvpAttributeDefinitions.MANDATE_LEG_PER_FULL_NAME_NAME, String.class)); @@ -267,13 +267,13 @@ public class ProxyServiceAuthenticationAction implements IAction {    private void injectRepesentativeInformation(        ImmutableAttributeMap.Builder attributeMap, IEidAuthData eidAuthData) {      final AttributeDefinition<?> attrDefPersonalId = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -        Constants.eIDAS_ATTR_REPRESENTATIVE_PERSONALIDENTIFIER).first(); +        EidasConstants.eIDAS_ATTR_REPRESENTATIVE_PERSONALIDENTIFIER).first();      final AttributeDefinition<?> attrDefFamilyName = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -        Constants.eIDAS_ATTR_REPRESENTATIVE_CURRENTFAMILYNAME).first(); +        EidasConstants.eIDAS_ATTR_REPRESENTATIVE_CURRENTFAMILYNAME).first();      final AttributeDefinition<?> attrDefGivenName = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -        Constants.eIDAS_ATTR_REPRESENTATIVE_CURRENTGIVENNAME).first(); +        EidasConstants.eIDAS_ATTR_REPRESENTATIVE_CURRENTGIVENNAME).first();      final AttributeDefinition<?> attrDefDateOfBirth = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -        Constants.eIDAS_ATTR_REPRESENTATIVE_DATEOFBIRTH).first(); +        EidasConstants.eIDAS_ATTR_REPRESENTATIVE_DATEOFBIRTH).first();      attributeMap.put(attrDefPersonalId,               eidAuthData.getGenericData(MsEidasNodeConstants.ATTR_EIDAS_PERSONAL_IDENTIFIER, String.class)); @@ -319,13 +319,13 @@ public class ProxyServiceAuthenticationAction implements IAction {    private ImmutableAttributeMap buildAttributesWithoutMandate(String personalIdentifier, String familyName,        String givenName, String dateOfBirth) {      final AttributeDefinition<?> attrDefPersonalId = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -        Constants.eIDAS_ATTR_PERSONALIDENTIFIER).first(); +        EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER).first();      final AttributeDefinition<?> attrDefFamilyName = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -        Constants.eIDAS_ATTR_CURRENTFAMILYNAME).first(); +        EidasConstants.eIDAS_ATTR_CURRENTFAMILYNAME).first();      final AttributeDefinition<?> attrDefGivenName = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -        Constants.eIDAS_ATTR_CURRENTGIVENNAME).first(); +        EidasConstants.eIDAS_ATTR_CURRENTGIVENNAME).first();      final AttributeDefinition<?> attrDefDateOfBirth = attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -        Constants.eIDAS_ATTR_DATEOFBIRTH).first(); +        EidasConstants.eIDAS_ATTR_DATEOFBIRTH).first();      final ImmutableAttributeMap.Builder attributeMap =           ImmutableAttributeMap.builder() diff --git a/modules/eidas_proxy-sevice/src/main/java/at/asitplus/eidas/specific/modules/msproxyservice/utils/EidasProxyServiceUtils.java b/modules/eidas_proxy-sevice/src/main/java/at/asitplus/eidas/specific/modules/msproxyservice/utils/EidasProxyServiceUtils.java index 4cd7ba6c..b8a4c598 100644 --- a/modules/eidas_proxy-sevice/src/main/java/at/asitplus/eidas/specific/modules/msproxyservice/utils/EidasProxyServiceUtils.java +++ b/modules/eidas_proxy-sevice/src/main/java/at/asitplus/eidas/specific/modules/msproxyservice/utils/EidasProxyServiceUtils.java @@ -1,6 +1,6 @@  package at.asitplus.eidas.specific.modules.msproxyservice.utils; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; +import at.asitplus.eidas.specific.modules.core.eidas.EidasConstants;  import eu.eidas.auth.commons.light.ILightRequest;  /** @@ -19,7 +19,7 @@ public class EidasProxyServiceUtils {     */    public static boolean isLegalPersonRequested(ILightRequest eidasRequest) {      return eidasRequest.getRequestedAttributes().entrySet().stream() -        .filter(el -> el.getKey().getFriendlyName().equals(Constants.eIDAS_ATTR_LEGALPERSONIDENTIFIER)) +        .filter(el -> el.getKey().getFriendlyName().equals(EidasConstants.eIDAS_ATTR_LEGALPERSONIDENTIFIER))          .findFirst()          .isPresent(); @@ -33,7 +33,7 @@ public class EidasProxyServiceUtils {     */    public static boolean isNaturalPersonRequested(ILightRequest eidasRequest) {      return eidasRequest.getRequestedAttributes().entrySet().stream() -        .filter(el -> el.getKey().getFriendlyName().equals(Constants.eIDAS_ATTR_PERSONALIDENTIFIER)) +        .filter(el -> el.getKey().getFriendlyName().equals(EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER))          .findFirst()          .isPresent(); diff --git a/modules/eidas_proxy-sevice/src/test/java/at/asitplus/eidas/specific/modules/auth/idaustria/test/protocol/EidasProxyServiceControllerTest.java b/modules/eidas_proxy-sevice/src/test/java/at/asitplus/eidas/specific/modules/auth/idaustria/test/protocol/EidasProxyServiceControllerTest.java index 55958d9e..2b652f79 100644 --- a/modules/eidas_proxy-sevice/src/test/java/at/asitplus/eidas/specific/modules/auth/idaustria/test/protocol/EidasProxyServiceControllerTest.java +++ b/modules/eidas_proxy-sevice/src/test/java/at/asitplus/eidas/specific/modules/auth/idaustria/test/protocol/EidasProxyServiceControllerTest.java @@ -22,7 +22,6 @@ import org.junit.Test;  import org.junit.runner.RunWith;  import org.opensaml.saml.saml2.core.NameIDType;  import org.opensaml.saml.saml2.core.StatusCode; -import org.powermock.core.classloader.annotations.PrepareForTest;  import org.springframework.beans.factory.annotation.Autowired;  import org.springframework.context.ApplicationContext;  import org.springframework.mock.web.MockHttpServletRequest; @@ -37,10 +36,9 @@ import com.google.common.collect.ImmutableSortedSet;  import at.asitplus.eidas.specific.core.config.ServiceProviderConfiguration;  import at.asitplus.eidas.specific.core.test.config.dummy.MsConnectorDummyConfigMap; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.EidasAttributeRegistry; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.CreateIdentityLinkTask; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.test.dummy.DummySpecificCommunicationService; +import at.asitplus.eidas.specific.modules.core.eidas.EidasConstants; +import at.asitplus.eidas.specific.modules.core.eidas.service.EidasAttributeRegistry; +import at.asitplus.eidas.specific.modules.core.eidas.test.dummy.DummySpecificCommunicationService;  import at.asitplus.eidas.specific.modules.msproxyservice.MsProxyServiceConstants;  import at.asitplus.eidas.specific.modules.msproxyservice.exception.EidasProxyServiceException;  import at.asitplus.eidas.specific.modules.msproxyservice.protocol.EidasProxyServiceController; @@ -59,7 +57,6 @@ import eu.eidas.specificcommunication.exception.SpecificCommunicationException;  import eu.eidas.specificcommunication.protocol.SpecificCommunicationService;  @RunWith(SpringJUnit4ClassRunner.class) -@PrepareForTest(CreateIdentityLinkTask.class)  @ContextConfiguration(locations = {      "/spring/SpringTest-context_basic_test.xml",      "/spring/SpringTest-context_basic_mapConfig.xml", @@ -222,9 +219,9 @@ public class EidasProxyServiceControllerTest {          .levelOfAssurance(EaafConstants.EIDAS_LOA_HIGH)          .requestedAttributes(ImmutableAttributeMap.builder()              .put(attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -                Constants.eIDAS_ATTR_PERSONALIDENTIFIER).first()) +                EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER).first())              .put(attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -                Constants.eIDAS_ATTR_LEGALPERSONIDENTIFIER).first()) +                EidasConstants.eIDAS_ATTR_LEGALPERSONIDENTIFIER).first())              .build());      proxyService.setiLightRequest(authnReqBuilder.build()); @@ -250,7 +247,7 @@ public class EidasProxyServiceControllerTest {          .spType("public")          .requestedAttributes(ImmutableAttributeMap.builder()              .put(attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -                Constants.eIDAS_ATTR_LEGALPERSONIDENTIFIER).first()).build()); +                EidasConstants.eIDAS_ATTR_LEGALPERSONIDENTIFIER).first()).build());      proxyService.setiLightRequest(authnReqBuilder.build()); @@ -280,7 +277,7 @@ public class EidasProxyServiceControllerTest {          .spType("public")          .requestedAttributes(ImmutableAttributeMap.builder()              .put(attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -                Constants.eIDAS_ATTR_PERSONALIDENTIFIER).first()).build()); +                EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER).first()).build());      proxyService.setiLightRequest(authnReqBuilder.build()); @@ -345,7 +342,7 @@ public class EidasProxyServiceControllerTest {          .spType("public")          .requestedAttributes(ImmutableAttributeMap.builder()              .put(attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -                Constants.eIDAS_ATTR_PERSONALIDENTIFIER).first()).build()); +                EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER).first()).build());      proxyService.setiLightRequest(authnReqBuilder.build()); @@ -389,7 +386,7 @@ public class EidasProxyServiceControllerTest {          .spType("public")          .requestedAttributes(ImmutableAttributeMap.builder()              .put(attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -                Constants.eIDAS_ATTR_LEGALPERSONIDENTIFIER).first()).build()); +                EidasConstants.eIDAS_ATTR_LEGALPERSONIDENTIFIER).first()).build());      proxyService.setiLightRequest(authnReqBuilder.build()); @@ -433,7 +430,7 @@ public class EidasProxyServiceControllerTest {          .spType("public")          .requestedAttributes(ImmutableAttributeMap.builder()              .put(attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -                Constants.eIDAS_ATTR_LEGALPERSONIDENTIFIER).first()).build()); +                EidasConstants.eIDAS_ATTR_LEGALPERSONIDENTIFIER).first()).build());      proxyService.setiLightRequest(authnReqBuilder.build()); @@ -466,7 +463,7 @@ public class EidasProxyServiceControllerTest {          .spType("public")          .requestedAttributes(ImmutableAttributeMap.builder()              .put(attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -                Constants.eIDAS_ATTR_PERSONALIDENTIFIER).first()).build()); +                EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER).first()).build());      proxyService.setiLightRequest(authnReqBuilder.build()); @@ -502,7 +499,7 @@ public class EidasProxyServiceControllerTest {          .spType("public")          .requestedAttributes(ImmutableAttributeMap.builder()              .put(attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -                Constants.eIDAS_ATTR_PERSONALIDENTIFIER).first()).build()); +                EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER).first()).build());      proxyService.setiLightRequest(authnReqBuilder.build()); @@ -556,7 +553,7 @@ public class EidasProxyServiceControllerTest {          .spType("public")          .requestedAttributes(ImmutableAttributeMap.builder()              .put(attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -                Constants.eIDAS_ATTR_PERSONALIDENTIFIER).first()).build()); +                EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER).first()).build());      proxyService.setiLightRequest(authnReqBuilder.build()); @@ -613,7 +610,7 @@ public class EidasProxyServiceControllerTest {          .spType("public")          .requestedAttributes(ImmutableAttributeMap.builder()              .put(attrRegistry.getCoreAttributeRegistry().getByFriendlyName( -                Constants.eIDAS_ATTR_LEGALPERSONIDENTIFIER).first()).build()); +                EidasConstants.eIDAS_ATTR_LEGALPERSONIDENTIFIER).first()).build());      proxyService.setiLightRequest(authnReqBuilder.build()); diff --git a/modules/eidas_proxy-sevice/src/test/java/at/asitplus/eidas/specific/modules/auth/idaustria/test/protocol/ProxyServiceAuthenticationActionTest.java b/modules/eidas_proxy-sevice/src/test/java/at/asitplus/eidas/specific/modules/auth/idaustria/test/protocol/ProxyServiceAuthenticationActionTest.java index 21d2f3b7..97b5bc03 100644 --- a/modules/eidas_proxy-sevice/src/test/java/at/asitplus/eidas/specific/modules/auth/idaustria/test/protocol/ProxyServiceAuthenticationActionTest.java +++ b/modules/eidas_proxy-sevice/src/test/java/at/asitplus/eidas/specific/modules/auth/idaustria/test/protocol/ProxyServiceAuthenticationActionTest.java @@ -24,7 +24,6 @@ import org.junit.Before;  import org.junit.Test;  import org.junit.runner.RunWith;  import org.opensaml.saml.saml2.core.NameIDType; -import org.powermock.core.classloader.annotations.PrepareForTest;  import org.springframework.beans.factory.annotation.Autowired;  import org.springframework.context.ApplicationContext;  import org.springframework.mock.web.MockHttpServletRequest; @@ -39,9 +38,8 @@ import com.google.common.collect.ImmutableSortedSet;  import at.asitplus.eidas.specific.core.MsEidasNodeConstants;  import at.asitplus.eidas.specific.core.test.config.dummy.MsConnectorDummyConfigMap;  import at.asitplus.eidas.specific.core.test.config.dummy.MsConnectorDummySpConfiguration; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.EidasAttributeRegistry; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.CreateIdentityLinkTask; +import at.asitplus.eidas.specific.modules.core.eidas.EidasConstants; +import at.asitplus.eidas.specific.modules.core.eidas.service.EidasAttributeRegistry;  import at.asitplus.eidas.specific.modules.msproxyservice.protocol.ProxyServiceAuthenticationAction;  import at.asitplus.eidas.specific.modules.msproxyservice.protocol.ProxyServicePendingRequest;  import at.gv.egiz.eaaf.core.api.data.EaafConfigConstants; @@ -64,7 +62,6 @@ import eu.eidas.specificcommunication.exception.SpecificCommunicationException;  import eu.eidas.specificcommunication.protocol.SpecificCommunicationService;  @RunWith(SpringJUnit4ClassRunner.class) -@PrepareForTest(CreateIdentityLinkTask.class)  @ContextConfiguration(locations = {      "/spring/SpringTest-context_basic_test.xml",      "/spring/SpringTest-context_basic_mapConfig.xml", @@ -163,11 +160,11 @@ public class ProxyServiceAuthenticationActionTest {      ImmutableAttributeMap respAttr = validateBasicEidasResponse(authData);      assertEquals("wrong attr. size", 4, respAttr.size());     -    checkAttrValue(respAttr, Constants.eIDAS_ATTR_PERSONALIDENTIFIER,  +    checkAttrValue(respAttr, EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER,           (String) attr.get(MsEidasNodeConstants.ATTR_EIDAS_PERSONAL_IDENTIFIER)); -    checkAttrValue(respAttr, Constants.eIDAS_ATTR_CURRENTFAMILYNAME, authData.getFamilyName()); -    checkAttrValue(respAttr, Constants.eIDAS_ATTR_CURRENTGIVENNAME, authData.getGivenName()); -    checkAttrValue(respAttr, Constants.eIDAS_ATTR_DATEOFBIRTH,  +    checkAttrValue(respAttr, EidasConstants.eIDAS_ATTR_CURRENTFAMILYNAME, authData.getFamilyName()); +    checkAttrValue(respAttr, EidasConstants.eIDAS_ATTR_CURRENTGIVENNAME, authData.getGivenName()); +    checkAttrValue(respAttr, EidasConstants.eIDAS_ATTR_DATEOFBIRTH,           authData.getDateOfBirth());    } @@ -199,19 +196,19 @@ public class ProxyServiceAuthenticationActionTest {      ImmutableAttributeMap respAttr = validateBasicEidasResponse(authData);      assertEquals("wrong attr. size", 8, respAttr.size());     -    checkAttrValue(respAttr, Constants.eIDAS_ATTR_REPRESENTATIVE_PERSONALIDENTIFIER,  +    checkAttrValue(respAttr, EidasConstants.eIDAS_ATTR_REPRESENTATIVE_PERSONALIDENTIFIER,           (String) attr.get(MsEidasNodeConstants.ATTR_EIDAS_PERSONAL_IDENTIFIER)); -    checkAttrValue(respAttr, Constants.eIDAS_ATTR_REPRESENTATIVE_CURRENTFAMILYNAME, authData.getFamilyName()); -    checkAttrValue(respAttr, Constants.eIDAS_ATTR_REPRESENTATIVE_CURRENTGIVENNAME, authData.getGivenName()); -    checkAttrValue(respAttr, Constants.eIDAS_ATTR_REPRESENTATIVE_DATEOFBIRTH, authData.getDateOfBirth()); +    checkAttrValue(respAttr, EidasConstants.eIDAS_ATTR_REPRESENTATIVE_CURRENTFAMILYNAME, authData.getFamilyName()); +    checkAttrValue(respAttr, EidasConstants.eIDAS_ATTR_REPRESENTATIVE_CURRENTGIVENNAME, authData.getGivenName()); +    checkAttrValue(respAttr, EidasConstants.eIDAS_ATTR_REPRESENTATIVE_DATEOFBIRTH, authData.getDateOfBirth()); -    checkAttrValue(respAttr, Constants.eIDAS_ATTR_PERSONALIDENTIFIER,  +    checkAttrValue(respAttr, EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER,           (String) attr.get(MsEidasNodeConstants.ATTR_EIDAS_NAT_MANDATOR_PERSONAL_IDENTIFIER)); -    checkAttrValue(respAttr, Constants.eIDAS_ATTR_CURRENTFAMILYNAME,  +    checkAttrValue(respAttr, EidasConstants.eIDAS_ATTR_CURRENTFAMILYNAME,           (String) attr.get(PvpAttributeDefinitions.MANDATE_NAT_PER_FAMILY_NAME_NAME)); -    checkAttrValue(respAttr, Constants.eIDAS_ATTR_CURRENTGIVENNAME,  +    checkAttrValue(respAttr, EidasConstants.eIDAS_ATTR_CURRENTGIVENNAME,           (String) attr.get(PvpAttributeDefinitions.MANDATE_NAT_PER_GIVEN_NAME_NAME)); -    checkAttrValue(respAttr, Constants.eIDAS_ATTR_DATEOFBIRTH,  +    checkAttrValue(respAttr, EidasConstants.eIDAS_ATTR_DATEOFBIRTH,           (String) attr.get(PvpAttributeDefinitions.MANDATE_NAT_PER_BIRTHDATE_NAME));    } @@ -237,25 +234,25 @@ public class ProxyServiceAuthenticationActionTest {      ImmutableAttributeMap respAttr = validateBasicEidasResponse(authData);      assertEquals("wrong attr. size", 6, respAttr.size());   -    checkAttrValue(respAttr, Constants.eIDAS_ATTR_REPRESENTATIVE_PERSONALIDENTIFIER,  +    checkAttrValue(respAttr, EidasConstants.eIDAS_ATTR_REPRESENTATIVE_PERSONALIDENTIFIER,           (String) attr.get(MsEidasNodeConstants.ATTR_EIDAS_PERSONAL_IDENTIFIER)); -    checkAttrValue(respAttr, Constants.eIDAS_ATTR_REPRESENTATIVE_CURRENTFAMILYNAME, authData.getFamilyName()); -    checkAttrValue(respAttr, Constants.eIDAS_ATTR_REPRESENTATIVE_CURRENTGIVENNAME, authData.getGivenName()); -    checkAttrValue(respAttr, Constants.eIDAS_ATTR_REPRESENTATIVE_DATEOFBIRTH, authData.getDateOfBirth()); +    checkAttrValue(respAttr, EidasConstants.eIDAS_ATTR_REPRESENTATIVE_CURRENTFAMILYNAME, authData.getFamilyName()); +    checkAttrValue(respAttr, EidasConstants.eIDAS_ATTR_REPRESENTATIVE_CURRENTGIVENNAME, authData.getGivenName()); +    checkAttrValue(respAttr, EidasConstants.eIDAS_ATTR_REPRESENTATIVE_DATEOFBIRTH, authData.getDateOfBirth()); -    checkAttrValue(respAttr, Constants.eIDAS_ATTR_LEGALPERSONIDENTIFIER,  +    checkAttrValue(respAttr, EidasConstants.eIDAS_ATTR_LEGALPERSONIDENTIFIER,           (String) attr.get(MsEidasNodeConstants.ATTR_EIDAS_JUR_MANDATOR_PERSONAL_IDENTIFIER)); -    checkAttrValue(respAttr, Constants.eIDAS_ATTR_LEGALNAME,  +    checkAttrValue(respAttr, EidasConstants.eIDAS_ATTR_LEGALNAME,           (String) attr.get(PvpAttributeDefinitions.MANDATE_LEG_PER_FULL_NAME_NAME));      assertNull("find nat. person subject: personalId",  -        getAttrValue(respAttr, Constants.eIDAS_ATTR_PERSONALIDENTIFIER)); +        getAttrValue(respAttr, EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER));      assertNull("find nat. person subject: familyName",  -        getAttrValue(respAttr, Constants.eIDAS_ATTR_CURRENTFAMILYNAME)); +        getAttrValue(respAttr, EidasConstants.eIDAS_ATTR_CURRENTFAMILYNAME));      assertNull("find nat. person subject: givenName",  -        getAttrValue(respAttr, Constants.eIDAS_ATTR_CURRENTGIVENNAME)); +        getAttrValue(respAttr, EidasConstants.eIDAS_ATTR_CURRENTGIVENNAME));      assertNull("find nat. person subject: dateOfBirth",  -        getAttrValue(respAttr, Constants.eIDAS_ATTR_DATEOFBIRTH)); +        getAttrValue(respAttr, EidasConstants.eIDAS_ATTR_DATEOFBIRTH));    } @@ -267,7 +264,7 @@ public class ProxyServiceAuthenticationActionTest {      //request natural person subject only      LightRequest.Builder eidasRequestBuilder = generateBasicLightRequest();      eidasRequestBuilder.requestedAttributes(ImmutableAttributeMap.builder().put( -        attrRegistry.getCoreAttributeRegistry().getByFriendlyName(Constants.eIDAS_ATTR_PERSONALIDENTIFIER).first()).build()); +        attrRegistry.getCoreAttributeRegistry().getByFriendlyName(EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER).first()).build());      pendingReq.setEidasRequest(eidasRequestBuilder.build()); @@ -307,8 +304,8 @@ public class ProxyServiceAuthenticationActionTest {      //request natural person subject only      LightRequest.Builder eidasRequestBuilder = generateBasicLightRequest();      eidasRequestBuilder.requestedAttributes(ImmutableAttributeMap.builder() -        .put(attrRegistry.getCoreAttributeRegistry().getByFriendlyName(Constants.eIDAS_ATTR_PERSONALIDENTIFIER).first()) -        .put(attrRegistry.getCoreAttributeRegistry().getByFriendlyName(Constants.eIDAS_ATTR_LEGALPERSONIDENTIFIER).first()) +        .put(attrRegistry.getCoreAttributeRegistry().getByFriendlyName(EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER).first()) +        .put(attrRegistry.getCoreAttributeRegistry().getByFriendlyName(EidasConstants.eIDAS_ATTR_LEGALPERSONIDENTIFIER).first())          .build());      pendingReq.setEidasRequest(eidasRequestBuilder.build()); @@ -331,11 +328,11 @@ public class ProxyServiceAuthenticationActionTest {      ImmutableAttributeMap respAttr = validateBasicEidasResponse(authData);      assertEquals("wrong attr. size", 10, respAttr.size());   -    checkAttrValue(respAttr, Constants.eIDAS_ATTR_PERSONALIDENTIFIER,  +    checkAttrValue(respAttr, EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER,           (String) attr.get(MsEidasNodeConstants.ATTR_EIDAS_PERSONAL_IDENTIFIER)); -    checkAttrValue(respAttr, Constants.eIDAS_ATTR_CURRENTFAMILYNAME, authData.getFamilyName()); -    checkAttrValue(respAttr, Constants.eIDAS_ATTR_CURRENTGIVENNAME, authData.getGivenName()); -    checkAttrValue(respAttr, Constants.eIDAS_ATTR_DATEOFBIRTH, authData.getDateOfBirth()); +    checkAttrValue(respAttr, EidasConstants.eIDAS_ATTR_CURRENTFAMILYNAME, authData.getFamilyName()); +    checkAttrValue(respAttr, EidasConstants.eIDAS_ATTR_CURRENTGIVENNAME, authData.getGivenName()); +    checkAttrValue(respAttr, EidasConstants.eIDAS_ATTR_DATEOFBIRTH, authData.getDateOfBirth());    } @@ -347,7 +344,8 @@ public class ProxyServiceAuthenticationActionTest {      //request natural person subject only      LightRequest.Builder eidasRequestBuilder = generateBasicLightRequest();      eidasRequestBuilder.requestedAttributes(ImmutableAttributeMap.builder() -        .put(attrRegistry.getCoreAttributeRegistry().getByFriendlyName(Constants.eIDAS_ATTR_LEGALPERSONIDENTIFIER).first()) +        .put(attrRegistry.getCoreAttributeRegistry().getByFriendlyName( +            EidasConstants.eIDAS_ATTR_LEGALPERSONIDENTIFIER).first())          .build());      pendingReq.setEidasRequest(eidasRequestBuilder.build()); @@ -371,13 +369,13 @@ public class ProxyServiceAuthenticationActionTest {      ImmutableAttributeMap respAttr = validateBasicEidasResponse(authData);      assertEquals("wrong attr. size", 6, respAttr.size());           assertNull("find nat. person subject: personalId",  -        getAttrValue(respAttr, Constants.eIDAS_ATTR_PERSONALIDENTIFIER)); +        getAttrValue(respAttr, EidasConstants.eIDAS_ATTR_PERSONALIDENTIFIER));      assertNull("find nat. person subject: familyName",  -        getAttrValue(respAttr, Constants.eIDAS_ATTR_CURRENTFAMILYNAME)); +        getAttrValue(respAttr, EidasConstants.eIDAS_ATTR_CURRENTFAMILYNAME));      assertNull("find nat. person subject: givenName",  -        getAttrValue(respAttr, Constants.eIDAS_ATTR_CURRENTGIVENNAME)); +        getAttrValue(respAttr, EidasConstants.eIDAS_ATTR_CURRENTGIVENNAME));      assertNull("find nat. person subject: dateOfBirth",  -        getAttrValue(respAttr, Constants.eIDAS_ATTR_DATEOFBIRTH)); +        getAttrValue(respAttr, EidasConstants.eIDAS_ATTR_DATEOFBIRTH));    } 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 9870d22a..08b25f0f 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 @@ -14,7 +14,7 @@    <import resource="classpath:/spring/eidas_proxy-service.beans.xml"/>    <bean id="springManagedSpecificProxyserviceCommunicationService" -        class="at.asitplus.eidas.specific.modules.auth.eidas.v2.test.dummy.DummySpecificCommunicationService" /> +        class="at.asitplus.eidas.specific.modules.core.eidas.test.dummy.DummySpecificCommunicationService" />   <bean id="mvcGUIBuilderImpl"      class="at.gv.egiz.eaaf.core.impl.gui.builder.SpringMvcGuiFormBuilderImpl" /> @@ -32,7 +32,7 @@    </bean>    <bean id="attributeRegistry" -    class="at.asitplus.eidas.specific.modules.auth.eidas.v2.service.EidasAttributeRegistry"> +    class="at.asitplus.eidas.specific.modules.core.eidas.service.EidasAttributeRegistry">      <property name="eidasAttributesFile"        ref="specificConnectorAttributesFileWithPath" />      <property name="additionalAttributesFile" diff --git a/modules/pom.xml b/modules/pom.xml index 6ff8440e..58d71cab 100644 --- a/modules/pom.xml +++ b/modules/pom.xml @@ -18,6 +18,7 @@      <module>authmodule-eIDAS-v2</module>      <module>authmodule_id-austria</module>      <module>eidas_proxy-sevice</module> +    <module>core_commons_eidas</module>  	</modules>  </project> | 
