diff options
7 files changed, 193 insertions, 14 deletions
diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java index e642c5ec..272d79c4 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/Constants.java @@ -268,7 +268,13 @@ public class Constants { 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; + 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 = diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/zmr/ZmrSoapClient.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/zmr/ZmrSoapClient.java index f24c75eb..8dbd0632 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/zmr/ZmrSoapClient.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/zmr/ZmrSoapClient.java @@ -264,6 +264,10 @@ public class ZmrSoapClient extends AbstractSoapClient implements IZmrClient { Collection<? extends EidasIdentitaetAnlageType> eidasDocumentToAdd = selectEidasDocumentsToAdd(zmrPersonToKitt, eidData); + /*TODO: Is there a requirement to change 'eIDAS-Documents'? + * We add MDS information as 'eIDAS-Documents' too. Maybe, we should update that in a later version. + */ + if (eidasDocumentToAdd.isEmpty()) { log.info("Find no eIDAS document for update during: {}. Nothing todo on ZMR side", PROCESS_KITT_GENERAL); @@ -766,6 +770,14 @@ public class ZmrSoapClient extends AbstractSoapClient implements IZmrClient { Constants.eIDAS_ATTRURN_PLACEOFBIRTH, eidData.getPlaceOfBirth(), false); addEidasDocumentIfNotAvailable(result, zmrPersonToKitt, eidData.getCitizenCountryCode(), Constants.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); + addEidasDocumentIfNotAvailable(result, zmrPersonToKitt, eidData.getCitizenCountryCode(), + Constants.eIDAS_ATTRURN_CURRENTFAMILYNAME, eidData.getFamilyName(), false); + addEidasDocumentIfNotAvailable(result, zmrPersonToKitt, eidData.getCitizenCountryCode(), + Constants.eIDAS_ATTRURN_DATEOFBIRTH, eidData.getDateOfBirth(), false); return result; diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ZmrClientTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ZmrClientTest.java index 290eefe4..2ff9f0cb 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ZmrClientTest.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/clients/ZmrClientTest.java @@ -940,13 +940,19 @@ public class ZmrClientTest { assertEquals("2 req. tech. Ref. date", "2020-02-05T13:07:06.311", secondpSuche.getPersonReferenz().getTechnisch().getLetzteAenderung().toString()); - assertEquals("eidas Docs. size", 3, secondpSuche.getEidasIdentitaetAnlage().size()); + assertEquals("eidas Docs. size", 6, secondpSuche.getEidasIdentitaetAnlage().size()); checkEidasDocumentAdd(secondpSuche.getEidasIdentitaetAnlage(), "http://eidas.europa.eu/attributes/naturalperson/PlaceOfBirth", cc, eidasData.getPlaceOfBirth()); checkEidasDocumentAdd(secondpSuche.getEidasIdentitaetAnlage(), "http://eidas.europa.eu/attributes/naturalperson/BirthName", cc, eidasData.getBirthName()); checkEidasDocumentAdd(secondpSuche.getEidasIdentitaetAnlage(), - "http://eidas.europa.eu/attributes/naturalperson/PersonIdentifier", cc, eidasData.getPseudonym()); + "http://eidas.europa.eu/attributes/naturalperson/PersonIdentifier", cc, eidasData.getPseudonym()); + checkEidasDocumentAdd(secondpSuche.getEidasIdentitaetAnlage(), + "http://eidas.europa.eu/attributes/naturalperson/CurrentGivenName", cc, eidasData.getGivenName()); + checkEidasDocumentAdd(secondpSuche.getEidasIdentitaetAnlage(), + "http://eidas.europa.eu/attributes/naturalperson/CurrentFamilyName", cc, eidasData.getFamilyName()); + checkEidasDocumentAdd(secondpSuche.getEidasIdentitaetAnlage(), + "http://eidas.europa.eu/attributes/naturalperson/DateOfBirth", cc, eidasData.getDateOfBirth()); // validate state @@ -1110,8 +1116,7 @@ public class ZmrClientTest { assertEquals("eidas Docs. size", 1, secondpSuche.getEidasIdentitaetAnlage().size()); checkEidasDocumentAdd(secondpSuche.getEidasIdentitaetAnlage(), "http://eidas.europa.eu/attributes/naturalperson/PersonIdentifier", cc, eidasData.getPseudonym()); - - + // validate state assertNotNull("no ZMR response", resp); assertEquals("wrong processId", "366200000000082", resp.getProcessId().toString()); diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/AlternativeSearchTaskWithRegisterTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/AlternativeSearchTaskWithRegisterTest.java index 66807ee0..3814c632 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/AlternativeSearchTaskWithRegisterTest.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/AlternativeSearchTaskWithRegisterTest.java @@ -71,6 +71,7 @@ import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.MatchingTaskUtils; 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; +import at.gv.bmi.namespace.zmr_su.zmr._20040201.EidasIdentitaetAnlageType; import at.gv.bmi.namespace.zmr_su.zmr._20040201.EidasSuchdatenType; import at.gv.egiz.eaaf.core.api.IRequest; import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext; @@ -509,7 +510,16 @@ public class AlternativeSearchTaskWithRegisterTest { assertNotNull("PersonAender KITT req.", zmrReq.getAllValues().get(2).getPersonAendernRequest()); checkBasicRequestParameters(zmrReq.getAllValues().get(2), ZmrClientTest.PROCESS_TASK_UPDATE, new BigInteger("367100000000079"), "jUnit123456"); - + + assertEquals("wrong number of eIDAS Docs to Add", 4, + zmrReq.getAllValues().get(2).getPersonAendernRequest().getEidasIdentitaetAnlage().size()); + checkEidasDocumentAdd(zmrReq.getAllValues().get(2).getPersonAendernRequest().getEidasIdentitaetAnlage(), + "http://eidas.europa.eu/attributes/naturalperson/DateOfBirth", "DE", "1994-12-31"); + checkEidasDocumentAdd(zmrReq.getAllValues().get(2).getPersonAendernRequest().getEidasIdentitaetAnlage(), + "http://eidas.europa.eu/attributes/naturalperson/CurrentGivenName", "DE", "XXXKlaus - Maria"); + checkEidasDocumentAdd(zmrReq.getAllValues().get(2).getPersonAendernRequest().getEidasIdentitaetAnlage(), + "http://eidas.europa.eu/attributes/naturalperson/CurrentFamilyName", "DE", "XXXvon Brandenburg"); + assertNotNull("Personensuche KITT req.", zmrReq.getAllValues().get(3).getPersonSuchenRequest()); checkBasicRequestParameters(zmrReq.getAllValues().get(3), ZmrClientTest.PROCESS_TASK_SEARCH, new BigInteger("367100000000079"), "jUnit123456"); @@ -1011,6 +1021,18 @@ public class AlternativeSearchTaskWithRegisterTest { } + + private void checkEidasDocumentAdd(List<EidasIdentitaetAnlageType> list, String type, String cc, String value) { + Optional<EidasIdentitaetAnlageType> eidasDoc = list.stream() + .filter(el -> type.equals(el.getEidasArt())) + .findFirst(); + + assertTrue("eidas doc: " + type, eidasDoc.isPresent()); + assertEquals("eIDAS docType", type, eidasDoc.get().getEidasArt()); + assertEquals("eIDAS docValue", value, eidasDoc.get().getEidasWert()); + assertEquals("eIDAS docCC", cc, eidasDoc.get().getStaatscode2()); + } + @NotNull private ErnpRegisterResult emptyErnpRegisterResult() { return new ErnpRegisterResult(Collections.emptyList()); diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskWithRegistersTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskWithRegistersTest.java index 7f27a17c..18d76264 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskWithRegistersTest.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskWithRegistersTest.java @@ -283,12 +283,8 @@ public class InitialSearchTaskWithRegistersTest { assertNotNull("Personenupdate req.", zmrReq.getAllValues().get(2).getPersonAendernRequest()); checkBasicRequestParameters(zmrReq.getAllValues().get(2), ZmrClientTest.PROCESS_TASK_UPDATE, new BigInteger("367100000000079"), "jUnit123456"); - assertEquals("eIDAS attribute to add", 1, - zmrReq.getAllValues().get(2).getPersonAendernRequest().getEidasIdentitaetAnlage().size()); - assertEquals("eIDAS attribute to add - Type", "http://eidas.europa.eu/attributes/naturalperson/PlaceOfBirth", - zmrReq.getAllValues().get(2).getPersonAendernRequest().getEidasIdentitaetAnlage().get(0).getEidasArt()); - assertEquals("eIDAS attribute to add - Value", placeOfBirth, - zmrReq.getAllValues().get(2).getPersonAendernRequest().getEidasIdentitaetAnlage().get(0).getEidasWert()); + assertEquals("eIDAS attribute to add", 4, + zmrReq.getAllValues().get(2).getPersonAendernRequest().getEidasIdentitaetAnlage().size()); assertNull("ZMR update MDS", zmrReq.getAllValues().get(2).getPersonAendernRequest().getPersonAenderung()); } diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/data/zmr/seq_1-8_search_with_personalId_only_resp.xml b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/data/zmr/seq_1-8_search_with_personalId_only_resp.xml index 3fd477ee..f21c3698 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/data/zmr/seq_1-8_search_with_personalId_only_resp.xml +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/data/zmr/seq_1-8_search_with_personalId_only_resp.xml @@ -182,7 +182,76 @@ <zmr:EidasWert>7cEYWithDEElementsasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit</zmr:EidasWert> <base:AusstellDatum>9999-12-31</base:AusstellDatum> <base:AblaufDatum>9999-12-31</base:AblaufDatum> - </zmr:EidasIdentitaet> + </zmr:EidasIdentitaet> + <zmr:EidasIdentitaet> + <base:EntityErgebnisReferenz> + <base:Technisch> + <base:EntityID>1879000000000005</base:EntityID> + <base:LetzteAenderung>2021-11-12T08:24:39.695</base:LetzteAenderung> + </base:Technisch> + <base:Von>2021-11-12T08:24:39.695</base:Von> + <base:BeginnCode>EIDAS_ANLEGEN</base:BeginnCode> + <base:BeginnFreitext>KITT for eIDAS Matching</base:BeginnFreitext> + <base:DurchgefuehrtVon> + <base:Organisation> + <base:Behoerdenschluessel>101179</base:Behoerdenschluessel> + </base:Organisation> + <base:Benutzer>eidtapp@bmi.gv.at</base:Benutzer> + </base:DurchgefuehrtVon> + </base:EntityErgebnisReferenz> + <zmr:EidasArt>http://eidas.europa.eu/attributes/naturalperson/CurrentFamilyName</zmr:EidasArt> + <zmr:Staatscode2>DE</zmr:Staatscode2> + <base:AusstellBehoerde/> + <zmr:EidasWert>XXXvon Brandenburg</zmr:EidasWert> + <base:AusstellDatum>9999-12-31</base:AusstellDatum> + <base:AblaufDatum>9999-12-31</base:AblaufDatum> + </zmr:EidasIdentitaet> + <zmr:EidasIdentitaet> + <base:EntityErgebnisReferenz> + <base:Technisch> + <base:EntityID>1879000000000005</base:EntityID> + <base:LetzteAenderung>2021-11-12T08:24:39.695</base:LetzteAenderung> + </base:Technisch> + <base:Von>2021-11-12T08:24:39.695</base:Von> + <base:BeginnCode>EIDAS_ANLEGEN</base:BeginnCode> + <base:BeginnFreitext>KITT for eIDAS Matching</base:BeginnFreitext> + <base:DurchgefuehrtVon> + <base:Organisation> + <base:Behoerdenschluessel>101179</base:Behoerdenschluessel> + </base:Organisation> + <base:Benutzer>eidtapp@bmi.gv.at</base:Benutzer> + </base:DurchgefuehrtVon> + </base:EntityErgebnisReferenz> + <zmr:EidasArt>http://eidas.europa.eu/attributes/naturalperson/CurrentGivenName</zmr:EidasArt> + <zmr:Staatscode2>DE</zmr:Staatscode2> + <base:AusstellBehoerde/> + <zmr:EidasWert>XXXClaus - Maria</zmr:EidasWert> + <base:AusstellDatum>9999-12-31</base:AusstellDatum> + <base:AblaufDatum>9999-12-31</base:AblaufDatum> + </zmr:EidasIdentitaet> + <zmr:EidasIdentitaet> + <base:EntityErgebnisReferenz> + <base:Technisch> + <base:EntityID>1879000000000005</base:EntityID> + <base:LetzteAenderung>2021-11-12T08:24:39.695</base:LetzteAenderung> + </base:Technisch> + <base:Von>2021-11-12T08:24:39.695</base:Von> + <base:BeginnCode>EIDAS_ANLEGEN</base:BeginnCode> + <base:BeginnFreitext>KITT for eIDAS Matching</base:BeginnFreitext> + <base:DurchgefuehrtVon> + <base:Organisation> + <base:Behoerdenschluessel>101179</base:Behoerdenschluessel> + </base:Organisation> + <base:Benutzer>eidtapp@bmi.gv.at</base:Benutzer> + </base:DurchgefuehrtVon> + </base:EntityErgebnisReferenz> + <zmr:EidasArt>http://eidas.europa.eu/attributes/naturalperson/DateOfBirth</zmr:EidasArt> + <zmr:Staatscode2>DE</zmr:Staatscode2> + <base:AusstellBehoerde/> + <zmr:EidasWert>1994-12-31</zmr:EidasWert> + <base:AusstellDatum>9999-12-31</base:AusstellDatum> + <base:AblaufDatum>9999-12-31</base:AblaufDatum> + </zmr:EidasIdentitaet> </zmr:PersonErgebnis> </zmr:Personendaten> <zmr:Meldedaten> diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/data/zmr/seq_3-8_kitt_get_latest_version_resp.xml b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/data/zmr/seq_3-8_kitt_get_latest_version_resp.xml index 447d2b55..656164f2 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/data/zmr/seq_3-8_kitt_get_latest_version_resp.xml +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/data/zmr/seq_3-8_kitt_get_latest_version_resp.xml @@ -146,7 +146,76 @@ <zmr:EidasWert>7cEYasdfsafsaf4CDVzNT4E7cjkU4VqForjUnit</zmr:EidasWert> <base:AusstellDatum>9999-12-31</base:AusstellDatum> <base:AblaufDatum>9999-12-31</base:AblaufDatum> - </zmr:EidasIdentitaet> + </zmr:EidasIdentitaet> + <zmr:EidasIdentitaet> + <base:EntityErgebnisReferenz> + <base:Technisch> + <base:EntityID>1879000000000005</base:EntityID> + <base:LetzteAenderung>2021-11-12T08:24:39.695</base:LetzteAenderung> + </base:Technisch> + <base:Von>2021-11-12T08:24:39.695</base:Von> + <base:BeginnCode>EIDAS_ANLEGEN</base:BeginnCode> + <base:BeginnFreitext>KITT for eIDAS Matching</base:BeginnFreitext> + <base:DurchgefuehrtVon> + <base:Organisation> + <base:Behoerdenschluessel>101179</base:Behoerdenschluessel> + </base:Organisation> + <base:Benutzer>eidtapp@bmi.gv.at</base:Benutzer> + </base:DurchgefuehrtVon> + </base:EntityErgebnisReferenz> + <zmr:EidasArt>http://eidas.europa.eu/attributes/naturalperson/CurrentFamilyName</zmr:EidasArt> + <zmr:Staatscode2>DE</zmr:Staatscode2> + <base:AusstellBehoerde/> + <zmr:EidasWert>XXXvon Brandenburg</zmr:EidasWert> + <base:AusstellDatum>9999-12-31</base:AusstellDatum> + <base:AblaufDatum>9999-12-31</base:AblaufDatum> + </zmr:EidasIdentitaet> + <zmr:EidasIdentitaet> + <base:EntityErgebnisReferenz> + <base:Technisch> + <base:EntityID>1879000000000005</base:EntityID> + <base:LetzteAenderung>2021-11-12T08:24:39.695</base:LetzteAenderung> + </base:Technisch> + <base:Von>2021-11-12T08:24:39.695</base:Von> + <base:BeginnCode>EIDAS_ANLEGEN</base:BeginnCode> + <base:BeginnFreitext>KITT for eIDAS Matching</base:BeginnFreitext> + <base:DurchgefuehrtVon> + <base:Organisation> + <base:Behoerdenschluessel>101179</base:Behoerdenschluessel> + </base:Organisation> + <base:Benutzer>eidtapp@bmi.gv.at</base:Benutzer> + </base:DurchgefuehrtVon> + </base:EntityErgebnisReferenz> + <zmr:EidasArt>http://eidas.europa.eu/attributes/naturalperson/CurrentGivenName</zmr:EidasArt> + <zmr:Staatscode2>DE</zmr:Staatscode2> + <base:AusstellBehoerde/> + <zmr:EidasWert>XXXClaus - Maria</zmr:EidasWert> + <base:AusstellDatum>9999-12-31</base:AusstellDatum> + <base:AblaufDatum>9999-12-31</base:AblaufDatum> + </zmr:EidasIdentitaet> + <zmr:EidasIdentitaet> + <base:EntityErgebnisReferenz> + <base:Technisch> + <base:EntityID>1879000000000005</base:EntityID> + <base:LetzteAenderung>2021-11-12T08:24:39.695</base:LetzteAenderung> + </base:Technisch> + <base:Von>2021-11-12T08:24:39.695</base:Von> + <base:BeginnCode>EIDAS_ANLEGEN</base:BeginnCode> + <base:BeginnFreitext>KITT for eIDAS Matching</base:BeginnFreitext> + <base:DurchgefuehrtVon> + <base:Organisation> + <base:Behoerdenschluessel>101179</base:Behoerdenschluessel> + </base:Organisation> + <base:Benutzer>eidtapp@bmi.gv.at</base:Benutzer> + </base:DurchgefuehrtVon> + </base:EntityErgebnisReferenz> + <zmr:EidasArt>http://eidas.europa.eu/attributes/naturalperson/DateOfBirth</zmr:EidasArt> + <zmr:Staatscode2>DE</zmr:Staatscode2> + <base:AusstellBehoerde/> + <zmr:EidasWert>1994-12-31</zmr:EidasWert> + <base:AusstellDatum>9999-12-31</base:AusstellDatum> + <base:AblaufDatum>9999-12-31</base:AblaufDatum> + </zmr:EidasIdentitaet> </zmr:PersonErgebnis> </zmr:Personendaten> <zmr:Meldedaten> |