From 9f0fa316c8f7adeb3529cb4c3b2c553f085f7d95 Mon Sep 17 00:00:00 2001 From: Thomas <> Date: Tue, 15 Jun 2021 12:14:51 +0200 Subject: add ZMR client, to some re-factoring, and a lot of bug-fixing --- .../checks/spotbugs-exclude.xml | 7 + eidas_modules/authmodule-eIDAS-v2/pom.xml | 8 +- .../specific/modules/auth/eidas/v2/Constants.java | 64 +- .../auth/eidas/v2/clients/AbstractSoapClient.java | 197 +++++ .../auth/eidas/v2/clients/szr/SzrClient.java | 469 ++++++++++ .../auth/eidas/v2/clients/szr/SzrService.java | 164 ++++ .../auth/eidas/v2/clients/zmr/IZmrClient.java | 89 ++ .../auth/eidas/v2/clients/zmr/ZmrSoapClient.java | 560 ++++++++++++ .../eidas/v2/dao/MergedRegisterSearchResult.java | 75 -- .../modules/auth/eidas/v2/dao/RegisterResult.java | 67 +- .../modules/auth/eidas/v2/dao/SimpleEidasData.java | 28 +- .../eidas/v2/dao/SimpleMobileSignatureData.java | 4 +- .../auth/eidas/v2/ernp/DummyErnpClient.java | 9 +- .../modules/auth/eidas/v2/ernp/IErnpClient.java | 4 +- .../v2/exception/InvalidUserInputException.java | 5 +- .../v2/exception/ManualFixNecessaryException.java | 10 +- .../auth/eidas/v2/exception/WorkflowException.java | 65 +- .../v2/exception/ZmrCommunicationException.java | 38 + .../eidas/v2/handler/AbstractEidProcessor.java | 17 +- .../CountrySpecificDetailSearchProcessor.java | 15 +- .../handler/DeSpecificDetailSearchProcessor.java | 41 +- .../handler/ItSpecificDetailSearchProcessor.java | 30 +- .../eidas/v2/service/RegisterSearchService.java | 328 +++++-- .../modules/auth/eidas/v2/szr/SzrClient.java | 601 ------------- .../modules/auth/eidas/v2/szr/SzrService.java | 164 ---- .../eidas/v2/tasks/CreateIdentityLinkTask.java | 57 +- .../eidas/v2/tasks/CreateNewErnpEntryTask.java | 25 +- .../auth/eidas/v2/tasks/InitialSearchTask.java | 229 +++-- .../ReceiveAustrianResidenceGuiResponseTask.java | 104 ++- .../ReceiveMobilePhoneSignatureResponseTask.java | 159 ++-- .../ReceiveOtherLoginMethodGuiResponseTask.java | 30 +- .../auth/eidas/v2/utils/EidasResponseUtils.java | 46 +- .../auth/eidas/v2/utils/MatchingTaskUtils.java | 88 ++ .../modules/auth/eidas/v2/utils/VersionHolder.java | 40 + .../modules/auth/eidas/v2/zmr/DummyZmrClient.java | 50 +- .../modules/auth/eidas/v2/zmr/IZmrClient.java | 48 -- .../resources/eIDAS.Authentication.process.xml | 100 +-- .../src/main/resources/eidas_v2_auth.beans.xml | 14 +- .../messages/eidas_connector_message.properties | 12 + .../src/main/resources/szr_client/SZR-1.1.WSDL | 939 --------------------- .../src/main/resources/szr_client/SZR-1.WSDL | 901 -------------------- .../src/main/resources/szr_client/SZR_v4.0.wsdl | 441 ---------- .../src/main/resources/szr_client/pvp1.xsd | 133 --- .../src/main/resources/szr_client/pvp19.xsd | 133 --- .../src/main/resources/szr_client/szr.xsd | 388 --------- .../src/main/resources/szr_client/szr_ecdsa.xsd | 30 - .../main/resources/szr_client/szr_persondata.xsd | 54 -- .../src/main/resources/szr_client/szr_pvp_sec.xsd | 10 - .../main/resources/szr_client/szr_v4.0-schemas.xml | 54 -- .../main/resources/szr_client/szr_v4.0-wsdl.xml | 10 - .../src/main/resources/szr_client/szr_v4.0.xsd | 443 ---------- .../src/main/resources/szr_client/szr_xmldsig.xsd | 31 - .../main/resources/wsdl/szr_client/SZR-1.1.WSDL | 939 +++++++++++++++++++++ .../src/main/resources/wsdl/szr_client/SZR-1.WSDL | 901 ++++++++++++++++++++ .../main/resources/wsdl/szr_client/SZR_v4.0.wsdl | 441 ++++++++++ .../src/main/resources/wsdl/szr_client/pvp1.xsd | 133 +++ .../src/main/resources/wsdl/szr_client/pvp19.xsd | 133 +++ .../src/main/resources/wsdl/szr_client/szr.xsd | 388 +++++++++ .../main/resources/wsdl/szr_client/szr_ecdsa.xsd | 30 + .../resources/wsdl/szr_client/szr_persondata.xsd | 54 ++ .../main/resources/wsdl/szr_client/szr_pvp_sec.xsd | 10 + .../resources/wsdl/szr_client/szr_v4.0-schemas.xml | 54 ++ .../resources/wsdl/szr_client/szr_v4.0-wsdl.xml | 10 + .../main/resources/wsdl/szr_client/szr_v4.0.xsd | 443 ++++++++++ .../main/resources/wsdl/szr_client/szr_xmldsig.xsd | 31 + .../resources/wsdl/zmr_client/testxml/soapenv.xsd | 125 +++ .../ablaufendeauskunftssperrenrequest.xml | 22 + .../ablaufendeauskunftssperrenresponse.xml | 194 +++++ .../ablaufendeauskunfssperren/blaetternrequest.xml | 27 + .../blaetternresponse.xml | 195 +++++ .../testxml/zmr/adoption/adoptionrequest.xml | 32 + .../testxml/zmr/adoption/adoptionresponse.xml | 82 ++ .../testxml/zmr/adresssuche/adresssucherequest.xml | 32 + .../zmr/adresssuche/adresssucheresponse.xml | 81 ++ .../behoerdenabfragerequestStufe1.xml | 33 + .../behoerdenabfragerequestStufe2.xml | 27 + .../behoerdenabfrageresponseStufe1.xml | 76 ++ .../behoerdenabfrageresponseStufe2.xml | 200 +++++ .../bestandsaenderungenrequest.xml | 26 + .../bestandsaenderungenresponse.xml | 83 ++ .../testxml/zmr/bpabfrage/bpabfragerequest.xml | 31 + .../testxml/zmr/bpabfrage/bpabfrageresponse.xml | 68 ++ .../zmr/datenabgleich/datenabgleichrequest.xml | 26 + .../zmr/datenabgleich/datenabgleichresponse.xml | 91 ++ .../zmr/fremdenabfrage/fremdenabfragerequest.xml | 31 + .../zmr/fremdenabfrage/fremdenabfrageresponse.xml | 45 + .../gisadressabfrage/gisadressabfragerequest1.xml | 30 + .../gisadressabfrage/gisadressabfragerequest2.xml | 23 + .../gisadressabfrage/gisadressabfrageresponse1.xml | 50 ++ .../gisadressabfrage/gisadressabfrageresponse2.xml | 91 ++ .../hauseigentuemerabfragerequest.xml | 35 + .../hauseigentuemerabfrageresponse.xml | 213 +++++ .../zmr/meldeauskunft/meldeauskunftrequest.xml | 44 + .../zmr/meldeauskunft/meldeauskunftresponse.xml | 75 ++ .../meldebestaetigung/meldebestaetigungrequest.xml | 26 + .../meldebestaetigungresponse.xml | 72 ++ .../zmr/militaerbehoerden/blaetternrequest.xml | 27 + .../wehrpflichtigeAbfragenRequst.xml | 31 + .../zmr_client/testxml/zmr/natuerlicheperson.xml | 30 + .../zmr/personaendern/personaendernrequest1.xml | 40 + .../zmr/personaendern/personaendernrequest2.xml | 42 + .../zmr/personaendern/personaendernresponse1.xml | 85 ++ .../zmr/personaendern/personaendernresponse2.xml | 110 +++ .../zmr/personanlegen/personanlegenrequest.xml | 56 ++ .../zmr/personanlegen/personanlegenresponse.xml | 118 +++ .../zmr/personenabfrage/blaetternrequest.xml | 27 + .../zmr/personenabfrage/blaetternresponse.xml | 210 +++++ .../personenabfragedruckrequest.xml | 23 + .../personenabfragedruckresponse.xml | 51 ++ .../zmr/personenabfrage/personenabfragerequest.xml | 37 + .../personenabfrage/personenabfrageresponse.xml | 209 +++++ .../testxml/zmr/personensuche/blaetternrequest.xml | 27 + .../zmr/personensuche/blaetternresponse.xml | 210 +++++ .../zmr/personensuche/personensucherequest.xml | 37 + .../zmr/personensuche/personensucheresponse.xml | 209 +++++ .../zmr/persontrennen/persontrennenrequest.xml | 37 + .../persontrennen/persontrennensucherequest.xml | 21 + .../personzusammenfuehrenrequest.xml | 37 + .../personzusammenfuehrensucherequest.xml | 22 + .../wohnsitzabmelden/wohnsitzabmeldenrequest.xml | 40 + .../wohnsitzabmelden/wohnsitzabmeldenresponse.xml | 77 ++ .../wohnsitzanmelden/wohnsitzanmeldenrequest.xml | 48 ++ .../wohnsitzanmelden/wohnsitzanmeldenresponse.xml | 79 ++ .../wohnsitzummelden/wohnsitzummeldenrequest.xml | 60 ++ .../wohnsitzummelden/wohnsitzummeldenresponse.xml | 124 +++ .../zuzugsbestaetigungrequest.xml | 25 + .../zuzugsbestaetigungresponse.xml | 64 ++ .../resources/wsdl/zmr_client/wsdl/Messages.xsd | 215 +++++ .../resources/wsdl/zmr_client/wsdl/Service.wsdl | 62 ++ .../main/resources/wsdl/zmr_client/wsdl/secext.xsd | 150 ++++ .../resources/wsdl/zmr_client/wsdl/secext_pvp.xsd | 152 ++++ .../wsdl/zmr_client/xsd/allgemein/Auswertungen.xsd | 200 +++++ .../zmr_client/xsd/allgemein/BasTabelleAbfrage.xsd | 176 ++++ .../xsd/allgemein/Benutzereinstellungen.xsd | 102 +++ .../xsd/allgemein/GeschaeftsprozesseAuflisten.xsd | 64 ++ .../wsdl/zmr_client/xsd/allgemein/Messages.xsd | 27 + .../xsd/allgemein/Organisationseinstellungen.xsd | 151 ++++ .../wsdl/zmr_client/xsd/allgemein/Service.xsd | 40 + .../zmr_client/xsd/eingebunden/AbfrageMuster.xsd | 140 +++ .../xsd/eingebunden/AkademischerGradFelder.xsd | 61 ++ .../wsdl/zmr_client/xsd/eingebunden/Blaettern.xsd | 56 ++ .../zmr_client/xsd/eingebunden/DokumentFelder.xsd | 74 ++ .../xsd/eingebunden/EingebundenProxy.xsd | 28 + .../wsdl/zmr_client/xsd/eingebunden/Entity.xsd | 135 +++ .../zmr_client/xsd/eingebunden/InfoFachlich.xsd | 103 +++ .../zmr_client/xsd/eingebunden/InfoTechnisch.xsd | 103 +++ .../zmr_client/xsd/eingebunden/MeldungFelder.xsd | 283 +++++++ .../zmr_client/xsd/eingebunden/PersonDataZMR.xsd | 741 ++++++++++++++++ .../zmr_client/xsd/eingebunden/PersonExport.xsd | 107 +++ .../zmr_client/xsd/eingebunden/PersonFelder.xsd | 70 ++ .../zmr_client/xsd/eingebunden/Protokollierung.xsd | 496 +++++++++++ .../zmr_client/xsd/eingebunden/SimpleTypes.xsd | 173 ++++ .../zmr_client/xsd/eingebunden/W3C-XMLDSig.xsd | 274 ++++++ .../wsdl/zmr_client/xsd/eingebunden/Workflow.xsd | 200 +++++ .../xsd/eingebunden/gis-schnittstelle.xsd | 171 ++++ .../wsdl/zmr_client/xsd/eingebunden/pvp1.xsd | 174 ++++ .../wsdl/zmr_client/xsd/eingebunden/secext.xsd | 150 ++++ .../wsdl/zmr_client/xsd/eingebunden/soapenv.xsd | 129 +++ .../xsd/zmr/AblaufendeAuskunftssperrenSuche.xsd | 76 ++ .../resources/wsdl/zmr_client/xsd/zmr/Adoption.xsd | 63 ++ .../wsdl/zmr_client/xsd/zmr/Adresssuche.xsd | 128 +++ .../zmr_client/xsd/zmr/Anwendungsintegration.xsd | 97 +++ .../xsd/zmr/AnwendungsintegrationWiederholung.xsd | 117 +++ .../zmr_client/xsd/zmr/AuskunftssperreAendern.xsd | 55 ++ .../wsdl/zmr_client/xsd/zmr/AvisoAendern.xsd | 93 ++ .../wsdl/zmr_client/xsd/zmr/AvisoAnlegen.xsd | 60 ++ .../wsdl/zmr_client/xsd/zmr/AvisoFreigeben.xsd | 69 ++ .../wsdl/zmr_client/xsd/zmr/Avisosuche.xsd | 124 +++ .../wsdl/zmr_client/xsd/zmr/BKMeldeauskunft.xsd | 69 ++ .../wsdl/zmr_client/xsd/zmr/BPKPruefung.xsd | 76 ++ .../wsdl/zmr_client/xsd/zmr/Behoerdenabfrage.xsd | 126 +++ .../xsd/zmr/BehoerdenattributeAendern.xsd | 68 ++ .../zmr_client/xsd/zmr/Bestandsaenderungen.xsd | 140 +++ .../zmr_client/xsd/zmr/BusinesspartnerAnfrage.xsd | 131 +++ .../zmr_client/xsd/zmr/Businesspartnerabfrage.xsd | 94 +++ .../xsd/zmr/BusinesspartnerabfrageErweitert.xsd | 67 ++ .../wsdl/zmr_client/xsd/zmr/Datenabgleich.xsd | 280 ++++++ .../wsdl/zmr_client/xsd/zmr/ErnpAbfrage.xsd | 161 ++++ .../wsdl/zmr_client/xsd/zmr/Fremdenabfrage.xsd | 108 +++ .../wsdl/zmr_client/xsd/zmr/GISAdressabfrage.xsd | 79 ++ .../resources/wsdl/zmr_client/xsd/zmr/GISSuche.xsd | 74 ++ .../zmr_client/xsd/zmr/Gemeindeeinstellungen.xsd | 71 ++ .../xsd/zmr/Gerichtskommissaerabfrage.xsd | 93 ++ .../xsd/zmr/GleichsetzungstabelleWarten.xsd | 185 ++++ .../zmr_client/xsd/zmr/Hauseigentuemerabfrage.xsd | 117 +++ .../wsdl/zmr_client/xsd/zmr/IAPPersonenabfrage.xsd | 120 +++ .../wsdl/zmr_client/xsd/zmr/Meldeauskunft.xsd | 102 +++ .../wsdl/zmr_client/xsd/zmr/Meldebestaetigung.xsd | 127 +++ .../xsd/zmr/MeldebestaetigungenAnfordern.xsd | 55 ++ .../zmr_client/xsd/zmr/MeldungHistKorrigieren.xsd | 112 +++ .../wsdl/zmr_client/xsd/zmr/ORFGISAnforderung.xsd | 65 ++ .../xsd/zmr/ObjektsucheMindestsicherung.xsd | 88 ++ .../xsd/zmr/ObjektsucheSteuerfahndung.xsd | 91 ++ .../wsdl/zmr_client/xsd/zmr/PersonAendern.xsd | 78 ++ .../wsdl/zmr_client/xsd/zmr/PersonAnlegen.xsd | 67 ++ .../wsdl/zmr_client/xsd/zmr/PersonExport.xsd | 74 ++ .../wsdl/zmr_client/xsd/zmr/PersonKorrigieren.xsd | 74 ++ .../wsdl/zmr_client/xsd/zmr/PersonTrennen.xsd | 75 ++ .../zmr_client/xsd/zmr/PersonZusammenfuehren.xsd | 75 ++ .../wsdl/zmr_client/xsd/zmr/PersonenIndex.xsd | 73 ++ .../wsdl/zmr_client/xsd/zmr/Personenabfrage.xsd | 139 +++ .../wsdl/zmr_client/xsd/zmr/Personenlisten.xsd | 131 +++ .../wsdl/zmr_client/xsd/zmr/Personensuche.xsd | 255 ++++++ .../wsdl/zmr_client/xsd/zmr/QKZAuswertung.xsd | 82 ++ .../wsdl/zmr_client/xsd/zmr/QKZBearbeiten.xsd | 71 ++ .../wsdl/zmr_client/xsd/zmr/SZREinzelabfrage.xsd | 85 ++ .../wsdl/zmr_client/xsd/zmr/SZRPersonenbindung.xsd | 84 ++ .../wsdl/zmr_client/xsd/zmr/SZRPersonensuche.xsd | 75 ++ .../wsdl/zmr_client/xsd/zmr/SZRSammelabfrage.xsd | 54 ++ .../wsdl/zmr_client/xsd/zmr/Sperrliste.xsd | 129 +++ .../resources/wsdl/zmr_client/xsd/zmr/Storno.xsd | 146 ++++ .../wsdl/zmr_client/xsd/zmr/SzrAbfrage.xsd | 59 ++ .../wsdl/zmr_client/xsd/zmr/TechnischeAnsicht.xsd | 132 +++ .../zmr_client/xsd/zmr/Ummeldeserviceabfrage.xsd | 79 ++ .../zmr_client/xsd/zmr/WehrpflichtigeAbfragen.xsd | 99 +++ .../wsdl/zmr_client/xsd/zmr/WohnsitzAbmelden.xsd | 68 ++ .../wsdl/zmr_client/xsd/zmr/WohnsitzAnmelden.xsd | 68 ++ .../zmr_client/xsd/zmr/WohnsitzKorrigieren.xsd | 73 ++ .../wsdl/zmr_client/xsd/zmr/WohnsitzUmmelden.xsd | 126 +++ .../wsdl/zmr_client/xsd/zmr/ZMRDatenauszug.xsd | 32 + .../resources/wsdl/zmr_client/xsd/zmr/ZMRProxy.xsd | 96 +++ .../wsdl/zmr_client/xsd/zmr/ZmrBuergerService.xsd | 373 ++++++++ .../wsdl/zmr_client/xsd/zmr/Zuzugsbestaetigung.xsd | 105 +++ .../xsd/zmr/entities/AkademischerGrad.xsd | 84 ++ .../xsd/zmr/entities/Auskunftssperre.xsd | 95 +++ .../wsdl/zmr_client/xsd/zmr/entities/Aviso.xsd | 176 ++++ .../xsd/zmr/entities/Behoerdenattribute.xsd | 67 ++ .../zmr_client/xsd/zmr/entities/ERnPAnschrift.xsd | 73 ++ .../zmr_client/xsd/zmr/entities/ERnPPerson.xsd | 114 +++ .../xsd/zmr/entities/EidasIdentitaet.xsd | 106 +++ .../xsd/zmr/entities/EidasIdentitaet.xsd.svntmp | 106 +++ .../wsdl/zmr_client/xsd/zmr/entities/Meldung.xsd | 189 +++++ .../wsdl/zmr_client/xsd/zmr/entities/Person.xsd | 233 +++++ .../xsd/zmr/entities/Qualifikationskennzeichen.xsd | 75 ++ .../zmr_client/xsd/zmr/entities/Reisedokument.xsd | 82 ++ .../xsd/zmr/entities/Staatsangehoerigkeit.xsd | 73 ++ .../xsd/zmr/entities/Standarddokument.xsd | 74 ++ .../modules/auth/eidas/v2/test/SzrClientTest.java | 2 +- .../eidas/v2/test/SzrClientTestProduction.java | 2 +- .../eidas/v2/test/tasks/InitialSearchTaskTest.java | 505 ++++++----- ...eceiveAustrianResidenceGuiResponseTaskTest.java | 142 +++- ...eceiveMobilePhoneSignatureResponseTaskTest.java | 158 ++-- .../resources/config/junit_config_1.properties | 7 + .../config/junit_config_1_springboot.properties | 13 + .../resources/config/junit_config_2.properties | 6 + .../resources/config/junit_config_3.properties | 6 + .../resources/config/junit_config_4.properties | 6 + .../config/junit_config_de_attributes.properties | 6 + 248 files changed, 24310 insertions(+), 5349 deletions(-) create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/AbstractSoapClient.java create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/szr/SzrClient.java create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/szr/SzrService.java create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/zmr/IZmrClient.java create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/zmr/ZmrSoapClient.java delete mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/dao/MergedRegisterSearchResult.java create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/exception/ZmrCommunicationException.java delete mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/szr/SzrClient.java delete mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/szr/SzrService.java create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/utils/MatchingTaskUtils.java create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/utils/VersionHolder.java delete mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/zmr/IZmrClient.java delete mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/SZR-1.1.WSDL delete mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/SZR-1.WSDL delete mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/SZR_v4.0.wsdl delete mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/pvp1.xsd delete mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/pvp19.xsd delete mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/szr.xsd delete mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/szr_ecdsa.xsd delete mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/szr_persondata.xsd delete mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/szr_pvp_sec.xsd delete mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/szr_v4.0-schemas.xml delete mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/szr_v4.0-wsdl.xml delete mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/szr_v4.0.xsd delete mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/szr_xmldsig.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/SZR-1.1.WSDL create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/SZR-1.WSDL create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/SZR_v4.0.wsdl create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/pvp1.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/pvp19.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/szr.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/szr_ecdsa.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/szr_persondata.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/szr_pvp_sec.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/szr_v4.0-schemas.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/szr_v4.0-wsdl.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/szr_v4.0.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/szr_xmldsig.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/soapenv.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/ablaufendeauskunfssperren/ablaufendeauskunftssperrenrequest.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/ablaufendeauskunfssperren/ablaufendeauskunftssperrenresponse.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/ablaufendeauskunfssperren/blaetternrequest.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/ablaufendeauskunfssperren/blaetternresponse.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/adoption/adoptionrequest.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/adoption/adoptionresponse.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/adresssuche/adresssucherequest.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/adresssuche/adresssucheresponse.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/behoerdenabfrage/behoerdenabfragerequestStufe1.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/behoerdenabfrage/behoerdenabfragerequestStufe2.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/behoerdenabfrage/behoerdenabfrageresponseStufe1.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/behoerdenabfrage/behoerdenabfrageresponseStufe2.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/bestandsaenderungen/bestandsaenderungenrequest.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/bestandsaenderungen/bestandsaenderungenresponse.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/bpabfrage/bpabfragerequest.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/bpabfrage/bpabfrageresponse.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/datenabgleich/datenabgleichrequest.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/datenabgleich/datenabgleichresponse.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/fremdenabfrage/fremdenabfragerequest.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/fremdenabfrage/fremdenabfrageresponse.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/gisadressabfrage/gisadressabfragerequest1.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/gisadressabfrage/gisadressabfragerequest2.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/gisadressabfrage/gisadressabfrageresponse1.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/gisadressabfrage/gisadressabfrageresponse2.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/hauseigentuemerabfrage/hauseigentuemerabfragerequest.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/hauseigentuemerabfrage/hauseigentuemerabfrageresponse.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/meldeauskunft/meldeauskunftrequest.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/meldeauskunft/meldeauskunftresponse.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/meldebestaetigung/meldebestaetigungrequest.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/meldebestaetigung/meldebestaetigungresponse.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/militaerbehoerden/blaetternrequest.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/militaerbehoerden/wehrpflichtigeAbfragenRequst.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/natuerlicheperson.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personaendern/personaendernrequest1.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personaendern/personaendernrequest2.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personaendern/personaendernresponse1.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personaendern/personaendernresponse2.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personanlegen/personanlegenrequest.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personanlegen/personanlegenresponse.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personenabfrage/blaetternrequest.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personenabfrage/blaetternresponse.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personenabfrage/personenabfragedruckrequest.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personenabfrage/personenabfragedruckresponse.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personenabfrage/personenabfragerequest.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personenabfrage/personenabfrageresponse.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personensuche/blaetternrequest.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personensuche/blaetternresponse.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personensuche/personensucherequest.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personensuche/personensucheresponse.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/persontrennen/persontrennenrequest.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/persontrennen/persontrennensucherequest.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personzusammenfuehren/personzusammenfuehrenrequest.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personzusammenfuehren/personzusammenfuehrensucherequest.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/wohnsitzabmelden/wohnsitzabmeldenrequest.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/wohnsitzabmelden/wohnsitzabmeldenresponse.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/wohnsitzanmelden/wohnsitzanmeldenrequest.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/wohnsitzanmelden/wohnsitzanmeldenresponse.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/wohnsitzummelden/wohnsitzummeldenrequest.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/wohnsitzummelden/wohnsitzummeldenresponse.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/zuzugsbestaetigung/zuzugsbestaetigungrequest.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/zuzugsbestaetigung/zuzugsbestaetigungresponse.xml create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/wsdl/Messages.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/wsdl/Service.wsdl create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/wsdl/secext.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/wsdl/secext_pvp.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/allgemein/Auswertungen.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/allgemein/BasTabelleAbfrage.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/allgemein/Benutzereinstellungen.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/allgemein/GeschaeftsprozesseAuflisten.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/allgemein/Messages.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/allgemein/Organisationseinstellungen.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/allgemein/Service.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/AbfrageMuster.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/AkademischerGradFelder.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/Blaettern.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/DokumentFelder.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/EingebundenProxy.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/Entity.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/InfoFachlich.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/InfoTechnisch.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/MeldungFelder.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/PersonDataZMR.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/PersonExport.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/PersonFelder.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/Protokollierung.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/SimpleTypes.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/W3C-XMLDSig.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/Workflow.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/gis-schnittstelle.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/pvp1.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/secext.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/soapenv.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/AblaufendeAuskunftssperrenSuche.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Adoption.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Adresssuche.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Anwendungsintegration.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/AnwendungsintegrationWiederholung.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/AuskunftssperreAendern.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/AvisoAendern.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/AvisoAnlegen.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/AvisoFreigeben.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Avisosuche.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/BKMeldeauskunft.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/BPKPruefung.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Behoerdenabfrage.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/BehoerdenattributeAendern.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Bestandsaenderungen.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/BusinesspartnerAnfrage.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Businesspartnerabfrage.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/BusinesspartnerabfrageErweitert.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Datenabgleich.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/ErnpAbfrage.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Fremdenabfrage.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/GISAdressabfrage.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/GISSuche.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Gemeindeeinstellungen.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Gerichtskommissaerabfrage.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/GleichsetzungstabelleWarten.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Hauseigentuemerabfrage.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/IAPPersonenabfrage.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Meldeauskunft.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Meldebestaetigung.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/MeldebestaetigungenAnfordern.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/MeldungHistKorrigieren.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/ORFGISAnforderung.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/ObjektsucheMindestsicherung.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/ObjektsucheSteuerfahndung.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/PersonAendern.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/PersonAnlegen.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/PersonExport.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/PersonKorrigieren.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/PersonTrennen.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/PersonZusammenfuehren.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/PersonenIndex.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Personenabfrage.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Personenlisten.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Personensuche.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/QKZAuswertung.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/QKZBearbeiten.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/SZREinzelabfrage.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/SZRPersonenbindung.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/SZRPersonensuche.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/SZRSammelabfrage.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Sperrliste.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Storno.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/SzrAbfrage.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/TechnischeAnsicht.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Ummeldeserviceabfrage.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/WehrpflichtigeAbfragen.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/WohnsitzAbmelden.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/WohnsitzAnmelden.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/WohnsitzKorrigieren.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/WohnsitzUmmelden.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/ZMRDatenauszug.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/ZMRProxy.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/ZmrBuergerService.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Zuzugsbestaetigung.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/AkademischerGrad.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Auskunftssperre.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Aviso.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Behoerdenattribute.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/ERnPAnschrift.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/ERnPPerson.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/EidasIdentitaet.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/EidasIdentitaet.xsd.svntmp create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Meldung.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Person.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Qualifikationskennzeichen.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Reisedokument.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Staatsangehoerigkeit.xsd create mode 100644 eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Standarddokument.xsd (limited to 'eidas_modules/authmodule-eIDAS-v2') diff --git a/eidas_modules/authmodule-eIDAS-v2/checks/spotbugs-exclude.xml b/eidas_modules/authmodule-eIDAS-v2/checks/spotbugs-exclude.xml index 82306a57..b60fe888 100644 --- a/eidas_modules/authmodule-eIDAS-v2/checks/spotbugs-exclude.xml +++ b/eidas_modules/authmodule-eIDAS-v2/checks/spotbugs-exclude.xml @@ -1,5 +1,12 @@ + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/pom.xml b/eidas_modules/authmodule-eIDAS-v2/pom.xml index 1e5d6864..0477ee23 100644 --- a/eidas_modules/authmodule-eIDAS-v2/pom.xml +++ b/eidas_modules/authmodule-eIDAS-v2/pom.xml @@ -264,7 +264,13 @@ ${project.build.directory}/generated/cxf - ${basedir}/src/main/resources/szr_client/SZR_v4.0.wsdl + ${basedir}/src/main/resources/wsdl/szr_client/SZR_v4.0.wsdl + + -verbose + + + + ${basedir}/src/main/resources/wsdl/zmr_client/wsdl/Service.wsdl -verbose 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 3a267d29..3e20a132 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 @@ -27,6 +27,9 @@ import at.gv.egiz.eaaf.core.api.data.EaafConstants; public class Constants { + //TODO: should we make it configurable? + public static final String MATCHING_INTERNAL_BPK_TARGET = EaafConstants.URN_PREFIX_CDID + "ZP"; + public static final String ERRORCODE_00 = "module.eidasauth.00"; public static final String DATA_REQUESTERID = "req_requesterId"; @@ -91,6 +94,42 @@ public class Constants { public static final String FORWARD_METHOD_POST = "POST"; public static final String FORWARD_METHOD_GET = "GET"; + // 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_ENDPOINT = CONIG_PROPS_EIDAS_ZMRCLIENT + + ".endpoint"; + public static final String CONIG_PROPS_EIDAS_ZMRCLIENT_DEBUG_TRACEMESSAGES = CONIG_PROPS_EIDAS_ZMRCLIENT + + ".debug.logfullmessages"; + public static final String CONIG_PROPS_EIDAS_ZMRCLIENT_TIMEOUT_CONNECTION = CONIG_PROPS_EIDAS_ZMRCLIENT + + ".timeout.connection"; + public static final String CONIG_PROPS_EIDAS_ZMRCLIENT_TIMEOUT_RESPONSE = CONIG_PROPS_EIDAS_ZMRCLIENT + + ".timeout.response"; + public static final String CONIG_PROPS_EIDAS_ZMRCLIENT_SSL_KEYSTORE_PATH = CONIG_PROPS_EIDAS_ZMRCLIENT + + ".ssl.keyStore.path"; + public static final String CONIG_PROPS_EIDAS_ZMRCLIENT_SSL_KEYSTORE_PASSWORD = CONIG_PROPS_EIDAS_ZMRCLIENT + + ".ssl.keyStore.password"; + public static final String CONIG_PROPS_EIDAS_ZMRCLIENT_SSL_KEYSTORE_TYPE = CONIG_PROPS_EIDAS_ZMRCLIENT + + ".ssl.keyStore.type"; + public static final String CONIG_PROPS_EIDAS_ZMRCLIENT_SSL_KEYSTORE_NAME = CONIG_PROPS_EIDAS_ZMRCLIENT + + ".ssl.keyStore.name"; + public static final String CONIG_PROPS_EIDAS_ZMRCLIENT_SSL_KEYS_ALIAS = CONIG_PROPS_EIDAS_ZMRCLIENT + + ".ssl.key.alias"; + public static final String CONIG_PROPS_EIDAS_ZMRCLIENT_SSL_KEY_PASSWORD = CONIG_PROPS_EIDAS_ZMRCLIENT + + ".ssl.key.password"; + public static final String CONIG_PROPS_EIDAS_ZMRCLIENT_SSL_TRUSTSTORE_PATH = CONIG_PROPS_EIDAS_ZMRCLIENT + + ".ssl.trustStore.path"; + public static final String CONIG_PROPS_EIDAS_ZMRCLIENT_SSL_TRUSTSTORE_PASSWORD = CONIG_PROPS_EIDAS_ZMRCLIENT + + ".ssl.trustStore.password"; + public static final String CONIG_PROPS_EIDAS_ZMRCLIENT_SSL_TRUSTSTORE_TYPE = CONIG_PROPS_EIDAS_ZMRCLIENT + + ".ssl.trustStore.type"; + public static final String CONIG_PROPS_EIDAS_ZMRCLIENT_SSL_TRUSTSTORE_NAME = CONIG_PROPS_EIDAS_ZMRCLIENT + + ".ssl.trustStore.name"; + + public static final String CONIG_PROPS_EIDAS_ZMRCLIENT_REQ_ORGANIZATION_NR = CONIG_PROPS_EIDAS_ZMRCLIENT + + ".req.organisation.behoerdennr"; + + + // 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_USETESTSERVICE = CONIG_PROPS_EIDAS_SZRCLIENT + ".useTestService"; @@ -112,11 +151,23 @@ public class Constants { + ".ssl.keyStore.path"; public static final String CONIG_PROPS_EIDAS_SZRCLIENT_SSL_KEYSTORE_PASSWORD = CONIG_PROPS_EIDAS_SZRCLIENT + ".ssl.keyStore.password"; + public static final String CONIG_PROPS_EIDAS_SZRCLIENT_SSL_KEYSTORE_TYPE = CONIG_PROPS_EIDAS_SZRCLIENT + + ".ssl.keyStore.type"; + public static final String CONIG_PROPS_EIDAS_SZRCLIENT_SSL_KEYSTORE_NAME = CONIG_PROPS_EIDAS_SZRCLIENT + + ".ssl.keyStore.name"; + public static final String CONIG_PROPS_EIDAS_SZRCLIENT_SSL_KEYS_ALIAS = CONIG_PROPS_EIDAS_SZRCLIENT + + ".ssl.key.alias"; + public static final String CONIG_PROPS_EIDAS_SZRCLIENT_SSL_KEY_PASSWORD = CONIG_PROPS_EIDAS_SZRCLIENT + + ".ssl.key.password"; public static final String CONIG_PROPS_EIDAS_SZRCLIENT_SSL_TRUSTSTORE_PATH = CONIG_PROPS_EIDAS_SZRCLIENT + ".ssl.trustStore.path"; public static final String CONIG_PROPS_EIDAS_SZRCLIENT_SSL_TRUSTSTORE_PASSWORD = CONIG_PROPS_EIDAS_SZRCLIENT + ".ssl.trustStore.password"; - + public static final String CONIG_PROPS_EIDAS_SZRCLIENT_SSL_TRUSTSTORE_TYPE = CONIG_PROPS_EIDAS_SZRCLIENT + + ".ssl.trustStore.type"; + public static final String CONIG_PROPS_EIDAS_SZRCLIENT_SSL_TRUSTSTORE_NAME = CONIG_PROPS_EIDAS_SZRCLIENT + + ".ssl.trustStore.name"; + public static final String CONIG_PROPS_EIDAS_SZRCLIENT_PARAMS_EDOCUMENTTYPE = CONIG_PROPS_EIDAS_SZRCLIENT + ".params.documenttype"; public static final String CONIG_PROPS_EIDAS_SZRCLIENT_PARAMS_VKZ = CONIG_PROPS_EIDAS_SZRCLIENT @@ -153,7 +204,7 @@ 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 + // 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"; @@ -166,6 +217,15 @@ public class Constants { public static final String eIDAS_ATTR_LEGALPERSONIDENTIFIER = "LegalPersonIdentifier"; public static final String eIDAS_ATTR_LEGALNAME = "LegalName"; + + //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_REQ_PARAM_SECTOR_PUBLIC = "public"; public static final String eIDAS_REQ_PARAM_SECTOR_PRIVATE = "private"; diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/AbstractSoapClient.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/AbstractSoapClient.java new file mode 100644 index 00000000..bfdf3991 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/AbstractSoapClient.java @@ -0,0 +1,197 @@ +package at.asitplus.eidas.specific.modules.auth.eidas.v2.clients; + +import java.security.KeyManagementException; +import java.security.KeyStore; +import java.security.NoSuchAlgorithmException; +import java.security.Provider; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import javax.net.ssl.SSLContext; +import javax.xml.ws.BindingProvider; +import javax.xml.ws.handler.Handler; + +import org.apache.commons.lang3.StringUtils; +import org.apache.cxf.configuration.jsse.TLSClientParameters; +import org.apache.cxf.endpoint.Client; +import org.apache.cxf.frontend.ClientProxy; +import org.apache.cxf.jaxws.DispatchImpl; +import org.apache.cxf.transport.http.HTTPConduit; +import org.apache.cxf.transports.http.configuration.HTTPClientPolicy; +import org.apache.http.ssl.SSLContextBuilder; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.lang.Nullable; + +import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.LoggingHandler; +import at.gv.egiz.eaaf.core.api.idp.IConfiguration; +import at.gv.egiz.eaaf.core.exceptions.EaafConfigurationException; +import at.gv.egiz.eaaf.core.exceptions.EaafException; +import at.gv.egiz.eaaf.core.impl.credential.EaafKeyStoreFactory; +import at.gv.egiz.eaaf.core.impl.credential.KeyStoreConfiguration; +import at.gv.egiz.eaaf.core.impl.credential.KeyStoreConfiguration.KeyStoreType; +import at.gv.egiz.eaaf.core.impl.data.Pair; +import at.gv.egiz.eaaf.core.impl.http.HttpUtils; +import lombok.Builder; +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class AbstractSoapClient { + + @Autowired + protected IConfiguration basicConfig; + @Autowired + EaafKeyStoreFactory keyStoreFactory; + + @Builder + @Getter + public static class HttpClientConfig { + + private final String clientName; + + private final String clientUrl; + private final String clientType; + + private final String connectionTimeout; + private final String responseTimeout; + + private final KeyStoreConfiguration keyStoreConfig; + private final String keyAlias; + private final String keyPassword; + + private final KeyStoreConfiguration trustStoreConfig; + + @Builder.Default + private final boolean trustAll = false; + + } + + /** + * Build a validated KeyStore Configuration-Object from configuration keys. + * + * @param keyStoreTypeKey Configuration key for type + * @param keyStorePathKey Configuration key for path + * @param keyStorePasswordKey Configuration key for password + * @param keyStoreNameKey Configuration key for name + * @param friendlyName Friendlyname for logging and errorhandling + * @return Valid KeyStore configuration or null if no type was + * defined + * @throws EaafConfigurationException In case of validation error + */ + @Nullable + protected KeyStoreConfiguration buildKeyStoreConfiguration(String keyStoreTypeKey, String keyStorePathKey, + String keyStorePasswordKey, String keyStoreNameKey, String friendlyName) + throws EaafConfigurationException { + if (StringUtils.isNotEmpty(basicConfig.getBasicConfiguration(keyStoreTypeKey))) { + final KeyStoreConfiguration config = new KeyStoreConfiguration(); + config.setFriendlyName(friendlyName); + config.setKeyStoreType(basicConfig.getBasicConfiguration(keyStoreTypeKey, KeyStoreType.PKCS12.name())); + config.setKeyStoreName(basicConfig.getBasicConfiguration(keyStoreNameKey)); + config.setSoftKeyStoreFilePath(basicConfig.getBasicConfiguration(keyStorePathKey)); + config.setSoftKeyStorePassword(basicConfig.getBasicConfiguration(keyStorePasswordKey)); + + // validate keystore configuration + config.validate(); + + return config; + + } else { + return null; + + } + + } + + protected void injectHttpClient(Object raw, HttpClientConfig config) { + // extract client from implementation + Client client; + if (raw instanceof DispatchImpl) { + client = ((DispatchImpl) raw).getClient(); + } else if (raw instanceof Client) { + client = ClientProxy.getClient(raw); + } else { + throw new RuntimeException("SOAP Client for SZR connection is of UNSUPPORTED type: " + raw.getClass() + .getName()); + } + + // set basic connection policies + final HTTPConduit http = (HTTPConduit) client.getConduit(); + + // set timeout policy + final HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy(); + httpClientPolicy.setConnectionTimeout(Integer.parseInt(config.getConnectionTimeout()) * 1000L); + httpClientPolicy.setReceiveTimeout(Integer.parseInt(config.getResponseTimeout()) * 1000L); + http.setClient(httpClientPolicy); + + // inject SSL context in case of https + if (config.getClientUrl().toLowerCase().startsWith("https")) { + try { + log.debug("Adding SSLContext to client: " + config.getClientType() + " ... "); + + final TLSClientParameters tlsParams = new TLSClientParameters(); + if (config.getKeyStoreConfig() != null) { + final SSLContext sslContext = HttpUtils.buildSslContextWithSslClientAuthentication( + keyStoreFactory.buildNewKeyStore(config.getKeyStoreConfig()), + config.getKeyAlias(), + config.getKeyPassword(), + loadTrustStore(config.getTrustStoreConfig(), config.getClientName()), + config.isTrustAll(), + config.getClientName()); + tlsParams.setSSLSocketFactory(sslContext.getSocketFactory()); + + } else { + log.debug( + "No KeyStore for SSL Client Auth. found. Initializing SSLContext for: {} without authentication ... ", + config.getClientName()); + tlsParams.setSSLSocketFactory(SSLContextBuilder.create().build().getSocketFactory()); + + } + + http.setTlsClientParameters(tlsParams); + log.info("SSLContext initialized for client: " + config.getClientType()); + + } catch (EaafException | KeyManagementException | NoSuchAlgorithmException e) { + log.error("SSLContext initialization FAILED.", e); + throw new RuntimeException("SSLContext initialization FAILED.", e); + + } + } + } + + private Pair loadTrustStore(KeyStoreConfiguration trustStoreConfig, String friendlyName) + throws EaafException { + if (trustStoreConfig != null) { + log.info("Build custom SSL truststore for: {}", friendlyName); + return keyStoreFactory.buildNewKeyStore(trustStoreConfig); + + } else { + log.info("Use default SSL truststore for: {}", friendlyName); + return null; + + } + + } + + protected void injectBindingProvider(BindingProvider bindingProvider, String clientType, String szrUrl, + boolean enableTraceLogging) { + final Map requestContext = bindingProvider.getRequestContext(); + requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, szrUrl); + + log.trace("Adding JAX-WS request/response trace handler to client: " + clientType); + List handlerList = bindingProvider.getBinding().getHandlerChain(); + if (handlerList == null) { + handlerList = new ArrayList<>(); + bindingProvider.getBinding().setHandlerChain(handlerList); + + } + + // add logging handler to trace messages if required + if (enableTraceLogging) { + final LoggingHandler loggingHandler = new LoggingHandler(); + handlerList.add(loggingHandler); + + } + bindingProvider.getBinding().setHandlerChain(handlerList); + } +} diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/szr/SzrClient.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/szr/SzrClient.java new file mode 100644 index 00000000..2230f30a --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/szr/SzrClient.java @@ -0,0 +1,469 @@ +/* + * Copyright 2018 A-SIT Plus GmbH + * AT-specific eIDAS Connector has been developed in a cooperation between EGIZ, + * A-SIT Plus GmbH, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "License"); + * You may not use this work except in compliance with the License. + * You may obtain a copy of the License at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + */ + +package at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.szr; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.annotation.PostConstruct; +import javax.xml.XMLConstants; +import javax.xml.bind.JAXBContext; +import javax.xml.bind.Marshaller; +import javax.xml.namespace.QName; +import javax.xml.transform.Source; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.stream.StreamResult; +import javax.xml.transform.stream.StreamSource; +import javax.xml.ws.BindingProvider; +import javax.xml.ws.Dispatch; + +import org.apache.commons.lang3.StringUtils; +import org.apache.xpath.XPathAPI; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.AbstractSoapClient; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.AbstractSoapClient.HttpClientConfig.HttpClientConfigBuilder; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.SzrCommunicationException; +import at.gv.e_government.reference.namespace.persondata._20020228.AlternativeNameType; +import at.gv.e_government.reference.namespace.persondata._20020228.PersonNameType; +import at.gv.e_government.reference.namespace.persondata._20020228.PhysicalPersonType; +import at.gv.egiz.eaaf.core.api.data.PvpAttributeDefinitions; +import at.gv.egiz.eaaf.core.api.data.XmlNamespaceConstants; +import at.gv.egiz.eaaf.core.exceptions.EaafConfigurationException; +import at.gv.egiz.eaaf.core.impl.utils.DomUtils; +import szrservices.GetBPK; +import szrservices.GetBPKResponse; +import szrservices.GetIdentityLinkEidas; +import szrservices.GetIdentityLinkEidasResponse; +import szrservices.IdentityLinkType; +import szrservices.JwsHeaderParam; +import szrservices.ObjectFactory; +import szrservices.PersonInfoType; +import szrservices.SZR; +import szrservices.SZRException_Exception; +import szrservices.SignContent; +import szrservices.SignContentEntry; +import szrservices.SignContentResponseType; +import szrservices.TravelDocumentType; + + +@Service("SZRClientForeIDAS") +public class SzrClient extends AbstractSoapClient { + private static final Logger log = LoggerFactory.getLogger(SzrClient.class); + + private static final String CLIENT_DEFAULT = "DefaultClient"; + private static final String CLIENT_RAW = "RawClient"; + + private static final String ATTR_NAME_VSZ = "urn:eidgvat:attributes.vsz.value"; + private static final String ATTR_NAME_PUBKEYS = "urn:eidgvat:attributes.user.pubkeys"; + private static final String ATTR_NAME_STATUS = "urn:eidgvat:attributes.eid.status"; + private static final String KEY_BC_BIND = "bcBindReq"; + private static final String JOSE_HEADER_USERCERTPINNING_TYPE = "urn:at.gv.eid:bindtype"; + private static final String JOSE_HEADER_USERCERTPINNING_EIDASBIND = "urn:at.gv.eid:eidasBind"; + public static final String ATTR_NAME_MDS = "urn:eidgvat:mds"; + + // client for anything, without identitylink + private SZR szr = null; + + // RAW client is needed for identitylink + private Dispatch dispatch = null; + + final ObjectMapper mapper = new ObjectMapper(); + + /** + * Get IdentityLink of a person. + * + * + * @param eidData minimum dataset of person + * @return IdentityLink + * @throws SzrCommunicationException In case of a SZR error + */ + public IdentityLinkType getIdentityLinkInRawMode(SimpleEidasData eidData) + throws SzrCommunicationException { + try { + final GetIdentityLinkEidas getIdl = new GetIdentityLinkEidas(); + getIdl.setPersonInfo(generateSzrRequest(eidData)); + + final JAXBContext jaxbContext = JAXBContext.newInstance(ObjectFactory.class); + final Marshaller jaxbMarshaller = jaxbContext.createMarshaller(); + + final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + jaxbMarshaller.marshal(getIdl, outputStream); + outputStream.flush(); + + final Source source = new StreamSource(new ByteArrayInputStream(outputStream.toByteArray())); + outputStream.close(); + + log.trace("Requesting SZR ... "); + final Source response = dispatch.invoke(source); + log.trace("Receive RAW response from SZR"); + + final byte[] szrResponse = sourceToByteArray(response); + final GetIdentityLinkEidasResponse jaxbElement = (GetIdentityLinkEidasResponse) jaxbContext + .createUnmarshaller().unmarshal(new ByteArrayInputStream(szrResponse)); + + // build response + log.trace(new String(szrResponse, StandardCharsets.UTF_8)); + + // ok, we have success + final Document doc = DomUtils.parseDocument( + new ByteArrayInputStream(szrResponse), + true, + XmlNamespaceConstants.ALL_SCHEMA_LOCATIONS + " " + Constants.SZR_SCHEMA_LOCATIONS, + null, null); + final String xpathExpression = "//saml:Assertion"; + final Element nsNode = doc.createElementNS("urn:oasis:names:tc:SAML:1.0:assertion", "saml:NSNode"); + + log.trace("Selecting signed doc " + xpathExpression); + final Element documentNode = (Element) XPathAPI.selectSingleNode(doc, + xpathExpression, nsNode); + log.trace("Signed document: " + DomUtils.serializeNode(documentNode)); + + final IdentityLinkType idl = new IdentityLinkType(); + idl.setAssertion(documentNode); + idl.setPersonInfo(jaxbElement.getGetIdentityLinkReturn().getPersonInfo()); + + return idl; + + } catch (final Exception e) { + log.warn("SZR communication FAILED. Reason: " + e.getMessage(), e); + throw new SzrCommunicationException("ernb.02", new Object[]{e.getMessage()}, e); + + } + + } + + /** + * Get bPK of person. + * + * + * @param eidData Minimum dataset of person + * @param target requested bPK target + * @param vkz Verfahrenskennzeichen + * @return bPK for this person + * @throws SzrCommunicationException In case of a SZR error + */ + public List getBpk(SimpleEidasData eidData, String target, String vkz) + throws SzrCommunicationException { + try { + final GetBPK parameters = new GetBPK(); + parameters.setPersonInfo(generateSzrRequest(eidData)); + parameters.getBereichsKennung().add(target); + parameters.setVKZ(vkz); + final GetBPKResponse result = this.szr.getBPK(parameters); + + return result.getGetBPKReturn(); + + } catch (final SZRException_Exception e) { + log.warn("SZR communication FAILED. Reason: " + e.getMessage(), e); + throw new SzrCommunicationException("ernb.02", new Object[]{e.getMessage()}, e); + + } + + } + + /** + * Creates a new ERnP entry. + * TODO Is this correct? Ask BMI. + * + * @param eidasData Minimum dataset of person + * @return encrypted baseId + * @throws SzrCommunicationException In case of a SZR error + */ + public String createNewErnpEntry(final SimpleEidasData eidasData) throws SzrCommunicationException { + final String resp; + try { + resp = this.szr.getStammzahlEncrypted(generateSzrRequest(eidasData), true); + } catch (SZRException_Exception e) { + throw new SzrCommunicationException("ernb.02", new Object[]{e.getMessage()}, e); + } + if (StringUtils.isEmpty(resp)) { + throw new SzrCommunicationException("ernb.01", new Object[]{"Stammzahl response empty"}); // TODO error handling + } + return resp; + } + + /** + * Request a encrypted baseId from SZR. + * + * Note: Previously, this method did create a new ERnP entry, if it did not exist. This is + * not the case any more. See {@link #createNewErnpEntry(SimpleEidasData)} for that functionality. + * + * @param eidData Minimum dataset of person + * @return encrypted baseId + * @throws SzrCommunicationException In case of a SZR error + */ + public String getEncryptedStammzahl(final SimpleEidasData eidData) + throws SzrCommunicationException { + final String resp; + try { + resp = this.szr.getStammzahlEncrypted(generateSzrRequest(eidData), false); + } catch (SZRException_Exception e) { + throw new SzrCommunicationException("ernb.02", new Object[]{e.getMessage()}, e); + } + + if (StringUtils.isEmpty(resp)) { + throw new SzrCommunicationException("ernb.01", new Object[]{"Stammzahl response empty"}); // TODO error handling + } + + return resp; + + } + + /** + * Sign an eidasBind data-structure that combines vsz with user's pubKey and E-ID status. + * + * @param vsz encrypted baseId + * @param bindingPubKey binding PublicKey as PKCS1# (ASN.1) container + * @param eidStatus Status of the E-ID + * @param eidData eID information that was used for ERnP registration + * @return bPK for this person + * @throws SzrCommunicationException In case of a SZR error + */ + public String getEidasBind(final String vsz, final String bindingPubKey, final String eidStatus, + SimpleEidasData eidData)throws SzrCommunicationException { + + final Map eidsaBindMap = new HashMap<>(); + eidsaBindMap.put(ATTR_NAME_VSZ, vsz); + eidsaBindMap.put(ATTR_NAME_STATUS, eidStatus); + eidsaBindMap.put(ATTR_NAME_PUBKEYS, Collections.singletonList(bindingPubKey)); + eidsaBindMap.put(PvpAttributeDefinitions.EID_ISSUING_NATION_NAME, eidData.getCitizenCountryCode()); + injectMdsIfAvailableAndActive(eidsaBindMap, eidData); + + try { + final String serializedEidasBind = mapper.writeValueAsString(eidsaBindMap); + final SignContent req = new SignContent(); + final SignContentEntry eidasBindInfo = new SignContentEntry(); + eidasBindInfo.setKey(KEY_BC_BIND); + eidasBindInfo.setValue(serializedEidasBind); + req.getIn().add(eidasBindInfo); + req.setAppendCert(false); + final JwsHeaderParam eidasBindJoseHeader = new JwsHeaderParam(); + eidasBindJoseHeader.setKey(JOSE_HEADER_USERCERTPINNING_TYPE); + eidasBindJoseHeader.setValue(JOSE_HEADER_USERCERTPINNING_EIDASBIND); + req.getJWSHeaderParam().add(eidasBindJoseHeader); + + log.trace("Requesting SZR to sign bcBind datastructure ... "); + final SignContentResponseType resp = szr.signContent(req.isAppendCert(), req.getJWSHeaderParam(), req.getIn()); + log.trace("Receive SZR response on bcBind siging operation "); + + if (resp == null || resp.getOut() == null + || resp.getOut().isEmpty() + || StringUtils.isEmpty(resp.getOut().get(0).getValue())) { + throw new SzrCommunicationException("ernb.01", new Object[]{"BcBind response empty"}); + } + + return resp.getOut().get(0).getValue(); + + } catch (final JsonProcessingException | SZRException_Exception e) { + log.warn("Requesting bcBind by using SZR FAILED.", e); + throw new SzrCommunicationException("ernb.02", + new Object[]{e.getMessage()}, e); + } + } + + private PersonInfoType generateSzrRequest(SimpleEidasData eidData) { + log.debug("Starting connecting SZR Gateway"); + final PersonInfoType personInfo = new PersonInfoType(); + final PersonNameType personName = new PersonNameType(); + final PhysicalPersonType naturalPerson = new PhysicalPersonType(); + final TravelDocumentType eDocument = new TravelDocumentType(); + + naturalPerson.setName(personName); + personInfo.setPerson(naturalPerson); + personInfo.setTravelDocument(eDocument); + + // person information + personName.setFamilyName(eidData.getFamilyName()); + personName.setGivenName(eidData.getGivenName()); + naturalPerson.setDateOfBirth(eidData.getDateOfBirth()); + eDocument.setIssuingCountry(eidData.getCitizenCountryCode()); + eDocument.setDocumentNumber(eidData.getPseudonym()); + + // eID document information + String documentType = basicConfig + .getBasicConfiguration(Constants.CONIG_PROPS_EIDAS_SZRCLIENT_PARAMS_EDOCUMENTTYPE, + Constants.SZR_CONSTANTS_DEFAULT_DOCUMENT_TYPE); + eDocument.setDocumentType(documentType); + + // set PlaceOfBirth if available + if (eidData.getPlaceOfBirth() != null) { + log.trace("Find 'PlaceOfBirth' attribute: " + eidData.getPlaceOfBirth()); + boolean setPlaceOfBirth = basicConfig + .getBasicConfigurationBoolean(Constants.CONIG_PROPS_EIDAS_SZRCLIENT_PARAMS_SETPLACEOFBIRTHIFAVAILABLE, true); + if (setPlaceOfBirth) { + naturalPerson.setPlaceOfBirth(eidData.getPlaceOfBirth()); + log.trace("Adding 'PlaceOfBirth' to ERnB request ... "); + } + } + + // set BirthName if available + if (eidData.getBirthName() != null) { + log.trace("Find 'BirthName' attribute: " + eidData.getBirthName()); + boolean setBirthName = basicConfig + .getBasicConfigurationBoolean(Constants.CONIG_PROPS_EIDAS_SZRCLIENT_PARAMS_SETBIRTHNAMEIFAVAILABLE, true); + if (setBirthName) { + final AlternativeNameType alternativeName = new AlternativeNameType(); + naturalPerson.setAlternativeName(alternativeName); + alternativeName.setFamilyName(eidData.getBirthName()); + log.trace("Adding 'BirthName' to ERnB request ... "); + } + } + + return personInfo; + } + + @PostConstruct + private void initialize() throws EaafConfigurationException { + log.info("Starting SZR-Client initialization .... "); + final URL url = SzrClient.class.getResource("/wsdl/szr_client/SZR_v4.0.wsdl"); + + final boolean useTestSzr = basicConfig.getBasicConfigurationBoolean( + Constants.CONIG_PROPS_EIDAS_SZRCLIENT_USETESTSERVICE, + true); + + SzrService szrService; + QName qname; + String szrUrl; + if (useTestSzr) { + log.debug("Initializing SZR test environment configuration."); + qname = SzrService.SZRTestumgebung; + szrService = new SzrService(url, new QName("urn:SZRServices", "SZRService")); + szr = szrService.getSzrTestumgebung(); + szrUrl = basicConfig.getBasicConfiguration(Constants.CONIG_PROPS_EIDAS_SZRCLIENT_ENDPOINT_TEST); + + } else { + log.debug("Initializing SZR productive configuration."); + qname = SzrService.SZRProduktionsumgebung; + szrService = new SzrService(url, new QName("urn:SZRServices", "SZRService")); + szr = szrService.getSzrProduktionsumgebung(); + szrUrl = basicConfig.getBasicConfiguration(Constants.CONIG_PROPS_EIDAS_SZRCLIENT_ENDPOINT_PROD); + + } + + // create raw client; + dispatch = szrService.createDispatch(qname, Source.class, javax.xml.ws.Service.Mode.PAYLOAD); + + if (StringUtils.isEmpty(szrUrl)) { + log.error("No SZR service-URL found. SZR-Client initalisiation failed."); + throw new RuntimeException("No SZR service URL found. SZR-Client initalisiation failed."); + + } + + // check if Clients can be initialized + if (szr == null) { + log.error("SZR " + CLIENT_DEFAULT + " is 'NULL'. Something goes wrong"); + throw new RuntimeException("SZR " + CLIENT_DEFAULT + " is 'NULL'. Something goes wrong"); + + } + if (dispatch == null) { + log.error("SZR " + CLIENT_RAW + " is 'NULL'. Something goes wrong"); + throw new RuntimeException("SZR " + CLIENT_RAW + " is 'NULL'. Something goes wrong"); + + } + + // inject handler + log.info("Use SZR service-URL: " + szrUrl); + injectBindingProvider((BindingProvider) szr, CLIENT_DEFAULT, szrUrl, + basicConfig.getBasicConfigurationBoolean(Constants.CONIG_PROPS_EIDAS_SZRCLIENT_DEBUG_TRACEMESSAGES, false)); + injectBindingProvider(dispatch, CLIENT_RAW, szrUrl, + basicConfig.getBasicConfigurationBoolean(Constants.CONIG_PROPS_EIDAS_SZRCLIENT_DEBUG_TRACEMESSAGES, false)); + + // inject http parameters and SSL context + log.debug("Inject HTTP client settings ... "); + HttpClientConfigBuilder httpClientBuilder = HttpClientConfig.builder() + .clientName("SZR Client") + .clientUrl(szrUrl) + .connectionTimeout(basicConfig.getBasicConfiguration( + Constants.CONIG_PROPS_EIDAS_SZRCLIENT_TIMEOUT_CONNECTION, + Constants.HTTP_CLIENT_DEFAULT_TIMEOUT_CONNECTION)) + .responseTimeout(basicConfig.getBasicConfiguration( + Constants.CONIG_PROPS_EIDAS_SZRCLIENT_TIMEOUT_RESPONSE, + Constants.HTTP_CLIENT_DEFAULT_TIMEOUT_RESPONSE)) + .keyStoreConfig(buildKeyStoreConfiguration( + Constants.CONIG_PROPS_EIDAS_SZRCLIENT_SSL_KEYSTORE_TYPE, + Constants.CONIG_PROPS_EIDAS_SZRCLIENT_SSL_KEYSTORE_PATH, + Constants.CONIG_PROPS_EIDAS_SZRCLIENT_SSL_KEYSTORE_PASSWORD, + Constants.CONIG_PROPS_EIDAS_SZRCLIENT_SSL_KEYSTORE_NAME, + "SZR SSL Client-Authentication KeyStore")) + .keyAlias(basicConfig.getBasicConfiguration(Constants.CONIG_PROPS_EIDAS_SZRCLIENT_SSL_KEYS_ALIAS)) + .keyPassword(basicConfig.getBasicConfiguration(Constants.CONIG_PROPS_EIDAS_SZRCLIENT_SSL_KEY_PASSWORD)) + .trustAll(false) + .trustStoreConfig(buildKeyStoreConfiguration( + Constants.CONIG_PROPS_EIDAS_SZRCLIENT_SSL_TRUSTSTORE_TYPE, + Constants.CONIG_PROPS_EIDAS_SZRCLIENT_SSL_TRUSTSTORE_PATH, + Constants.CONIG_PROPS_EIDAS_SZRCLIENT_SSL_TRUSTSTORE_PASSWORD, + Constants.CONIG_PROPS_EIDAS_SZRCLIENT_SSL_TRUSTSTORE_NAME, + "SZR SSL Client-Authentication KeyStore")); + + injectHttpClient(szr, httpClientBuilder.clientType(CLIENT_DEFAULT).build()); + injectHttpClient(dispatch, httpClientBuilder.clientType(CLIENT_RAW).build()); + + log.info("SZR-Client initialization successfull"); + } + + private void injectMdsIfAvailableAndActive(Map eidsaBindMap, SimpleEidasData eidData) { + if (basicConfig.getBasicConfigurationBoolean( + Constants.CONIG_PROPS_EIDAS_SZRCLIENT_SET_MDS_TO_EIDASBIND, false)) { + log.info("Injecting MDS into eidasBind ... "); + final Map mds = new HashMap<>(); + mds.put(PvpAttributeDefinitions.PRINCIPAL_NAME_NAME, eidData.getFamilyName()); + mds.put(PvpAttributeDefinitions.GIVEN_NAME_NAME, eidData.getGivenName()); + mds.put(PvpAttributeDefinitions.BIRTHDATE_NAME, eidData.getDateOfBirth()); + eidsaBindMap.put(ATTR_NAME_MDS, mds); + + } + } + + private byte[] sourceToByteArray(Source result) throws TransformerException { + final TransformerFactory factory = TransformerFactory.newInstance(); + factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); + final Transformer transformer = factory.newTransformer(); + transformer.setOutputProperty("omit-xml-declaration", "yes"); + transformer.setOutputProperty("method", "xml"); + final ByteArrayOutputStream out = new ByteArrayOutputStream(); + final StreamResult streamResult = new StreamResult(); + streamResult.setOutputStream(out); + transformer.transform(result, streamResult); + return out.toByteArray(); + } + +} diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/szr/SzrService.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/szr/SzrService.java new file mode 100644 index 00000000..590f88a4 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/szr/SzrService.java @@ -0,0 +1,164 @@ +/* + * Copyright 2018 A-SIT Plus GmbH + * AT-specific eIDAS Connector has been developed in a cooperation between EGIZ, + * A-SIT Plus GmbH, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "License"); + * You may not use this work except in compliance with the License. + * You may obtain a copy of the License at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. +*/ + +package at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.szr; + +import java.net.URL; + +import javax.xml.namespace.QName; +import javax.xml.ws.Service; +import javax.xml.ws.WebEndpoint; +import javax.xml.ws.WebServiceClient; +import javax.xml.ws.WebServiceFeature; + +import szrservices.SZR; + +/** + * This class was generated by Apache CXF 3.1.16 2018-07-10T09:36:01.466+02:00 + * Generated source version: 3.1.16 + * + */ +@WebServiceClient(name = "SZRService", + wsdlLocation = "./src/main/resources/szr_client/SZR-1.WSDL", + targetNamespace = "urn:SZRServices") +public class SzrService extends Service { + + public static final URL WSDL_LOCATION; + + public static final QName SERVICE = new QName("urn:SZRServices", "SZRService"); + public static final QName SZRProduktionsumgebung = new QName("urn:SZRServices", "SZRProduktionsumgebung"); + public static final QName SZRTestumgebung = new QName("urn:SZRServices", "SZRTestumgebung"); + public static final QName SZRBusinesspartnerTestumgebung = new QName("urn:SZRServices", + "SZRBusinesspartnerTestumgebung"); + + static { + URL url = SzrService.class.getResource("./src/main/resources/wsdl/szr_client/SZR-1.WSDL"); + if (url == null) { + url = SzrService.class.getClassLoader().getResource("/szr_client/SZR-1.WSDL"); + } + if (url == null) { + java.util.logging.Logger.getLogger(SzrService.class.getName()) + .log(java.util.logging.Level.INFO, + "Can not initialize the default wsdl from {0}", "/szr_client/SZR-1.WSDL"); + } + WSDL_LOCATION = url; + + } + + public SzrService(URL wsdlLocation) { + super(wsdlLocation, SERVICE); + } + + public SzrService(URL wsdlLocation, QName serviceName) { + super(wsdlLocation, serviceName); + } + + public SzrService() { + super(WSDL_LOCATION, SERVICE); + } + + public SzrService(WebServiceFeature... features) { + super(WSDL_LOCATION, SERVICE, features); + } + + public SzrService(URL wsdlLocation, WebServiceFeature... features) { + super(wsdlLocation, SERVICE, features); + } + + public SzrService(URL wsdlLocation, QName serviceName, WebServiceFeature... features) { + super(wsdlLocation, serviceName, features); + } + + /** + * Get SZR Web-Service. + * + * @return returns SZR + */ + @WebEndpoint(name = "SZRProduktionsumgebung") + public SZR getSzrProduktionsumgebung() { + return super.getPort(SZRProduktionsumgebung, SZR.class); + } + + /** + * Get SZR Web-Service. + * + * @param features A list of {@link javax.xml.ws.WebServiceFeature} to configure + * on the proxy. Supported features not in the + * features parameter will have their default + * values. + * @return returns SZR + */ + @WebEndpoint(name = "SZRProduktionsumgebung") + public SZR getSzrProduktionsumgebung(WebServiceFeature... features) { + return super.getPort(SZRProduktionsumgebung, SZR.class, features); + } + + /** + *Get SZR Web-Service. + * + * @return returns SZR + */ + @WebEndpoint(name = "SZRTestumgebung") + public SZR getSzrTestumgebung() { + return super.getPort(SZRTestumgebung, SZR.class); + } + + /** + * Get SZR Web-Service. + * + * @param features A list of {@link javax.xml.ws.WebServiceFeature} to configure + * on the proxy. Supported features not in the + * features parameter will have their default + * values. + * @return returns SZR + */ + @WebEndpoint(name = "SZRTestumgebung") + public SZR getSzrTestumgebung(WebServiceFeature... features) { + return super.getPort(SZRTestumgebung, SZR.class, features); + } + + /** + * Get SZR Web-Service. + * + * @return returns SZR + */ + @WebEndpoint(name = "SZRBusinesspartnerTestumgebung") + public SZR getSzrBusinesspartnerTestumgebung() { + return super.getPort(SZRBusinesspartnerTestumgebung, SZR.class); + } + + /** + * Get SZR Web-Service. + * + * @param features A list of {@link javax.xml.ws.WebServiceFeature} to configure + * on the proxy. Supported features not in the + * features parameter will have their default + * values. + * @return returns SZR + */ + @WebEndpoint(name = "SZRBusinesspartnerTestumgebung") + public SZR getSzrBusinesspartnerTestumgebung(WebServiceFeature... features) { + return super.getPort(SZRBusinesspartnerTestumgebung, SZR.class, features); + } + +} diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/zmr/IZmrClient.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/zmr/IZmrClient.java new file mode 100644 index 00000000..18bcbacc --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/zmr/IZmrClient.java @@ -0,0 +1,89 @@ +/* + * Copyright 2020 A-SIT Plus GmbH + * AT-specific eIDAS Connector has been developed in a cooperation between EGIZ, + * A-SIT Plus GmbH, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "License"); + * You may not use this work except in compliance with the License. + * You may obtain a copy of the License at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + */ + +package at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.zmr; + +import java.math.BigInteger; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.zmr.ZmrSoapClient.ZmrRegisterResult; +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.gv.bmi.namespace.zmr_su.zmr._20040201.PersonSuchenRequest; + +public interface IZmrClient { + + /** + * Search person based on eIDAS personal identifier. + * + * @param zmrProzessId ProcessId from ZMR or null if no processId exists + * @param personIdentifier Full eIDAS personal identifier with prefix + * @return Search result but never null + * @throws EidasSAuthenticationException In case of a communication error + */ + @Nonnull + ZmrRegisterResult searchWithPersonIdentifier(@Nullable BigInteger zmrProzessId, @Nonnull String personIdentifier) + throws EidasSAuthenticationException; + + /** + * Search person based on eIDSA MDS information. + * + * @param zmrProzessId ProcessId from ZMR or null if no processId exists + * @param givenName eIDAS given name + * @param familyName eIDAS principle name + * @param dateOfBirth eIDAS date-of-birth + * @param citizenCountryCode CountryCode of the eIDAS proxy-service + * @return Search result but never null + * @throws EidasSAuthenticationException In case of a communication error + */ + @Nonnull + ZmrRegisterResult searchWithMds(@Nullable BigInteger zmrProzessId, @Nonnull String givenName, + @Nonnull String familyName, @Nonnull String dateOfBirth, @Nonnull String citizenCountryCode) + throws EidasSAuthenticationException; + + /** + * Search person based on country-specific natural person set. + * + * @param zmrProzessId ProcessId from ZMR or null if no processId exists + * @param personSearchDao Specific set of natural person informations. + * @param citizenCountryCode CountryCode of the eIDAS proxy-service + * @return Search result but never null + * @throws EidasSAuthenticationException In case of a communication error + */ + @Nonnull + ZmrRegisterResult searchCountrySpecific(@Nullable BigInteger zmrProzessId, + @Nonnull PersonSuchenRequest personSearchDao, @Nonnull String citizenCountryCode) + throws EidasSAuthenticationException; + + + void update(@Nullable BigInteger zmrProzessId, RegisterResult registerResult, SimpleEidasData eidData); + + ZmrRegisterResult searchWithBpkZp(@Nullable BigInteger zmrProzessId, String bpkzp); + + ZmrRegisterResult searchWithResidenceData(@Nullable BigInteger zmrProzessId, String givenName, String familyName, + String dateOfBirth, String zipcode, String city, String street); + +} 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 new file mode 100644 index 00000000..014d202b --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/clients/zmr/ZmrSoapClient.java @@ -0,0 +1,560 @@ +package at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.zmr; + +import java.math.BigInteger; +import java.net.URL; +import java.text.MessageFormat; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; + +import javax.annotation.Nonnull; +import javax.annotation.PostConstruct; +import javax.xml.ws.BindingProvider; + +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.lang.NonNull; +import org.springframework.lang.Nullable; + +import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.AbstractSoapClient; +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.ZmrCommunicationException; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.EidasResponseUtils; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.VersionHolder; +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; +import at.gv.bmi.namespace.zmr_su.base._20040201.ResponseType; +import at.gv.bmi.namespace.zmr_su.base._20040201.WorkflowInfoClient; +import at.gv.bmi.namespace.zmr_su.base._20040201.WorkflowInfoServer; +import at.gv.bmi.namespace.zmr_su.base._20040201_.Service; +import at.gv.bmi.namespace.zmr_su.base._20040201_.ServiceFault; +import at.gv.bmi.namespace.zmr_su.base._20040201_.ServicePort; +import at.gv.bmi.namespace.zmr_su.zmr._20040201.EidasSuchdatenType; +import at.gv.bmi.namespace.zmr_su.zmr._20040201.ErgebniskriterienType; +import at.gv.bmi.namespace.zmr_su.zmr._20040201.NatuerlichePersonErgebnisType; +import at.gv.bmi.namespace.zmr_su.zmr._20040201.PersonErgebnisSatzType; +import at.gv.bmi.namespace.zmr_su.zmr._20040201.PersonErgebnisType; +import at.gv.bmi.namespace.zmr_su.zmr._20040201.PersonSuchenRequest; +import at.gv.bmi.namespace.zmr_su.zmr._20040201.PersonSuchenResponse; +import at.gv.bmi.namespace.zmr_su.zmr._20040201.PersonensucheInfoType; +import at.gv.bmi.namespace.zmr_su.zmr._20040201.SuchkriterienType; +import at.gv.e_government.reference.namespace.persondata.de._20040201.NatuerlichePersonTyp; +import at.gv.e_government.reference.namespace.persondata.de._20040201.PersonenNameTyp; +import at.gv.egiz.eaaf.core.exceptions.EaafAuthenticationException; +import at.gv.egiz.eaaf.core.exceptions.EaafConfigurationException; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; + +/** + * ZMR client implementation for eIDAS matching operations. + * + * @author tlenz + * + */ +@Slf4j +public class ZmrSoapClient extends AbstractSoapClient implements IZmrClient { + + private static final String ERROR_MATCHING_00 = "module.eidasauth.matching.00"; + private static final String ERROR_MATCHING_01 = "module.eidasauth.matching.01"; + private static final String ERROR_MATCHING_02 = "module.eidasauth.matching.02"; + private static final String ERROR_MATCHING_99 = "module.eidasauth.matching.99"; + + private static final String LOGMSG_MISSING_CONFIG = "Missing configuration with key: {0}"; + + private static final String LOGMSG_ZMR_ERROR = + "Receive an error from ZMR during '{}' operation with msg: {}"; + private static final String LOGMSG_ZMR_RESP_PROCESS = + "Proces ZMR response during '{}' operation failes with msg: {}"; + + private static final String LOGMSG_ZMR_SOAP_ERROR = + "ZMR anwser for transaction: {} with code: {} and message: {}"; + + private static final String PROCESS_GENERAL = "eIDAS_Matching"; + private static final String PROCESS_SEARCH_PERSONAL_IDENTIFIER = + "Searching " + Constants.eIDAS_ATTR_PERSONALIDENTIFIER; + private static final String PROCESS_SEARCH_MDS_ONLY = "Searching with MDS only"; + private static final String PROCESS_SEARCH_COUNTRY_SPECIFIC = "Searching {} specific"; + + private static final String CLIENT_INFO = "eIDAS MS-Connector v{0}"; + private static final String CLIENT_DEFAULT = "ZMR Client"; + + + @Autowired VersionHolder versionHolder; + + private ServicePort zmrClient; + + + @AllArgsConstructor + @Getter + public static class ZmrRegisterResult { + private final List personResult; + private final BigInteger processId; + + } + + @Override + public ZmrRegisterResult searchWithPersonIdentifier(BigInteger zmrProzessId, String personIdentifier) + throws EidasSAuthenticationException { + + try { + // build search request + final RequestType req = new RequestType(); + + // set eIDAS person information + final PersonSuchenRequest searchPersonReq = new PersonSuchenRequest(); + req.setPersonSuchenRequest(searchPersonReq); + final EidasSuchdatenType eidasInfos = new EidasSuchdatenType(); + searchPersonReq.setEidasSuchdaten(eidasInfos); + eidasInfos.setEidasArt(Constants.eIDAS_ATTRURN_PERSONALIDENTIFIER); + eidasInfos.setEidasNummer(personIdentifier); + + // set work-flow client information + req.setWorkflowInfoClient(generateWorkFlowInfos(PROCESS_SEARCH_PERSONAL_IDENTIFIER, null)); + req.setClientInfo(generateClientInfos()); + + // set additionl search parameters + searchPersonReq.setPersonensucheInfo(generateSearchCriteria(false, true, false)); + + // request ZMR + log.trace("Requesting ZMR for '{}' operation", PROCESS_SEARCH_PERSONAL_IDENTIFIER); + final ResponseType resp = zmrClient.service(req, null); + + // parse ZMR response + return processZmrResponse(resp, EidasResponseUtils.parseEidasPersonalIdentifier(personIdentifier) + .getFirst(), + true, PROCESS_SEARCH_PERSONAL_IDENTIFIER); + + } catch (final ServiceFault e) { + final String errorMsg = extractReasonFromError(e); + log.warn(LOGMSG_ZMR_ERROR, PROCESS_SEARCH_PERSONAL_IDENTIFIER, errorMsg); + throw new ZmrCommunicationException(ERROR_MATCHING_01, new Object[] { errorMsg }, e); + + } catch (final EaafAuthenticationException e) { + log.warn(LOGMSG_ZMR_RESP_PROCESS, PROCESS_SEARCH_PERSONAL_IDENTIFIER, e.getMessage()); + throw new EidasSAuthenticationException(ERROR_MATCHING_99, new Object[] { e.getMessage() }, e); + + } + } + + @Override + public ZmrRegisterResult searchWithMds(BigInteger zmrProzessId, String givenName, String familyName, + String dateOfBirth, String citizenCountryCode) throws EidasSAuthenticationException { + try { + // build search request + final RequestType req = new RequestType(); + + // set eIDAS person information + final PersonSuchenRequest searchPersonReq = new PersonSuchenRequest(); + req.setPersonSuchenRequest(searchPersonReq); + + final NatuerlichePersonTyp searchNatPerson = new NatuerlichePersonTyp(); + searchPersonReq.setNatuerlichePerson(searchNatPerson); + final PersonenNameTyp searchNatPersonName = new PersonenNameTyp(); + searchNatPerson.setPersonenName(searchNatPersonName); + + searchNatPersonName.setFamilienname(familyName); + searchNatPersonName.setVorname(givenName); + searchNatPerson.setGeburtsdatum(dateOfBirth); + + // set work-flow client information + req.setWorkflowInfoClient(generateWorkFlowInfos(PROCESS_SEARCH_MDS_ONLY, zmrProzessId)); + req.setClientInfo(generateClientInfos()); + + // set additionl search parameters + searchPersonReq.setPersonensucheInfo(generateSearchCriteria(false, true, false)); + + // request ZMR + log.trace("Requesting ZMR for '{}' operation", PROCESS_SEARCH_MDS_ONLY); + final ResponseType resp = zmrClient.service(req, null); + + // parse ZMR response + return processZmrResponse(resp, citizenCountryCode, false, PROCESS_SEARCH_MDS_ONLY); + + } catch (final ServiceFault e) { + final String errorMsg = extractReasonFromError(e); + log.warn(LOGMSG_ZMR_ERROR, PROCESS_SEARCH_MDS_ONLY, errorMsg); + throw new ZmrCommunicationException(ERROR_MATCHING_01, new Object[] { errorMsg }, e); + + } catch (final EaafAuthenticationException e) { + log.warn(LOGMSG_ZMR_RESP_PROCESS, PROCESS_SEARCH_MDS_ONLY, e.getMessage()); + throw new EidasSAuthenticationException(ERROR_MATCHING_99, new Object[] { e.getMessage() }, e); + + } + + } + + @Override + public ZmrRegisterResult searchCountrySpecific(BigInteger zmrProzessId, PersonSuchenRequest personSearchDao, + String citizenCountryCode) + throws EidasSAuthenticationException { + final String friendlyMsg = MessageFormat.format(PROCESS_SEARCH_COUNTRY_SPECIFIC, citizenCountryCode); + + try { + // build search request + final RequestType req = new RequestType(); + + // set eIDAS person information + req.setPersonSuchenRequest(personSearchDao); + + // set work-flow client information + req.setWorkflowInfoClient(generateWorkFlowInfos(friendlyMsg, zmrProzessId)); + req.setClientInfo(generateClientInfos()); + + // set additionl search parameters + personSearchDao.setPersonensucheInfo(generateSearchCriteria(false, true, false)); + + // request ZMR + log.trace("Requesting ZMR for '{}' operation", friendlyMsg); + final ResponseType resp = zmrClient.service(req, null); + + // parse ZMR response + return processZmrResponse(resp, citizenCountryCode, true, + friendlyMsg); + + } catch (final ServiceFault e) { + final String errorMsg = extractReasonFromError(e); + log.warn(LOGMSG_ZMR_ERROR, friendlyMsg, errorMsg); + throw new ZmrCommunicationException(ERROR_MATCHING_01, new Object[] { errorMsg }, e); + + } catch (final EaafAuthenticationException e) { + log.warn(LOGMSG_ZMR_RESP_PROCESS, friendlyMsg, e.getMessage()); + throw new EidasSAuthenticationException(ERROR_MATCHING_99, new Object[] { e.getMessage() }, e); + + } + } + + @Override + public void update(BigInteger zmrProzessId, RegisterResult registerResult, SimpleEidasData eidData) { + // TODO Auto-generated method stub + + } + + @Override + public ZmrRegisterResult searchWithBpkZp(BigInteger zmrProzessId, String bpkzp) { + // TODO Auto-generated method stub + return null; + } + + @Override + public ZmrRegisterResult searchWithResidenceData(BigInteger zmrProzessId, String givenName, String familyName, + String dateOfBirth, String zipcode, String city, String street) { + // TODO Auto-generated method stub + return null; + } + + @PostConstruct + private void initialize() throws EaafConfigurationException { + // set-up the ZMR client + initializeTechnicalZmrClient(); + + // validate additional ZMR communication parameters + valdiateAdditionalConfigParameters(); + + } + + private void initializeTechnicalZmrClient() throws EaafConfigurationException { + log.info("Starting ZMR-Client initialization .... "); + final URL url = ZmrSoapClient.class.getResource("/wsdl/zmr_client/wsdl/Service.wsdl"); + final Service zmrService = new Service(url); + zmrClient = zmrService.getService(); + + final String zmrServiceUrl = basicConfig.getBasicConfiguration( + Constants.CONIG_PROPS_EIDAS_ZMRCLIENT_ENDPOINT); + if (StringUtils.isEmpty(zmrServiceUrl)) { + log.error("No ZMR service-URL found. ZMR-Client initalisiation failed."); + throw new RuntimeException("No ZMR service URL found. ZMR-Client initalisiation failed."); + + } + + // inject handler + log.info("Use ZMR service-URL: " + zmrServiceUrl); + injectBindingProvider((BindingProvider) zmrClient, CLIENT_DEFAULT, zmrServiceUrl, + basicConfig.getBasicConfigurationBoolean(Constants.CONIG_PROPS_EIDAS_ZMRCLIENT_DEBUG_TRACEMESSAGES, + false)); + + // inject http parameters and SSL context + log.debug("Inject HTTP client settings ... "); + injectHttpClient(zmrClient, HttpClientConfig.builder() + .clientName(CLIENT_DEFAULT) + .clientType(CLIENT_DEFAULT) + .clientUrl(zmrServiceUrl) + .connectionTimeout(basicConfig.getBasicConfiguration( + Constants.CONIG_PROPS_EIDAS_ZMRCLIENT_TIMEOUT_CONNECTION, + Constants.HTTP_CLIENT_DEFAULT_TIMEOUT_CONNECTION)) + .responseTimeout(basicConfig.getBasicConfiguration( + Constants.CONIG_PROPS_EIDAS_ZMRCLIENT_TIMEOUT_RESPONSE, + Constants.HTTP_CLIENT_DEFAULT_TIMEOUT_RESPONSE)) + .keyStoreConfig(buildKeyStoreConfiguration( + Constants.CONIG_PROPS_EIDAS_ZMRCLIENT_SSL_KEYSTORE_TYPE, + Constants.CONIG_PROPS_EIDAS_ZMRCLIENT_SSL_KEYSTORE_PATH, + Constants.CONIG_PROPS_EIDAS_ZMRCLIENT_SSL_KEYSTORE_PASSWORD, + Constants.CONIG_PROPS_EIDAS_ZMRCLIENT_SSL_KEYSTORE_NAME, + "ZMR SSL Client-Authentication KeyStore")) + .keyAlias(basicConfig.getBasicConfiguration(Constants.CONIG_PROPS_EIDAS_ZMRCLIENT_SSL_KEYS_ALIAS)) + .keyPassword(basicConfig.getBasicConfiguration( + Constants.CONIG_PROPS_EIDAS_ZMRCLIENT_SSL_KEY_PASSWORD)) + .trustAll(false) + .trustStoreConfig(buildKeyStoreConfiguration( + Constants.CONIG_PROPS_EIDAS_ZMRCLIENT_SSL_TRUSTSTORE_TYPE, + Constants.CONIG_PROPS_EIDAS_ZMRCLIENT_SSL_TRUSTSTORE_PATH, + Constants.CONIG_PROPS_EIDAS_ZMRCLIENT_SSL_TRUSTSTORE_PASSWORD, + Constants.CONIG_PROPS_EIDAS_ZMRCLIENT_SSL_TRUSTSTORE_NAME, + "ZMR SSL Client-Authentication TrustStore")) + .build()); + + } + + private void valdiateAdditionalConfigParameters() { + checkConfigurationValue(Constants.CONIG_PROPS_EIDAS_ZMRCLIENT_REQ_ORGANIZATION_NR); + + } + + private void checkConfigurationValue(String key) { + if (StringUtils.isEmpty(basicConfig.getBasicConfiguration(key))) { + throw new RuntimeException(MessageFormat.format(LOGMSG_MISSING_CONFIG, key)); + + } + } + + @Nonnull + private WorkflowInfoClient generateWorkFlowInfos(@Nonnull String subStepName, + @Nullable BigInteger prozessInstanzId) { + final WorkflowInfoClient infos = new WorkflowInfoClient(); + infos.setProzessName(PROCESS_GENERAL); + infos.setVorgangName(subStepName); + + //set processId that we received from ZMR before, if already available + if (prozessInstanzId != null) { + infos.setProzessInstanzID(prozessInstanzId); + + } + + return infos; + + } + + @Nonnull + private PersonensucheInfoType generateSearchCriteria(boolean searchInErnp, + boolean searchInZmrHistory, boolean includeHistoryResults) { + final PersonensucheInfoType personSearchInfo = new PersonensucheInfoType(); + final SuchkriterienType searchCriteria = new SuchkriterienType(); + final ErgebniskriterienType resultCriteria = new ErgebniskriterienType(); + personSearchInfo.setSuchkriterien(searchCriteria); + personSearchInfo.setErgebniskriterien(resultCriteria); + + // TODO: are these flags valid? + searchCriteria.setInclusivERnP(searchInErnp); + searchCriteria.setInclusivHistorie(searchInZmrHistory); + + // TODO: check 'processSearchPersonResponse' if we change this to 'true' + resultCriteria.setInclusivHistorie(includeHistoryResults); + + return personSearchInfo; + + } + + @Nonnull + private ClientInfoType generateClientInfos() { + final ClientInfoType clientInfo = new ClientInfoType(); + final Organisation clientOrganisation = new Organisation(); + clientInfo.setOrganisation(clientOrganisation); + + // set client information + clientInfo.setClient(MessageFormat.format(CLIENT_INFO, versionHolder.getVersion())); + + // set Behoerdennummer as organization identifier + clientOrganisation.setBehoerdenNr(basicConfig.getBasicConfiguration( + Constants.CONIG_PROPS_EIDAS_ZMRCLIENT_REQ_ORGANIZATION_NR)); + + return clientInfo; + } + + @Nonnull + private String extractReasonFromError(ServiceFault e) { + if (e.getFaultInfo() != null) { + return MessageFormat.format(LOGMSG_ZMR_SOAP_ERROR, + e.getFaultInfo().getServerTransaktionNr(), + e.getFaultInfo().getErrorCode(), + e.getFaultInfo().getErrorMessage()); + + } else { + log.error("ZMR response without error code", e); + return e.getMessage(); + + } + } + + @Nonnull + private ZmrRegisterResult processZmrResponse(@Nonnull ResponseType resp, + @Nonnull String citizenCountryCode, + boolean forceSinglePersonMatch, @Nonnull String processStepFiendlyname) + throws EaafAuthenticationException { + final PersonSuchenResponse searchPersonResp = resp.getPersonSuchenResponse(); + if (searchPersonResp.getPersonensuchergebnis() == null + || searchPersonResp.getPersonensuchergebnis().getPersonErgebnisSatz().isEmpty()) { + log.debug("ZMR result contains NO 'Personensuchergebnis' or 'PersonErgebnisSatz' is empty"); + return new ZmrRegisterResult(Collections.emptyList(), extractZmrProcessId(resp.getWorkflowInfoServer())); + + } else { + // TODO: what we to with ERnP results? + log.debug("Get #{} person results from '{}' operation", + searchPersonResp.getPersonensuchergebnis().getGefundeneSaetze(), processStepFiendlyname); + + if (forceSinglePersonMatch) { + return new ZmrRegisterResult(processSearchPersonResponseSingleResult( + searchPersonResp.getPersonensuchergebnis().getPersonErgebnisSatz(), citizenCountryCode), + extractZmrProcessId(resp.getWorkflowInfoServer())); + + } else { + return new ZmrRegisterResult(processSearchPersonResponse( + searchPersonResp.getPersonensuchergebnis().getPersonErgebnisSatz(), citizenCountryCode), + extractZmrProcessId(resp.getWorkflowInfoServer())); + + } + } + } + + private BigInteger extractZmrProcessId(WorkflowInfoServer workflowInfoServer) { + return workflowInfoServer != null ? workflowInfoServer.getProzessInstanzID() : null; + + } + + @Nonnull + private List processSearchPersonResponse( + @Nonnull List personErgebnisSatz, + @Nonnull String citizenCountryCode) throws EaafAuthenticationException { + + return personErgebnisSatz.stream() + .map(el -> { + try { + return processPersonResult(el, citizenCountryCode); + + } catch (final EaafAuthenticationException e) { + log.warn("Skip ZMR person result by reason: {}", e.getMessage(), e); + return null; + + } + }) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + + } + + @NonNull + private List processSearchPersonResponseSingleResult( + @Nonnull List personErgebnisSatz, + @Nonnull String citizenCountryCode) throws EaafAuthenticationException { + if (personErgebnisSatz.size() > 1) { + log.error("Find more than on person with eIDAS personalIdentifier."); + throw new EaafAuthenticationException(ERROR_MATCHING_00, null); + + } else { + return Arrays.asList(processPersonResult(personErgebnisSatz.get(0), citizenCountryCode)); + + } + } + + @Nonnull + private RegisterResult processPersonResult( + @Nonnull PersonErgebnisSatzType personEl, @Nonnull String citizenCountryCode) + throws EaafAuthenticationException { + // TODO: maybe check on 'null' if ERnP data is also allowed + log.debug("Find #{} data sets in person information", + personEl.getPersonendaten().getPersonErgebnis().size()); + + if (personEl.getPersonendaten().getPersonErgebnis().size() > 1) { + log.error("Find more than on person with eIDAS personalIdentifier."); + throw new EaafAuthenticationException(ERROR_MATCHING_02, null); + + } else { + return mapZmrResponseToRegisterResult( + personEl.getPersonendaten().getPersonErgebnis().get(0), citizenCountryCode); + + } + + } + + @Nonnull + private RegisterResult mapZmrResponseToRegisterResult(@Nonnull PersonErgebnisType person, + @Nonnull String citizenCountryCode) { + // TODO: kann ich bei historischen daten davon ausgehen dass die Reihenfolge der + // Ergebnisse von aktuell --> alt ist? + + // build result + return RegisterResult.builder() + .pseudonym(selectAllEidasDocument(person, citizenCountryCode, + Constants.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_PERSONALIDENTIFIER)) + .birthName(selectSingleEidasDocument(person, citizenCountryCode, + Constants.eIDAS_ATTRURN_PERSONALIDENTIFIER)) + .build(); + + } + + private String extractBpkZp(NatuerlichePersonErgebnisType natuerlichePerson) { + String bpk = natuerlichePerson.getIdentification().stream() + .filter(el -> Constants.MATCHING_INTERNAL_BPK_TARGET.equals(el.getType())) + .findFirst() + .map(el -> el.getValue()) + .orElse(null); + if (StringUtils.isEmpty(bpk)) { + log.warn("ZMR response contains no 'bPK' for target: 'ZP'"); + + } + return bpk; + + } + + /** + * Get all eIDAS document with the specified country code and document type. + * + * @param person Person information from ZMR + * @param citizenCountryCode Country code of the eIDAS attribute + * @param eidasAttrurnPersonalidentifier eIDAS attribute identifier + * @return {@link List} of eIDAS attribute values or an empty list if's not + * found + */ + @NonNull + private List selectAllEidasDocument(PersonErgebnisType person, String citizenCountryCode, + String eidasAttrurnPersonalidentifier) { + return person.getEidasIdentitaet().stream() + .filter(el -> eidasAttrurnPersonalidentifier.equals(el.getEidasArt()) + && el.getStaatscode3().equals(citizenCountryCode)) + .map(el -> el.getDokumentNummer()) + .collect(Collectors.toList()); + + } + + /** + * Get the first eIDAS document with the specified country code and document + * type. + * + * @param person Person information from ZMR + * @param citizenCountryCode Country code of the eIDAS attribute + * @param eidasAttrurnPersonalidentifier eIDAS attribute identifier + * @return Value of this eIDAS attribute or null if's not found + */ + @Nullable + private String selectSingleEidasDocument(PersonErgebnisType person, String citizenCountryCode, + String eidasAttrurnPersonalidentifier) { + return person.getEidasIdentitaet().stream() + .filter(el -> eidasAttrurnPersonalidentifier.equals(el.getEidasArt()) + && el.getStaatscode3().equals(citizenCountryCode)) + .findFirst() + .map(el -> el.getDokumentNummer()) + .orElse(null); + + } +} diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/dao/MergedRegisterSearchResult.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/dao/MergedRegisterSearchResult.java deleted file mode 100644 index 0c977016..00000000 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/dao/MergedRegisterSearchResult.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2020 A-SIT Plus GmbH - * AT-specific eIDAS Connector has been developed in a cooperation between EGIZ, - * A-SIT Plus GmbH, A-SIT, and Graz University of Technology. - * - * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "License"); - * You may not use this work except in compliance with the License. - * You may obtain a copy of the License at: - * https://joinup.ec.europa.eu/news/understanding-eupl-v12 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - */ - -package at.asitplus.eidas.specific.modules.auth.eidas.v2.dao; - -import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.WorkflowException; -import lombok.Data; - -import java.util.List; - -@Data -public class MergedRegisterSearchResult { - - private final List resultsZmr; - private final List resultsErnp; - - public MergedRegisterSearchResult(List resultsZmr, List resultsErnp) { - this.resultsZmr = resultsZmr; - this.resultsErnp = resultsErnp; - } - - public int getResultCount() { - return resultsZmr.size() + resultsErnp.size(); - } - - /** - * Verifies that there is only one match and returns the bpk. - * - * @return bpk bpk of the match - * @throws WorkflowException if multiple results have been found - */ - public String getBpk() throws WorkflowException { - if (getResultCount() != 1) { - throw new WorkflowException("getResultCount() != 1"); - } - return getResult().getBpk(); - } - - /** - * Returns the results, if there is exactly one, throws exception otherwise. - * - * @return The result - * @throws WorkflowException Results does not contain exactly one result - */ - public RegisterResult getResult() throws WorkflowException { - if (getResultCount() != 1) { - throw new WorkflowException("getResultCount() != 1"); - } - if (resultsZmr.size() == 1) { - return resultsZmr.get(0); - } else { - return resultsErnp.get(0); - } - } -} diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/dao/RegisterResult.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/dao/RegisterResult.java index 369a4e31..4959d72f 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/dao/RegisterResult.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/dao/RegisterResult.java @@ -23,70 +23,29 @@ package at.asitplus.eidas.specific.modules.auth.eidas.v2.dao; +import java.util.List; + import at.gv.e_government.reference.namespace.persondata._20020228.PostalAddressType; -import lombok.Data; +import lombok.Builder; +import lombok.Getter; -@Data +@Builder +@Getter public class RegisterResult { // MDS - private final String pseudonym; + private final List pseudonym; private final String givenName; private final String familyName; private final String dateOfBirth; // additional attributes - private final String placeOfBirth; - private final String birthName; - private final String taxNumber; - private final PostalAddressType address; - - private final String bpk; + private String placeOfBirth; + private String birthName; + private String taxNumber; + private PostalAddressType address; - /** - * Register search result. - * - * @param bpk The bpk - * @param pseudonym The pseudonym - * @param givenName The givenName - * @param familyName The familyName - * @param dateOfBirth The dateOfBirth - */ - public RegisterResult(String bpk, String pseudonym, String givenName, String familyName, String dateOfBirth) { - this.bpk = bpk; - this.pseudonym = pseudonym; - this.givenName = givenName; - this.familyName = familyName; - this.dateOfBirth = dateOfBirth; - this.placeOfBirth = null; - this.birthName = null; - this.taxNumber = null; - this.address = null; - } + private String bpk; - /** - * Register search result. - * - * @param bpk The bpk - * @param pseudonym The pseudonym - * @param givenName The givenName - * @param familyName The familyName - * @param dateOfBirth The dateOfBirth - * @param placeOfBirth The placeOfBirth - * @param birthName The birthName - * @param taxNumber The taxNumber - * @param address The address - */ - public RegisterResult(String bpk, String pseudonym, String givenName, String familyName, String dateOfBirth, - String placeOfBirth, String birthName, String taxNumber, PostalAddressType address) { - this.bpk = bpk; - this.pseudonym = pseudonym; - this.givenName = givenName; - this.familyName = familyName; - this.dateOfBirth = dateOfBirth; - this.placeOfBirth = placeOfBirth; - this.birthName = birthName; - this.taxNumber = taxNumber; - this.address = address; - } + } diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/dao/SimpleEidasData.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/dao/SimpleEidasData.java index ecf5007a..ab84a45f 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/dao/SimpleEidasData.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/dao/SimpleEidasData.java @@ -23,20 +23,32 @@ package at.asitplus.eidas.specific.modules.auth.eidas.v2.dao; +import org.apache.commons.lang3.builder.EqualsBuilder; + import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.WorkflowException; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService.RegisterSearchResult; import at.gv.e_government.reference.namespace.persondata._20020228.PostalAddressType; import lombok.Builder; import lombok.Data; -import org.apache.commons.lang3.builder.EqualsBuilder; @Data @Builder public class SimpleEidasData { + /** + * Full eIDAS personal identifier with prefix. + */ private final String personalIdentifier; + + /** + * Citizen country-code from eIDAS personal-identifier. + */ private final String citizenCountryCode; // MDS + /** + * eIDAS personal identifier without prefix. + */ private final String pseudonym; private final String givenName; private final String familyName; @@ -55,16 +67,24 @@ public class SimpleEidasData { * @return true or false depending of the data matches * @throws WorkflowException if multiple results have been found */ - public boolean equalsRegisterData(MergedRegisterSearchResult result) throws WorkflowException { + public boolean equalsRegisterData(RegisterSearchResult result) throws WorkflowException { + /*TODO: maybe this is check is not valid, because only the minimum data-set (personalIdentifer, givenName, + * familyName, dateOfBirth) has to be always available. Any other attributes are optional. + * This check will always evaluate to false if register has more information as current eIDAS process!!! + */ + return new EqualsBuilder() - .append(result.getResult().getPseudonym(), pseudonym) .append(result.getResult().getGivenName(), givenName) .append(result.getResult().getFamilyName(), familyName) .append(result.getResult().getDateOfBirth(), dateOfBirth) .append(result.getResult().getPlaceOfBirth(), placeOfBirth) .append(result.getResult().getBirthName(), birthName) .append(result.getResult().getTaxNumber(), taxNumber) - .isEquals(); + .isEquals() && result.getResult().getPseudonym().stream() + .filter(el -> el.equals(pseudonym)) + .findFirst() + .isPresent(); + } } diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/dao/SimpleMobileSignatureData.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/dao/SimpleMobileSignatureData.java index 4a27e60e..92e727ea 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/dao/SimpleMobileSignatureData.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/dao/SimpleMobileSignatureData.java @@ -23,15 +23,15 @@ package at.asitplus.eidas.specific.modules.auth.eidas.v2.dao; +import org.apache.commons.lang3.builder.EqualsBuilder; + import lombok.Builder; import lombok.Data; -import org.apache.commons.lang3.builder.EqualsBuilder; @Data @Builder public class SimpleMobileSignatureData { - private final String citizenCountryCode; private final String bpk; private final String givenName; private final String familyName; diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/ernp/DummyErnpClient.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/ernp/DummyErnpClient.java index 3536b0dc..065b17a2 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/ernp/DummyErnpClient.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/ernp/DummyErnpClient.java @@ -23,13 +23,14 @@ package at.asitplus.eidas.specific.modules.auth.eidas.v2.ernp; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.RegisterResult; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData; -import org.springframework.stereotype.Service; - import java.util.Collections; import java.util.List; +import org.springframework.stereotype.Service; + +import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.RegisterResult; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData; + @Service("ErnbClientForeIDAS") public class DummyErnpClient implements IErnpClient { diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/ernp/IErnpClient.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/ernp/IErnpClient.java index 218a9f41..b3b0c033 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/ernp/IErnpClient.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/ernp/IErnpClient.java @@ -23,11 +23,11 @@ package at.asitplus.eidas.specific.modules.auth.eidas.v2.ernp; +import java.util.List; + import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.RegisterResult; import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData; -import java.util.List; - public interface IErnpClient { List searchWithPersonIdentifier(String personIdentifier); diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/exception/InvalidUserInputException.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/exception/InvalidUserInputException.java index f28d8afa..c7df56d0 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/exception/InvalidUserInputException.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/exception/InvalidUserInputException.java @@ -26,8 +26,9 @@ package at.asitplus.eidas.specific.modules.auth.eidas.v2.exception; public class InvalidUserInputException extends EidasSAuthenticationException { private static final long serialVersionUID = 1L; - public InvalidUserInputException() { - super("eidas.10", null); + public InvalidUserInputException(String errorCode) { + super(errorCode, null); + } } diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/exception/ManualFixNecessaryException.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/exception/ManualFixNecessaryException.java index 2fecaa6b..cf69bd2c 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/exception/ManualFixNecessaryException.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/exception/ManualFixNecessaryException.java @@ -28,11 +28,17 @@ import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData; public class ManualFixNecessaryException extends EidasSAuthenticationException { private static final long serialVersionUID = 1L; + //TODO: should we pass some infos? public ManualFixNecessaryException(String personIdentifier) { - super("eidas.09", new Object[] { personIdentifier }); + super("module.eidasauth.matching.04", new Object[] { personIdentifier }); } public ManualFixNecessaryException(SimpleEidasData eidData) { - super("eidas.09", new Object[] { eidData.getPseudonym() });//TODO what info to pass??? + super("module.eidasauth.matching.04", new Object[] { eidData.getPseudonym() }); } + + public ManualFixNecessaryException(SimpleEidasData eidData, Throwable e) { + super("module.eidasauth.matching.04", new Object[] { eidData.getPseudonym() }, e); + } + } diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/exception/WorkflowException.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/exception/WorkflowException.java index b6f3309b..795b4386 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/exception/WorkflowException.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/exception/WorkflowException.java @@ -23,11 +23,72 @@ package at.asitplus.eidas.specific.modules.auth.eidas.v2.exception; +import lombok.Getter; + +@Getter public class WorkflowException extends EidasSAuthenticationException { private static final long serialVersionUID = 1L; - public WorkflowException(String data) { - super("eidas.08", new Object[]{data}); + private String processStepName; + private String errorReason; + private boolean requiresManualFix = false; + + /** + * In case of a error during matching work-flow. + * + * @param processStep Matching step identifier + * @param errorReason Reason for this error + */ + public WorkflowException(String processStep, String errorReason) { + super("module.eidasauth.matching.03", new Object[]{processStep, errorReason}); + this.processStepName = processStep; + this.errorReason = errorReason; + } + /** + * In case of a error during matching work-flow. + * + * @param processStep Matching step identifier + * @param errorReason Reason for this error + * @param e Catched exception + */ + public WorkflowException(String processStep, String errorReason, Throwable e) { + super("module.eidasauth.matching.03", new Object[]{processStep, errorReason}, e); + this.processStepName = processStep; + this.errorReason = errorReason; + + } + + /** + * In case of a error during matching work-flow. + * + * @param processStep Matching step identifier + * @param errorReason Reason for this error + * @param needsManualFix Mark this work-flow as manually fixable + */ + public WorkflowException(String processStep, String errorReason, boolean needsManualFix) { + super("module.eidasauth.matching.03", new Object[]{processStep, errorReason}); + this.processStepName = processStep; + this.errorReason = errorReason; + this.requiresManualFix = needsManualFix; + + } + + /** + * In case of a error during matching work-flow. + * + * @param processStep Matching step identifier + * @param errorReason Reason for this error + * @param needsManualFix Mark this work-flow as manually fixable + * @param e Catched exception + */ + public WorkflowException(String processStep, String errorReason, boolean needsManualFix, Throwable e) { + super("module.eidasauth.matching.03", new Object[]{processStep, errorReason}, e); + this.processStepName = processStep; + this.errorReason = errorReason; + this.requiresManualFix = needsManualFix; + + } + } diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/exception/ZmrCommunicationException.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/exception/ZmrCommunicationException.java new file mode 100644 index 00000000..a6978458 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/exception/ZmrCommunicationException.java @@ -0,0 +1,38 @@ +/* + * Copyright 2018 A-SIT Plus GmbH + * AT-specific eIDAS Connector has been developed in a cooperation between EGIZ, + * A-SIT Plus GmbH, A-SIT, and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "License"); + * You may not use this work except in compliance with the License. + * You may obtain a copy of the License at: + * https://joinup.ec.europa.eu/news/understanding-eupl-v12 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. +*/ + +package at.asitplus.eidas.specific.modules.auth.eidas.v2.exception; + +public class ZmrCommunicationException extends EidasSAuthenticationException { + + private static final long serialVersionUID = 1L; + + public ZmrCommunicationException(String internalMsgId, Object[] params) { + super(internalMsgId, params); + } + + public ZmrCommunicationException(String internalMsgId, Object[] params, Throwable e) { + super(internalMsgId, params, e); + } + +} diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/AbstractEidProcessor.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/AbstractEidProcessor.java index 05254fe2..1050f8d9 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/AbstractEidProcessor.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/AbstractEidProcessor.java @@ -24,11 +24,13 @@ package at.asitplus.eidas.specific.modules.auth.eidas.v2.handler; +import static at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.EidasResponseUtils.processCountryCode; +import static at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.EidasResponseUtils.processDateOfBirthToString; + import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData; import org.apache.commons.lang3.StringUtils; import org.joda.time.DateTime; import org.slf4j.Logger; @@ -37,7 +39,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.lang.NonNull; import com.google.common.collect.ImmutableSortedSet; + 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; @@ -47,15 +51,11 @@ import at.gv.egiz.eaaf.core.api.IRequest; import at.gv.egiz.eaaf.core.api.data.EaafConstants; import at.gv.egiz.eaaf.core.api.idp.IConfigurationWithSP; import at.gv.egiz.eaaf.core.api.idp.ISpConfiguration; - import eu.eidas.auth.commons.attribute.AttributeDefinition; import eu.eidas.auth.commons.attribute.ImmutableAttributeMap; import eu.eidas.auth.commons.light.impl.LightRequest.Builder; import eu.eidas.auth.commons.protocol.eidas.SpType; -import static at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.EidasResponseUtils.processCountryCode; -import static at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.EidasResponseUtils.processDateOfBirthToString; - public abstract class AbstractEidProcessor implements INationalEidProcessor { private static final Logger log = LoggerFactory.getLogger(AbstractEidProcessor.class); @@ -77,19 +77,26 @@ public abstract class AbstractEidProcessor implements INationalEidProcessor { public final SimpleEidasData postProcess(Map eidasAttrMap) throws EidPostProcessingException, EidasAttributeException { SimpleEidasData.SimpleEidasDataBuilder builder = SimpleEidasData.builder() + .personalIdentifier(EidasResponseUtils.processPersonalIdentifier( + eidasAttrMap.get(Constants.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))) + // 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))); + if (eidasAttrMap.containsKey(Constants.eIDAS_ATTR_TAXREFERENCE)) { builder.taxNumber(EidasResponseUtils.processTaxReference(eidasAttrMap.get(Constants.eIDAS_ATTR_TAXREFERENCE))); + } + return builder.build(); } diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/CountrySpecificDetailSearchProcessor.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/CountrySpecificDetailSearchProcessor.java index 6e8f7fce..c2a62f5c 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/CountrySpecificDetailSearchProcessor.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/CountrySpecificDetailSearchProcessor.java @@ -23,8 +23,10 @@ package at.asitplus.eidas.specific.modules.auth.eidas.v2.handler; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.MergedRegisterSearchResult; +import javax.annotation.Nonnull; + import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData; +import at.gv.bmi.namespace.zmr_su.zmr._20040201.PersonSuchenRequest; public interface CountrySpecificDetailSearchProcessor { @@ -37,11 +39,18 @@ public interface CountrySpecificDetailSearchProcessor { * Check if this postProcessor is sensitive for a specific country. * * @param countryCode of the eID data that should be processed - * @param eidData eID data + * @param eidData eID information from eIDAS Proxy-Service * @return true if this implementation can handle the country, otherwise false */ boolean canHandle(String countryCode, SimpleEidasData eidData); - MergedRegisterSearchResult search(SimpleEidasData eidData); + /** + * Builds a country-specific search person request for ZMR. + * + * @param eidData eID information from eIDAS Proxy-Service + * @return {@link PersonSuchenRequest} but never null + */ + @Nonnull + PersonSuchenRequest generateSearchRequest(SimpleEidasData eidData); } diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/DeSpecificDetailSearchProcessor.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/DeSpecificDetailSearchProcessor.java index 904c41a1..802fde14 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/DeSpecificDetailSearchProcessor.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/DeSpecificDetailSearchProcessor.java @@ -23,40 +23,39 @@ package at.asitplus.eidas.specific.modules.auth.eidas.v2.handler; +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.MergedRegisterSearchResult; import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService; +import at.gv.bmi.namespace.zmr_su.zmr._20040201.EidasSuchdatenType; +import at.gv.bmi.namespace.zmr_su.zmr._20040201.PersonSuchenRequest; public class DeSpecificDetailSearchProcessor implements CountrySpecificDetailSearchProcessor { - private final RegisterSearchService registerSearchService; - - public DeSpecificDetailSearchProcessor(RegisterSearchService registerSearchService) { - this.registerSearchService = registerSearchService; - } - @Override public String getName() { - return this.getClass().getName(); + return this.getClass().getSimpleName(); } @Override public boolean canHandle(String countryCode, SimpleEidasData eidData) { - if (!countryCode.equalsIgnoreCase(Constants.COUNTRY_CODE_DE)) { - return false; - } - if (eidData.getBirthName() == null || eidData.getBirthName().isEmpty()) { - return false; - } - if (eidData.getPlaceOfBirth() == null || eidData.getPlaceOfBirth().isEmpty()) { - return false; - } - return true; + return countryCode.equalsIgnoreCase(Constants.COUNTRY_CODE_DE) + && StringUtils.isNotEmpty(eidData.getBirthName()) + && StringUtils.isNotEmpty(eidData.getPlaceOfBirth()); + } @Override - public MergedRegisterSearchResult search(SimpleEidasData eidData) { - return registerSearchService.searchDeSpecific(eidData); + public PersonSuchenRequest generateSearchRequest(SimpleEidasData eidData) { + + PersonSuchenRequest req = new PersonSuchenRequest(); + EidasSuchdatenType eidasInfos = new EidasSuchdatenType(); + req.setEidasSuchdaten(eidasInfos); + + + //TODO: how we can search for more than one eIDAS attribute as a Set + + + return req; } } diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/ItSpecificDetailSearchProcessor.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/ItSpecificDetailSearchProcessor.java index 7e74a85c..b49c355d 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/ItSpecificDetailSearchProcessor.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/handler/ItSpecificDetailSearchProcessor.java @@ -23,37 +23,31 @@ package at.asitplus.eidas.specific.modules.auth.eidas.v2.handler; +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.MergedRegisterSearchResult; import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService; +import at.gv.bmi.namespace.zmr_su.zmr._20040201.PersonSuchenRequest; public class ItSpecificDetailSearchProcessor implements CountrySpecificDetailSearchProcessor { - private final RegisterSearchService registerSearchService; - - public ItSpecificDetailSearchProcessor(RegisterSearchService registerSearchService) { - this.registerSearchService = registerSearchService; - } - @Override public String getName() { - return this.getClass().getName(); + return this.getClass().getSimpleName(); } @Override public boolean canHandle(String countryCode, SimpleEidasData eidData) { - if (!countryCode.equalsIgnoreCase(Constants.COUNTRY_CODE_IT)) { - return false; - } - if (eidData.getTaxNumber() == null || eidData.getTaxNumber().isEmpty()) { - return false; - } - return true; + return countryCode.equalsIgnoreCase(Constants.COUNTRY_CODE_IT) + && StringUtils.isNotEmpty(eidData.getTaxNumber()); + } @Override - public MergedRegisterSearchResult search(SimpleEidasData eidData) { - return registerSearchService.searchItSpecific(eidData); + public PersonSuchenRequest generateSearchRequest(SimpleEidasData eidData) { + + //TODO: add IT specific search request if TaxNumber attribute is defined by IT + return new PersonSuchenRequest(); + } } diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/service/RegisterSearchService.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/service/RegisterSearchService.java index 6b524e36..166ffafb 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/service/RegisterSearchService.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/service/RegisterSearchService.java @@ -1,18 +1,28 @@ package at.asitplus.eidas.specific.modules.auth.eidas.v2.service; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.MergedRegisterSearchResult; +import java.math.BigInteger; +import java.util.Collections; +import java.util.List; + +import javax.annotation.Nonnull; + +import org.jetbrains.annotations.Nullable; +import org.springframework.stereotype.Service; + +import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.zmr.IZmrClient; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.zmr.ZmrSoapClient.ZmrRegisterResult; 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.ernp.IErnpClient; +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.auth.eidas.v2.zmr.IZmrClient; -import at.gv.egiz.eaaf.core.api.IRequest; -import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.ZmrCommunicationException; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.handler.CountrySpecificDetailSearchProcessor; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.RequiredArgsConstructor; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - -import java.util.Collections; -import java.util.List; @Slf4j @Service("registerSearchService") @@ -21,99 +31,277 @@ public class RegisterSearchService { private final IZmrClient zmrClient; private final IErnpClient ernpClient; - public RegisterSearchService(IZmrClient zmrClient, IErnpClient ernpClient) { + private final List handlers; + + /** + * Service that combines ZMR and ERnP register search operations. + * + * @param handlers Available country-specific search processors + * @param zmrClient ZMR client + * @param ernpClient ERnP client + */ + public RegisterSearchService(List handlers, IZmrClient zmrClient, + IErnpClient ernpClient) { this.zmrClient = zmrClient; this.ernpClient = ernpClient; + this.handlers = handlers; + log.info("Init with #{} search services for country-specific details", handlers.size()); + } /** - * Automatic process to fix the register entries. + * Search with Person Identifier (eIDAS Pseudonym) in ZMR and ERnP. * - * @param initialSearchResult Result of initial register search - * @param specificSearchResult Result of last register search - * @param eidasData Received eidas data - * @param pendingReq Pending request - * @return The bpk - * @throws TaskExecutionException if an error occurs during the register update + * @param eidasData Received eIDAS data + * @throws WorkflowException In case of a register interaction error */ - public String step7aKittProcess(MergedRegisterSearchResult initialSearchResult, - MergedRegisterSearchResult specificSearchResult, - SimpleEidasData eidasData, - IRequest pendingReq) throws TaskExecutionException { - log.trace("Starting step7aKittProcess"); - // TODO verify with which data this method gets called + @Nonnull + public RegisterSearchResult searchWithPersonIdentifier(SimpleEidasData eidasData) + throws WorkflowException { try { - if (initialSearchResult.getResultCount() != 0) { - throw new WorkflowException("initialSearchResult.getResultCount() != 0"); - } - if (specificSearchResult.getResultCount() != 1) { - throw new WorkflowException("specificSearchResult.getResultCount() != 1"); - } - if (specificSearchResult.getResultsZmr().size() == 1) { - zmrClient.update(specificSearchResult.getResultsZmr().get(0), eidasData); - } - if (specificSearchResult.getResultsErnp().size() == 1) { - ernpClient.update(specificSearchResult.getResultsErnp().get(0), eidasData); - } - return specificSearchResult.getBpk(); - } catch (WorkflowException e) { - throw new TaskExecutionException(pendingReq, "Step7a failed.", e); + final ZmrRegisterResult resultsZmr = zmrClient.searchWithPersonIdentifier( + null, eidasData.getPersonalIdentifier()); + final List resultsErnp = ernpClient.searchWithPersonIdentifier( + eidasData.getPersonalIdentifier()); + + return new RegisterSearchResult(new RegisterOperationStatus(resultsZmr.getProcessId()), + resultsZmr.getPersonResult(), resultsErnp); + + } catch (final EidasSAuthenticationException e) { + throw new WorkflowException("searchWithPersonalIdentifier", e.getMessage(), + !(e instanceof ZmrCommunicationException), e); + } } /** * Search with MDS (Given Name, Family Name, Date of Birth) in ZMR and ERnP. + * + * @param operationStatus Current register-operation status that contains processing informations + * @param eidasData Received eIDAS data + * @throws WorkflowException In case of a register interaction error */ - public MergedRegisterSearchResult searchWithMds(SimpleEidasData eidasData) { - List resultsZmr = - zmrClient.searchWithMds(eidasData.getGivenName(), eidasData.getFamilyName(), eidasData.getDateOfBirth()); - List resultsErnp = - ernpClient.searchWithMds(eidasData.getGivenName(), eidasData.getFamilyName(), eidasData.getDateOfBirth()); - return new MergedRegisterSearchResult(resultsZmr, resultsErnp); + @Nonnull + public RegisterSearchResult searchWithMds(RegisterOperationStatus operationStatus, SimpleEidasData eidasData) + throws WorkflowException { + try { + final ZmrRegisterResult resultsZmr = + zmrClient.searchWithMds(operationStatus.getZmrProcessId(), eidasData.getGivenName(), + eidasData.getFamilyName(), eidasData.getDateOfBirth(), eidasData.getCitizenCountryCode()); + + final List resultsErnp = + ernpClient.searchWithMds(eidasData.getGivenName(), eidasData.getFamilyName(), eidasData + .getDateOfBirth()); + + return new RegisterSearchResult(new RegisterOperationStatus(resultsZmr.getProcessId()), + resultsZmr.getPersonResult(), resultsErnp); + + } catch (final EidasSAuthenticationException e) { + throw new WorkflowException("searchWithMDSOnly", e.getMessage(), + !(e instanceof ZmrCommunicationException), e); + + } } /** - * Search with Person Identifier (eIDAS Pseudonym) in ZMR and ERnP. + * Search with country-specific parameters based on information from available + * {@link CountrySpecificDetailSearchProcessor} implementations. + * + * @param operationStatus Current register-operation status that contains processing informations + * @param eidasData Receive eIDAS eID information + * @return Results from ZMR or ERnP search + * @throws WorkflowException In case of a register interaction error */ - public MergedRegisterSearchResult searchWithPersonIdentifier(SimpleEidasData eidasData) { - List resultsZmr = zmrClient.searchWithPersonIdentifier(eidasData.getPseudonym()); - List resultsErnp = ernpClient.searchWithPersonIdentifier(eidasData.getPseudonym()); - return new MergedRegisterSearchResult(resultsZmr, resultsErnp); + @Nonnull + public RegisterSearchResult searchWithCountrySpecifics(RegisterOperationStatus operationStatus, + SimpleEidasData eidasData) throws WorkflowException { + try { + @Nullable + final CountrySpecificDetailSearchProcessor ccSpecificProcessor = findSpecificProcessor(eidasData); + if (ccSpecificProcessor != null) { + log.debug("Selecting country-specific search processor: {}", ccSpecificProcessor.getName()); + final ZmrRegisterResult resultsZmr = + zmrClient.searchCountrySpecific(operationStatus.getZmrProcessId(), + ccSpecificProcessor.generateSearchRequest(eidasData), + eidasData.getCitizenCountryCode()); + + // TODO: add search procesfor for ERnP searching + return new RegisterSearchResult(operationStatus, resultsZmr.getPersonResult(), Collections.emptyList()); + + } else { + return new RegisterSearchResult(operationStatus, Collections.emptyList(), Collections.emptyList()); + + } + + } catch (final EidasSAuthenticationException e) { + throw new WorkflowException("searchWithCountrySpecifics", e.getMessage(), + !(e instanceof ZmrCommunicationException), e); + + } } /** - * Search with Tax Number in ZMR and ERnP. + * Search with BPK-ZP in BMR and ERnP. */ - public MergedRegisterSearchResult searchItSpecific(SimpleEidasData eidasData) { - List resultsZmr = zmrClient.searchItSpecific(eidasData.getTaxNumber()); - List resultsErnb = ernpClient.searchItSpecific(eidasData.getTaxNumber()); - return new MergedRegisterSearchResult(resultsZmr, resultsErnb); + public RegisterSearchResult searchWithBpkZp(RegisterOperationStatus operationStatus, String bpkZp) { + final ZmrRegisterResult resultsZmr = zmrClient.searchWithBpkZp( + operationStatus.getZmrProcessId(), bpkZp); + final List resultsErnp = ernpClient.searchWithBpkZp(bpkZp); + return new RegisterSearchResult(operationStatus, resultsZmr.getPersonResult(), resultsErnp); + } /** - * Search with Given Name, Family Name, Date of Birth, Place of Birth and Birth Name in ZMR and ERnP. + * Search with residence infos. + * + * @param operationStatus Current register-operation status that contains processing informations + * @param zipcode Provided Zipcode + * @param city Provided City + * @param street Provided street + * @return Results from ZMR or ERnP search */ - public MergedRegisterSearchResult searchDeSpecific(SimpleEidasData eidasData) { - List resultsZmr = - zmrClient.searchDeSpecific(eidasData.getGivenName(), eidasData.getFamilyName(), eidasData.getDateOfBirth(), - eidasData.getPlaceOfBirth(), eidasData.getBirthName()); - List resultsErnb = - ernpClient.searchDeSpecific(eidasData.getGivenName(), eidasData.getFamilyName(), eidasData.getDateOfBirth(), - eidasData.getPlaceOfBirth(), eidasData.getBirthName()); - return new MergedRegisterSearchResult(resultsZmr, resultsErnb); + public RegisterSearchResult searchWithResidence(RegisterOperationStatus operationStatus, SimpleEidasData eidasData, + String zipcode, String city, String street) { + final ZmrRegisterResult resultsZmr = zmrClient.searchWithResidenceData( + operationStatus.getZmrProcessId(), eidasData.getGivenName(), eidasData.getFamilyName(), + eidasData.getDateOfBirth(), zipcode, city, street); + return new RegisterSearchResult(operationStatus, resultsZmr.getPersonResult(), Collections.emptyList()); + } /** - * Search with BPK-ZP in BMR and ERnP. + * Automatic process to fix the register entries. + * + * @param specificSearchResult Result of last register search + * @param eidasData Received eidas data + */ + public void step7aKittProcess(RegisterSearchResult specificSearchResult, + SimpleEidasData eidasData) throws WorkflowException { + log.trace("Starting step7aKittProcess"); + // TODO verify with which data this method gets called + if (specificSearchResult.getResultCount() != 1) { + throw new WorkflowException("step7aKittProcess", "getResultCount() != 1"); + + } + + if (specificSearchResult.getResultsZmr().size() == 1) { + zmrClient.update(specificSearchResult.getOperationStatus().getZmrProcessId(), + + specificSearchResult.getResultsZmr().get(0), eidasData); + } + + if (specificSearchResult.getResultsErnp().size() == 1) { + ernpClient.update(specificSearchResult.getResultsErnp().get(0), eidasData); + + } + + } + + @Nullable + private CountrySpecificDetailSearchProcessor findSpecificProcessor(SimpleEidasData eidasData) { + final String citizenCountry = eidasData.getCitizenCountryCode(); + for (final CountrySpecificDetailSearchProcessor processor : handlers) { + if (processor.canHandle(citizenCountry, eidasData)) { + log.debug("Found suitable search handler for {} by using: {}", citizenCountry, processor.getName()); + return processor; + } + } + return null; + } + + /** + * Register releated information that are needed for any request. + * + * @author tlenz + * */ - public MergedRegisterSearchResult searchWithBpkZp(String bpkZp) { - List resultsZmr = zmrClient.searchWithBpkZp(bpkZp); - List resultsErnp = ernpClient.searchWithBpkZp(bpkZp); - return new MergedRegisterSearchResult(resultsZmr, resultsErnp); + @AllArgsConstructor + @Getter + public static class RegisterOperationStatus { + + /** + * ZMR internal processId that is required for any further request in the same process. + */ + private BigInteger zmrProcessId; + + } + + /** + * Response container for {@link RegisterSearchService}. + * + * @author tlenz + * + */ + @Getter + @RequiredArgsConstructor + public static class RegisterSearchResult { + + /** + * Mark the register result finished. + */ + @Setter + private boolean matchingFinished = false; + + /** + * Operation status for this result. + */ + private final RegisterOperationStatus operationStatus; + + /** + * Current ZMR search result. + */ + private final List resultsZmr; + + /** + * Current ERnP search result. + */ + private final List resultsErnp; + + + /** + * Get sum of ZMR and ERnP results. + * + * @return number of results + */ + public int getResultCount() { + return resultsZmr.size() + resultsErnp.size(); + } + + /** + * Verifies that there is only one match and returns the bpk. + * + * @return bpk bpk of the match + * @throws WorkflowException if multiple results have been found or matching is not marked as finished + */ + public String getBpk() throws WorkflowException { + if (getResultCount() != 1 || !matchingFinished) { + throw new WorkflowException("readRegisterResults", + matchingFinished ? "getResultCount() != 1" : "matching prozess not finished yet"); + + } + return getResult().getBpk(); + } - public MergedRegisterSearchResult searchWithResidence(String zipcode, String city, String street) { - List resultsZmr = zmrClient.searchWithResidenceData(zipcode, city, street); - return new MergedRegisterSearchResult(resultsZmr, Collections.emptyList()); + /** + * Returns the results, if there is exactly one, throws exception otherwise. + * + * @return The result + * @throws WorkflowException Results does not contain exactly one result + */ + public RegisterResult getResult() throws WorkflowException { + if (getResultCount() != 1) { + throw new WorkflowException("readRegisterResults", "getResultCount() != 1"); + } + if (resultsZmr.size() == 1) { + return resultsZmr.get(0); + + } else { + return resultsErnp.get(0); + + } + } + } + } diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/szr/SzrClient.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/szr/SzrClient.java deleted file mode 100644 index 2d612f0c..00000000 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/szr/SzrClient.java +++ /dev/null @@ -1,601 +0,0 @@ -/* - * Copyright 2018 A-SIT Plus GmbH - * AT-specific eIDAS Connector has been developed in a cooperation between EGIZ, - * A-SIT Plus GmbH, A-SIT, and Graz University of Technology. - * - * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "License"); - * You may not use this work except in compliance with the License. - * You may obtain a copy of the License at: - * https://joinup.ec.europa.eu/news/understanding-eupl-v12 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - */ - -package at.asitplus.eidas.specific.modules.auth.eidas.v2.szr; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.net.URL; -import java.nio.charset.StandardCharsets; -import java.security.KeyManagementException; -import java.security.KeyStore; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; -import java.security.SecureRandom; -import java.security.UnrecoverableKeyException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.net.ssl.KeyManager; -import javax.net.ssl.KeyManagerFactory; -import javax.net.ssl.SSLContext; -import javax.net.ssl.TrustManager; -import javax.net.ssl.TrustManagerFactory; -import javax.xml.XMLConstants; -import javax.xml.bind.JAXBContext; -import javax.xml.bind.Marshaller; -import javax.xml.namespace.QName; -import javax.xml.transform.Source; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.stream.StreamResult; -import javax.xml.transform.stream.StreamSource; -import javax.xml.ws.BindingProvider; -import javax.xml.ws.Dispatch; -import javax.xml.ws.handler.Handler; - -import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData; -import at.gv.e_government.reference.namespace.persondata._20020228.AlternativeNameType; -import at.gv.e_government.reference.namespace.persondata._20020228.PersonNameType; -import at.gv.e_government.reference.namespace.persondata._20020228.PhysicalPersonType; -import org.apache.commons.lang3.StringUtils; -import org.apache.cxf.configuration.jsse.TLSClientParameters; -import org.apache.cxf.endpoint.Client; -import org.apache.cxf.frontend.ClientProxy; -import org.apache.cxf.jaxws.DispatchImpl; -import org.apache.cxf.transport.http.HTTPConduit; -import org.apache.cxf.transports.http.configuration.HTTPClientPolicy; -import org.apache.xpath.XPathAPI; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; - -import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.SzrCommunicationException; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.LoggingHandler; -import at.gv.egiz.eaaf.core.api.data.PvpAttributeDefinitions; -import at.gv.egiz.eaaf.core.api.data.XmlNamespaceConstants; -import at.gv.egiz.eaaf.core.api.idp.IConfiguration; -import at.gv.egiz.eaaf.core.impl.utils.DomUtils; -import at.gv.egiz.eaaf.core.impl.utils.FileUtils; -import at.gv.egiz.eaaf.core.impl.utils.KeyStoreUtils; -import szrservices.GetBPK; -import szrservices.GetBPKResponse; -import szrservices.GetIdentityLinkEidas; -import szrservices.GetIdentityLinkEidasResponse; -import szrservices.IdentityLinkType; -import szrservices.JwsHeaderParam; -import szrservices.ObjectFactory; -import szrservices.PersonInfoType; -import szrservices.SZR; -import szrservices.SZRException_Exception; -import szrservices.SignContent; -import szrservices.SignContentEntry; -import szrservices.SignContentResponseType; -import szrservices.TravelDocumentType; - - -@Service("SZRClientForeIDAS") -public class SzrClient { - private static final Logger log = LoggerFactory.getLogger(SzrClient.class); - - private static final String CLIENT_DEFAULT = "DefaultClient"; - private static final String CLIENT_RAW = "RawClient"; - - private static final String ATTR_NAME_VSZ = "urn:eidgvat:attributes.vsz.value"; - private static final String ATTR_NAME_PUBKEYS = "urn:eidgvat:attributes.user.pubkeys"; - private static final String ATTR_NAME_STATUS = "urn:eidgvat:attributes.eid.status"; - private static final String KEY_BC_BIND = "bcBindReq"; - private static final String JOSE_HEADER_USERCERTPINNING_TYPE = "urn:at.gv.eid:bindtype"; - private static final String JOSE_HEADER_USERCERTPINNING_EIDASBIND = "urn:at.gv.eid:eidasBind"; - public static final String ATTR_NAME_MDS = "urn:eidgvat:mds"; - - @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection") - @Autowired - private IConfiguration basicConfig; - - // client for anything, without identitylink - private SZR szr = null; - - // RAW client is needed for identitylink - private Dispatch dispatch = null; - - final ObjectMapper mapper = new ObjectMapper(); - - /** - * Get IdentityLink of a person. - * - * - * @param eidData minimum dataset of person - * @return IdentityLink - * @throws SzrCommunicationException In case of a SZR error - */ - public IdentityLinkType getIdentityLinkInRawMode(SimpleEidasData eidData) - throws SzrCommunicationException { - try { - final GetIdentityLinkEidas getIdl = new GetIdentityLinkEidas(); - getIdl.setPersonInfo(generateSzrRequest(eidData)); - - final JAXBContext jaxbContext = JAXBContext.newInstance(ObjectFactory.class); - final Marshaller jaxbMarshaller = jaxbContext.createMarshaller(); - - final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - jaxbMarshaller.marshal(getIdl, outputStream); - outputStream.flush(); - - final Source source = new StreamSource(new ByteArrayInputStream(outputStream.toByteArray())); - outputStream.close(); - - log.trace("Requesting SZR ... "); - final Source response = dispatch.invoke(source); - log.trace("Receive RAW response from SZR"); - - final byte[] szrResponse = sourceToByteArray(response); - final GetIdentityLinkEidasResponse jaxbElement = (GetIdentityLinkEidasResponse) jaxbContext - .createUnmarshaller().unmarshal(new ByteArrayInputStream(szrResponse)); - - // build response - log.trace(new String(szrResponse, StandardCharsets.UTF_8)); - - // ok, we have success - final Document doc = DomUtils.parseDocument( - new ByteArrayInputStream(szrResponse), - true, - XmlNamespaceConstants.ALL_SCHEMA_LOCATIONS + " " + Constants.SZR_SCHEMA_LOCATIONS, - null, null); - final String xpathExpression = "//saml:Assertion"; - final Element nsNode = doc.createElementNS("urn:oasis:names:tc:SAML:1.0:assertion", "saml:NSNode"); - - log.trace("Selecting signed doc " + xpathExpression); - final Element documentNode = (Element) XPathAPI.selectSingleNode(doc, - xpathExpression, nsNode); - log.trace("Signed document: " + DomUtils.serializeNode(documentNode)); - - final IdentityLinkType idl = new IdentityLinkType(); - idl.setAssertion(documentNode); - idl.setPersonInfo(jaxbElement.getGetIdentityLinkReturn().getPersonInfo()); - - return idl; - - } catch (final Exception e) { - log.warn("SZR communication FAILED. Reason: " + e.getMessage(), e); - throw new SzrCommunicationException("ernb.02", new Object[]{e.getMessage()}, e); - - } - - } - - /** - * Get bPK of person. - * - * - * @param eidData Minimum dataset of person - * @param target requested bPK target - * @param vkz Verfahrenskennzeichen - * @return bPK for this person - * @throws SzrCommunicationException In case of a SZR error - */ - public List getBpk(SimpleEidasData eidData, String target, String vkz) - throws SzrCommunicationException { - try { - final GetBPK parameters = new GetBPK(); - parameters.setPersonInfo(generateSzrRequest(eidData)); - parameters.getBereichsKennung().add(target); - parameters.setVKZ(vkz); - final GetBPKResponse result = this.szr.getBPK(parameters); - - return result.getGetBPKReturn(); - - } catch (final SZRException_Exception e) { - log.warn("SZR communication FAILED. Reason: " + e.getMessage(), e); - throw new SzrCommunicationException("ernb.02", new Object[]{e.getMessage()}, e); - - } - - } - - /** - * Creates a new ERnP entry. - * TODO Is this correct? Ask BMI. - * - * @param eidasData Minimum dataset of person - * @return encrypted baseId - * @throws SzrCommunicationException In case of a SZR error - */ - public String createNewErnpEntry(final SimpleEidasData eidasData) throws SzrCommunicationException { - final String resp; - try { - resp = this.szr.getStammzahlEncrypted(generateSzrRequest(eidasData), true); - } catch (SZRException_Exception e) { - throw new SzrCommunicationException("ernb.02", new Object[]{e.getMessage()}, e); - } - if (StringUtils.isEmpty(resp)) { - throw new SzrCommunicationException("ernb.01", new Object[]{"Stammzahl response empty"}); // TODO error handling - } - return resp; - } - - /** - * Request a encrypted baseId from SZR. - * - * Note: Previously, this method did create a new ERnP entry, if it did not exist. This is - * not the case any more. See {@link #createNewErnpEntry(SimpleEidasData)} for that functionality. - * - * @param eidData Minimum dataset of person - * @return encrypted baseId - * @throws SzrCommunicationException In case of a SZR error - */ - public String getEncryptedStammzahl(final SimpleEidasData eidData) - throws SzrCommunicationException { - final String resp; - try { - resp = this.szr.getStammzahlEncrypted(generateSzrRequest(eidData), false); - } catch (SZRException_Exception e) { - throw new SzrCommunicationException("ernb.02", new Object[]{e.getMessage()}, e); - } - - if (StringUtils.isEmpty(resp)) { - throw new SzrCommunicationException("ernb.01", new Object[]{"Stammzahl response empty"}); // TODO error handling - } - - return resp; - - } - - /** - * Sign an eidasBind data-structure that combines vsz with user's pubKey and E-ID status. - * - * @param vsz encrypted baseId - * @param bindingPubKey binding PublicKey as PKCS1# (ASN.1) container - * @param eidStatus Status of the E-ID - * @param eidData eID information that was used for ERnP registration - * @return bPK for this person - * @throws SzrCommunicationException In case of a SZR error - */ - public String getEidasBind(final String vsz, final String bindingPubKey, final String eidStatus, - SimpleEidasData eidData)throws SzrCommunicationException { - - final Map eidsaBindMap = new HashMap<>(); - eidsaBindMap.put(ATTR_NAME_VSZ, vsz); - eidsaBindMap.put(ATTR_NAME_STATUS, eidStatus); - eidsaBindMap.put(ATTR_NAME_PUBKEYS, Collections.singletonList(bindingPubKey)); - eidsaBindMap.put(PvpAttributeDefinitions.EID_ISSUING_NATION_NAME, eidData.getCitizenCountryCode()); - injectMdsIfAvailableAndActive(eidsaBindMap, eidData); - - try { - final String serializedEidasBind = mapper.writeValueAsString(eidsaBindMap); - final SignContent req = new SignContent(); - final SignContentEntry eidasBindInfo = new SignContentEntry(); - eidasBindInfo.setKey(KEY_BC_BIND); - eidasBindInfo.setValue(serializedEidasBind); - req.getIn().add(eidasBindInfo); - req.setAppendCert(false); - final JwsHeaderParam eidasBindJoseHeader = new JwsHeaderParam(); - eidasBindJoseHeader.setKey(JOSE_HEADER_USERCERTPINNING_TYPE); - eidasBindJoseHeader.setValue(JOSE_HEADER_USERCERTPINNING_EIDASBIND); - req.getJWSHeaderParam().add(eidasBindJoseHeader); - - log.trace("Requesting SZR to sign bcBind datastructure ... "); - final SignContentResponseType resp = szr.signContent(req.isAppendCert(), req.getJWSHeaderParam(), req.getIn()); - log.trace("Receive SZR response on bcBind siging operation "); - - if (resp == null || resp.getOut() == null - || resp.getOut().isEmpty() - || StringUtils.isEmpty(resp.getOut().get(0).getValue())) { - throw new SzrCommunicationException("ernb.01", new Object[]{"BcBind response empty"}); - } - - return resp.getOut().get(0).getValue(); - - } catch (final JsonProcessingException | SZRException_Exception e) { - log.warn("Requesting bcBind by using SZR FAILED.", e); - throw new SzrCommunicationException("ernb.02", - new Object[]{e.getMessage()}, e); - } - } - - private PersonInfoType generateSzrRequest(SimpleEidasData eidData) { - log.debug("Starting connecting SZR Gateway"); - final PersonInfoType personInfo = new PersonInfoType(); - final PersonNameType personName = new PersonNameType(); - final PhysicalPersonType naturalPerson = new PhysicalPersonType(); - final TravelDocumentType eDocument = new TravelDocumentType(); - - naturalPerson.setName(personName); - personInfo.setPerson(naturalPerson); - personInfo.setTravelDocument(eDocument); - - // person information - personName.setFamilyName(eidData.getFamilyName()); - personName.setGivenName(eidData.getGivenName()); - naturalPerson.setDateOfBirth(eidData.getDateOfBirth()); - eDocument.setIssuingCountry(eidData.getCitizenCountryCode()); - eDocument.setDocumentNumber(eidData.getPseudonym()); - - // eID document information - String documentType = basicConfig - .getBasicConfiguration(Constants.CONIG_PROPS_EIDAS_SZRCLIENT_PARAMS_EDOCUMENTTYPE, - Constants.SZR_CONSTANTS_DEFAULT_DOCUMENT_TYPE); - eDocument.setDocumentType(documentType); - - // set PlaceOfBirth if available - if (eidData.getPlaceOfBirth() != null) { - log.trace("Find 'PlaceOfBirth' attribute: " + eidData.getPlaceOfBirth()); - boolean setPlaceOfBirth = basicConfig - .getBasicConfigurationBoolean(Constants.CONIG_PROPS_EIDAS_SZRCLIENT_PARAMS_SETPLACEOFBIRTHIFAVAILABLE, true); - if (setPlaceOfBirth) { - naturalPerson.setPlaceOfBirth(eidData.getPlaceOfBirth()); - log.trace("Adding 'PlaceOfBirth' to ERnB request ... "); - } - } - - // set BirthName if available - if (eidData.getBirthName() != null) { - log.trace("Find 'BirthName' attribute: " + eidData.getBirthName()); - boolean setBirthName = basicConfig - .getBasicConfigurationBoolean(Constants.CONIG_PROPS_EIDAS_SZRCLIENT_PARAMS_SETBIRTHNAMEIFAVAILABLE, true); - if (setBirthName) { - final AlternativeNameType alternativeName = new AlternativeNameType(); - naturalPerson.setAlternativeName(alternativeName); - alternativeName.setFamilyName(eidData.getBirthName()); - log.trace("Adding 'BirthName' to ERnB request ... "); - } - } - - return personInfo; - } - - @PostConstruct - private void initialize() { - log.info("Starting SZR-Client initialization .... "); - final URL url = SzrClient.class.getResource("/szr_client/SZR_v4.0.wsdl"); - - final boolean useTestSzr = basicConfig.getBasicConfigurationBoolean( - Constants.CONIG_PROPS_EIDAS_SZRCLIENT_USETESTSERVICE, - true); - - SzrService szrService; - QName qname; - String szrUrl; - if (useTestSzr) { - log.debug("Initializing SZR test environment configuration."); - qname = SzrService.SZRTestumgebung; - szrService = new SzrService(url, new QName("urn:SZRServices", "SZRService")); - szr = szrService.getSzrTestumgebung(); - szrUrl = basicConfig.getBasicConfiguration(Constants.CONIG_PROPS_EIDAS_SZRCLIENT_ENDPOINT_TEST); - - } else { - log.debug("Initializing SZR productive configuration."); - qname = SzrService.SZRProduktionsumgebung; - szrService = new SzrService(url, new QName("urn:SZRServices", "SZRService")); - szr = szrService.getSzrProduktionsumgebung(); - szrUrl = basicConfig.getBasicConfiguration(Constants.CONIG_PROPS_EIDAS_SZRCLIENT_ENDPOINT_PROD); - - } - - // create raw client; - dispatch = szrService.createDispatch(qname, Source.class, javax.xml.ws.Service.Mode.PAYLOAD); - - if (StringUtils.isEmpty(szrUrl)) { - log.error("No SZR service-URL found. SZR-Client initalisiation failed."); - throw new RuntimeException("No SZR service URL found. SZR-Client initalisiation failed."); - - } - - // check if Clients can be initialized - if (szr == null) { - log.error("SZR " + CLIENT_DEFAULT + " is 'NULL'. Something goes wrong"); - throw new RuntimeException("SZR " + CLIENT_DEFAULT + " is 'NULL'. Something goes wrong"); - - } - if (dispatch == null) { - log.error("SZR " + CLIENT_RAW + " is 'NULL'. Something goes wrong"); - throw new RuntimeException("SZR " + CLIENT_RAW + " is 'NULL'. Something goes wrong"); - - } - - // inject handler - log.info("Use SZR service-URL: " + szrUrl); - injectBindingProvider((BindingProvider) szr, CLIENT_DEFAULT, szrUrl); - injectBindingProvider(dispatch, CLIENT_RAW, szrUrl); - - // inject http parameters and SSL context - log.debug("Inject HTTP client settings ... "); - injectHttpClient(szr, CLIENT_DEFAULT, szrUrl); - injectHttpClient(dispatch, CLIENT_RAW, szrUrl); - - log.info("SZR-Client initialization successfull"); - } - - private void injectHttpClient(Object raw, String clientType, String szrUrl) { - // extract client from implementation - Client client; - if (raw instanceof DispatchImpl) { - client = ((DispatchImpl) raw).getClient(); - } else if (raw instanceof Client) { - client = ClientProxy.getClient(raw); - } else { - throw new RuntimeException("SOAP Client for SZR connection is of UNSUPPORTED type: " + raw.getClass() - .getName()); - } - - // set basic connection policies - final HTTPConduit http = (HTTPConduit) client.getConduit(); - - // set timeout policy - final HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy(); - String connectionTimeout = basicConfig.getBasicConfiguration( - Constants.CONIG_PROPS_EIDAS_SZRCLIENT_TIMEOUT_CONNECTION, Constants.HTTP_CLIENT_DEFAULT_TIMEOUT_CONNECTION); - httpClientPolicy.setConnectionTimeout(Integer.parseInt(connectionTimeout) * 1000L); - String responseTimeout = basicConfig.getBasicConfiguration( - Constants.CONIG_PROPS_EIDAS_SZRCLIENT_TIMEOUT_RESPONSE, Constants.HTTP_CLIENT_DEFAULT_TIMEOUT_RESPONSE); - httpClientPolicy.setReceiveTimeout(Integer.parseInt(responseTimeout) * 1000L); - http.setClient(httpClientPolicy); - - // inject SSL context in case of https - if (szrUrl.toLowerCase().startsWith("https")) { - log.debug("Adding SSLContext to client: " + clientType + " ... "); - final TLSClientParameters tlsParams = new TLSClientParameters(); - tlsParams.setSSLSocketFactory(createSslContext(clientType).getSocketFactory()); - http.setTlsClientParameters(tlsParams); - log.info("SSLContext initialized for client: " + clientType); - - } - - } - - private void injectBindingProvider(BindingProvider bindingProvider, String clientType, String szrUrl) { - final Map requestContext = bindingProvider.getRequestContext(); - requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, szrUrl); - - log.trace("Adding JAX-WS request/response trace handler to client: " + clientType); - List handlerList = bindingProvider.getBinding().getHandlerChain(); - if (handlerList == null) { - handlerList = new ArrayList<>(); - bindingProvider.getBinding().setHandlerChain(handlerList); - - } - - // add logging handler to trace messages if required - if (basicConfig.getBasicConfigurationBoolean( - Constants.CONIG_PROPS_EIDAS_SZRCLIENT_DEBUG_TRACEMESSAGES, - false)) { - final LoggingHandler loggingHandler = new LoggingHandler(); - handlerList.add(loggingHandler); - - } - bindingProvider.getBinding().setHandlerChain(handlerList); - } - - private SSLContext createSslContext(String clientType) { - try { - final SSLContext context = SSLContext.getInstance("TLS"); - - // initialize key-mangager for SSL client-authentication - KeyManager[] keyManager = null; - final String keyStorePath = basicConfig.getBasicConfiguration( - Constants.CONIG_PROPS_EIDAS_SZRCLIENT_SSL_KEYSTORE_PATH); - final String keyStorePassword = basicConfig.getBasicConfiguration( - Constants.CONIG_PROPS_EIDAS_SZRCLIENT_SSL_KEYSTORE_PASSWORD); - if (StringUtils.isNotEmpty(keyStorePath)) { - log.trace("Find keyStore path: " + keyStorePath + " Injecting SSL client certificate ... "); - try { - final KeyStore keyStore = KeyStoreUtils.loadKeyStore( - FileUtils.makeAbsoluteUrl(keyStorePath, basicConfig.getConfigurationRootDirectory()), - keyStorePassword); - - final KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509"); - kmf.init(keyStore, keyStorePassword.toCharArray()); - keyManager = kmf.getKeyManagers(); - log.debug("SSL client certificate injected to client: " + clientType); - - } catch (KeyStoreException | IOException | UnrecoverableKeyException e) { - log.error("Can NOT load SSL client certificate from path: " + keyStorePath); - throw new RuntimeException("Can NOT load SSL client certificate from path: " + keyStorePath, e); - - } - } else { - log.debug( - "No KeyStore for SSL Client Auth. found. Initializing SSLContext without authentication ... "); - - } - - // initialize SSL TrustStore - TrustManager[] trustManager = null; - final String trustStorePath = basicConfig.getBasicConfiguration( - Constants.CONIG_PROPS_EIDAS_SZRCLIENT_SSL_TRUSTSTORE_PATH); - final String trustStorePassword = basicConfig.getBasicConfiguration( - Constants.CONIG_PROPS_EIDAS_SZRCLIENT_SSL_TRUSTSTORE_PASSWORD); - if (StringUtils.isNotEmpty(trustStorePath)) { - log.trace("Find trustStore path: " + trustStorePath + " Injecting SSL TrustStore ... "); - try { - final KeyStore trustStore = KeyStoreUtils.loadKeyStore( - FileUtils.makeAbsoluteUrl(trustStorePath, basicConfig.getConfigurationRootDirectory()), - trustStorePassword); - - final TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509"); - tmf.init(trustStore); - trustManager = tmf.getTrustManagers(); - log.debug("SSL TrustStore injected to client: " + clientType); - - } catch (KeyStoreException | IOException e) { - log.error("Can NOT open SSL TrustStore from path: " + trustStorePath); - throw new RuntimeException("Can NOT open SSL TrustStore from path: " + trustStorePath, e); - - } - - } else { - log.debug("No custom SSL TrustStore found. Initializing SSLContext with JVM default truststore ... "); - - } - - context.init(keyManager, trustManager, new SecureRandom()); - return context; - - } catch (NoSuchAlgorithmException | KeyManagementException e) { - log.error("SSLContext initialization FAILED.", e); - throw new RuntimeException("SSLContext initialization FAILED.", e); - - } - - } - - private void injectMdsIfAvailableAndActive(Map eidsaBindMap, SimpleEidasData eidData) { - if (basicConfig.getBasicConfigurationBoolean( - Constants.CONIG_PROPS_EIDAS_SZRCLIENT_SET_MDS_TO_EIDASBIND, false)) { - log.info("Injecting MDS into eidasBind ... "); - final Map mds = new HashMap<>(); - mds.put(PvpAttributeDefinitions.PRINCIPAL_NAME_NAME, eidData.getFamilyName()); - mds.put(PvpAttributeDefinitions.GIVEN_NAME_NAME, eidData.getGivenName()); - mds.put(PvpAttributeDefinitions.BIRTHDATE_NAME, eidData.getDateOfBirth()); - eidsaBindMap.put(ATTR_NAME_MDS, mds); - - } - } - - private byte[] sourceToByteArray(Source result) throws TransformerException { - final TransformerFactory factory = TransformerFactory.newInstance(); - factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); - final Transformer transformer = factory.newTransformer(); - transformer.setOutputProperty("omit-xml-declaration", "yes"); - transformer.setOutputProperty("method", "xml"); - final ByteArrayOutputStream out = new ByteArrayOutputStream(); - final StreamResult streamResult = new StreamResult(); - streamResult.setOutputStream(out); - transformer.transform(result, streamResult); - return out.toByteArray(); - } - -} diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/szr/SzrService.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/szr/SzrService.java deleted file mode 100644 index dde868b1..00000000 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/szr/SzrService.java +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Copyright 2018 A-SIT Plus GmbH - * AT-specific eIDAS Connector has been developed in a cooperation between EGIZ, - * A-SIT Plus GmbH, A-SIT, and Graz University of Technology. - * - * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "License"); - * You may not use this work except in compliance with the License. - * You may obtain a copy of the License at: - * https://joinup.ec.europa.eu/news/understanding-eupl-v12 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. -*/ - -package at.asitplus.eidas.specific.modules.auth.eidas.v2.szr; - -import java.net.URL; - -import javax.xml.namespace.QName; -import javax.xml.ws.Service; -import javax.xml.ws.WebEndpoint; -import javax.xml.ws.WebServiceClient; -import javax.xml.ws.WebServiceFeature; - -import szrservices.SZR; - -/** - * This class was generated by Apache CXF 3.1.16 2018-07-10T09:36:01.466+02:00 - * Generated source version: 3.1.16 - * - */ -@WebServiceClient(name = "SZRService", - wsdlLocation = "./src/main/resources/szr_client/SZR-1.WSDL", - targetNamespace = "urn:SZRServices") -public class SzrService extends Service { - - public static final URL WSDL_LOCATION; - - public static final QName SERVICE = new QName("urn:SZRServices", "SZRService"); - public static final QName SZRProduktionsumgebung = new QName("urn:SZRServices", "SZRProduktionsumgebung"); - public static final QName SZRTestumgebung = new QName("urn:SZRServices", "SZRTestumgebung"); - public static final QName SZRBusinesspartnerTestumgebung = new QName("urn:SZRServices", - "SZRBusinesspartnerTestumgebung"); - - static { - URL url = SzrService.class.getResource("./src/main/resources/szr_client/SZR-1.WSDL"); - if (url == null) { - url = SzrService.class.getClassLoader().getResource("/szr_client/SZR-1.WSDL"); - } - if (url == null) { - java.util.logging.Logger.getLogger(SzrService.class.getName()) - .log(java.util.logging.Level.INFO, - "Can not initialize the default wsdl from {0}", "/szr_client/SZR-1.WSDL"); - } - WSDL_LOCATION = url; - - } - - public SzrService(URL wsdlLocation) { - super(wsdlLocation, SERVICE); - } - - public SzrService(URL wsdlLocation, QName serviceName) { - super(wsdlLocation, serviceName); - } - - public SzrService() { - super(WSDL_LOCATION, SERVICE); - } - - public SzrService(WebServiceFeature... features) { - super(WSDL_LOCATION, SERVICE, features); - } - - public SzrService(URL wsdlLocation, WebServiceFeature... features) { - super(wsdlLocation, SERVICE, features); - } - - public SzrService(URL wsdlLocation, QName serviceName, WebServiceFeature... features) { - super(wsdlLocation, serviceName, features); - } - - /** - * Get SZR Web-Service. - * - * @return returns SZR - */ - @WebEndpoint(name = "SZRProduktionsumgebung") - public SZR getSzrProduktionsumgebung() { - return super.getPort(SZRProduktionsumgebung, SZR.class); - } - - /** - * Get SZR Web-Service. - * - * @param features A list of {@link javax.xml.ws.WebServiceFeature} to configure - * on the proxy. Supported features not in the - * features parameter will have their default - * values. - * @return returns SZR - */ - @WebEndpoint(name = "SZRProduktionsumgebung") - public SZR getSzrProduktionsumgebung(WebServiceFeature... features) { - return super.getPort(SZRProduktionsumgebung, SZR.class, features); - } - - /** - *Get SZR Web-Service. - * - * @return returns SZR - */ - @WebEndpoint(name = "SZRTestumgebung") - public SZR getSzrTestumgebung() { - return super.getPort(SZRTestumgebung, SZR.class); - } - - /** - * Get SZR Web-Service. - * - * @param features A list of {@link javax.xml.ws.WebServiceFeature} to configure - * on the proxy. Supported features not in the - * features parameter will have their default - * values. - * @return returns SZR - */ - @WebEndpoint(name = "SZRTestumgebung") - public SZR getSzrTestumgebung(WebServiceFeature... features) { - return super.getPort(SZRTestumgebung, SZR.class, features); - } - - /** - * Get SZR Web-Service. - * - * @return returns SZR - */ - @WebEndpoint(name = "SZRBusinesspartnerTestumgebung") - public SZR getSzrBusinesspartnerTestumgebung() { - return super.getPort(SZRBusinesspartnerTestumgebung, SZR.class); - } - - /** - * Get SZR Web-Service. - * - * @param features A list of {@link javax.xml.ws.WebServiceFeature} to configure - * on the proxy. Supported features not in the - * features parameter will have their default - * values. - * @return returns SZR - */ - @WebEndpoint(name = "SZRBusinesspartnerTestumgebung") - public SZR getSzrBusinesspartnerTestumgebung(WebServiceFeature... features) { - return super.getPort(SZRBusinesspartnerTestumgebung, SZR.class, features); - } - -} diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/CreateIdentityLinkTask.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/CreateIdentityLinkTask.java index 97769cc2..41bf4409 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/CreateIdentityLinkTask.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/CreateIdentityLinkTask.java @@ -23,15 +23,40 @@ package at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks; +import java.io.IOException; +import java.io.InputStream; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.xml.parsers.ParserConfigurationException; + +import org.apache.commons.lang3.StringUtils; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.joda.time.DateTime; +import org.jose4j.lang.JoseException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.xml.sax.SAXException; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; + import at.asitplus.eidas.specific.connector.MsConnectorEventCodes; import at.asitplus.eidas.specific.connector.MsEidasNodeConstants; import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.szr.SzrClient; import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData; 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.AuthBlockSigningService; import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.ICcSpecificEidProcessingService; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.szr.SzrClient; import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.EidasResponseUtils; import at.gv.egiz.eaaf.core.api.data.EaafConstants; import at.gv.egiz.eaaf.core.api.data.PvpAttributeDefinitions; @@ -48,36 +73,14 @@ import at.gv.egiz.eaaf.core.impl.idp.auth.data.SimpleIdentityLinkAssertionParser import at.gv.egiz.eaaf.core.impl.idp.auth.modules.AbstractAuthServletTask; import at.gv.egiz.eaaf.core.impl.utils.DomUtils; import at.gv.egiz.eaaf.core.impl.utils.XPathUtils; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; import eu.eidas.auth.commons.attribute.AttributeDefinition; import eu.eidas.auth.commons.attribute.AttributeValue; import eu.eidas.auth.commons.light.ILightResponse; import eu.eidas.auth.commons.protocol.eidas.impl.PostalAddress; import lombok.Data; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import org.joda.time.DateTime; -import org.jose4j.lang.JoseException; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.xml.sax.SAXException; import szrservices.IdentityLinkType; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.xml.parsers.ParserConfigurationException; -import java.io.IOException; -import java.io.InputStream; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - /** * Task that creates the IdentityLink for an eIDAS authenticated person. * Input: @@ -127,10 +130,14 @@ public class CreateIdentityLinkTask extends AbstractAuthServletTask { public void execute(ExecutionContext executionContext, HttpServletRequest request, HttpServletResponse response) throws TaskExecutionException { try { + + /*TODO: needs refactoring because we has to be operate on national identifiers + * because matching and insert ERnP was already done!! + */ final ILightResponse eidasResponse = getAuthProcessDataWrapper() .getGenericDataFromSession(Constants.DATA_FULL_EIDAS_RESPONSE, ILightResponse.class); final Map eidasAttributes = convertEidasAttrToSimpleMap( - eidasResponse.getAttributes().getAttributeMap()); + eidasResponse.getAttributes().getAttributeMap()); final SimpleEidasData eidData = eidPostProcessor.postProcess(eidasAttributes); //final SimpleEidasData eidData = // getAuthProcessDataWrapper().getGenericDataFromSession(Constants.DATA_SIMPLE_EIDAS, SimpleEidasData.class); @@ -192,7 +199,7 @@ public class CreateIdentityLinkTask extends AbstractAuthServletTask { private void executeEidMode(SimpleEidasData eidData, String personalIdentifier) throws JsonProcessingException, EaafException, JoseException { - // get encrypted baseId + // get encrypted baseId String vsz = szrClient.getEncryptedStammzahl(eidData); //write revision-Log entry and extended infos personal-identifier mapping diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/CreateNewErnpEntryTask.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/CreateNewErnpEntryTask.java index 025f3475..69b127d8 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/CreateNewErnpEntryTask.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/CreateNewErnpEntryTask.java @@ -23,18 +23,19 @@ package at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.stereotype.Component; + import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.szr.SzrClient; import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.szr.SzrClient; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.MatchingTaskUtils; import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext; import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException; -import at.gv.egiz.eaaf.core.impl.idp.auth.data.AuthProcessDataWrapper; import at.gv.egiz.eaaf.core.impl.idp.auth.modules.AbstractAuthServletTask; import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; /** * Task that searches ERnP and ZMR before adding person to SZR. @@ -69,9 +70,11 @@ public class CreateNewErnpEntryTask extends AbstractAuthServletTask { public void execute(ExecutionContext executionContext, HttpServletRequest request, HttpServletResponse response) throws TaskExecutionException { try { - SimpleEidasData simpleEidasData = getInitialEidasData(); + SimpleEidasData simpleEidasData = MatchingTaskUtils.getInitialEidasData(pendingReq); + // TODO When to do eidPostProcessor.postProcess on the eidas attributes? String vsz = szrClient.createNewErnpEntry(simpleEidasData); + // TODO what to do with the VSZ now log.info("VSZ: {}", vsz); } catch (final Exception e) { @@ -80,12 +83,4 @@ public class CreateNewErnpEntryTask extends AbstractAuthServletTask { } } - private SimpleEidasData getInitialEidasData() { - return getAuthProcessDataWrapper().getGenericDataFromSession(Constants.DATA_SIMPLE_EIDAS, SimpleEidasData.class); - } - - private AuthProcessDataWrapper getAuthProcessDataWrapper() { - return pendingReq.getSessionData(AuthProcessDataWrapper.class); - } - } diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/InitialSearchTask.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/InitialSearchTask.java index a6e0bca8..1563d6df 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/InitialSearchTask.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/InitialSearchTask.java @@ -23,43 +23,44 @@ package at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks; +import static at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants.TRANSITION_TO_CREATE_NEW_ERNP_ENTRY_TASK; +import static at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants.TRANSITION_TO_GENERATE_OTHER_LOGIN_METHOD_GUI_TASK; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang3.StringUtils; +import org.jetbrains.annotations.NotNull; +import org.joda.time.DateTime; +import org.springframework.stereotype.Component; + +import com.google.common.collect.ImmutableMap; +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.dao.MergedRegisterSearchResult; 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.ManualFixNecessaryException; import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.WorkflowException; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.handler.CountrySpecificDetailSearchProcessor; import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.ICcSpecificEidProcessingService; import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService.RegisterOperationStatus; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService.RegisterSearchResult; import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.EidasResponseUtils; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.MatchingTaskUtils; import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext; import at.gv.egiz.eaaf.core.exceptions.EaafStorageException; import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException; -import at.gv.egiz.eaaf.core.impl.idp.auth.data.AuthProcessDataWrapper; import at.gv.egiz.eaaf.core.impl.idp.auth.modules.AbstractAuthServletTask; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; import eu.eidas.auth.commons.attribute.AttributeDefinition; import eu.eidas.auth.commons.attribute.AttributeValue; import eu.eidas.auth.commons.light.ILightResponse; import eu.eidas.auth.commons.protocol.eidas.impl.PostalAddress; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import org.joda.time.DateTime; -import org.springframework.stereotype.Component; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import static at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants.TRANSITION_TO_CREATE_NEW_ERNP_ENTRY_TASK; -import static at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants.TRANSITION_TO_GENERATE_OTHER_LOGIN_METHOD_GUI_TASK; /** * Task that searches registers (ERnP and ZMR) before adding person to SZR. @@ -91,23 +92,19 @@ import static at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants.TRANSIT @SuppressWarnings("PMD.TooManyStaticImports") public class InitialSearchTask extends AbstractAuthServletTask { - private final List handlers; private final RegisterSearchService registerSearchService; private final ICcSpecificEidProcessingService eidPostProcessor; /** * Constructor. - * @param handlers List of countrySpecificSearchProcessors * @param registerSearchService Service for register search access * @param eidPostProcessor Country-Specific post processing of attributes */ - public InitialSearchTask(List handlers, - RegisterSearchService registerSearchService, + public InitialSearchTask(RegisterSearchService registerSearchService, ICcSpecificEidProcessingService eidPostProcessor) { this.registerSearchService = registerSearchService; - this.handlers = handlers; this.eidPostProcessor = eidPostProcessor; - log.info("Init with {} country specific detail search services", handlers.size()); + } @Override @@ -115,126 +112,124 @@ public class InitialSearchTask extends AbstractAuthServletTask { throws TaskExecutionException { try { final SimpleEidasData eidasData = convertEidasAttrToSimpleData(); - storeInitialEidasData(eidasData); + MatchingTaskUtils.storeInitialEidasData(pendingReq, eidasData); step2RegisterSearchWithPersonIdentifier(executionContext, eidasData); + + } catch (WorkflowException e) { + throw new TaskExecutionException(pendingReq, "Initial search failed", e); + } catch (final Exception e) { log.error("Initial search failed", e); - throw new TaskExecutionException(pendingReq, "Initial search failed", e); + throw new TaskExecutionException(pendingReq, "Initial search failed with a generic error", e); + } } private void step2RegisterSearchWithPersonIdentifier( - ExecutionContext executionContext, SimpleEidasData eidasData) - throws TaskExecutionException, EaafStorageException, ManualFixNecessaryException { - log.trace("Starting step2RegisterSearchWithPersonIdentifier"); - MergedRegisterSearchResult initialSearchResult = registerSearchService.searchWithPersonIdentifier(eidasData); - storeInitialRegisterResult(initialSearchResult); - int resultCount = initialSearchResult.getResultCount(); - if (resultCount == 0) { - step5CountrySpecificSearchCheck(executionContext, initialSearchResult, eidasData); - } else if (resultCount == 1) { - step3CheckRegisterUpdateNecessary(initialSearchResult, eidasData); - } else { - throw new ManualFixNecessaryException(eidasData); - } - } - - private void step3CheckRegisterUpdateNecessary( - MergedRegisterSearchResult initialSearchResult, SimpleEidasData eidasData) - throws ManualFixNecessaryException { - log.trace("Starting step3CheckRegisterUpdateNecessary"); - try { - if (eidasData.equalsRegisterData(initialSearchResult)) { - storeMatchingBpk(initialSearchResult.getBpk()); + ExecutionContext executionContext, SimpleEidasData eidasData) throws WorkflowException, EaafStorageException { + try { + log.trace("Starting step2RegisterSearchWithPersonIdentifier"); + RegisterSearchResult initialSearchResult = registerSearchService.searchWithPersonIdentifier(eidasData); + int resultCount = initialSearchResult.getResultCount(); + if (resultCount == 0) { + step6CountrySpecificSearch(executionContext, initialSearchResult.getOperationStatus(), eidasData); + + } else if (resultCount == 1) { + // find person by PersonalIdentifier --> finalize first matching task + initialSearchResult.setMatchingFinished(true); + foundMatchFinializeTask(initialSearchResult, eidasData); + } else { - // TODO Update "initialSearchResult" in register with "eidasData" from login not possible for now - log.info("Update in Register"); - storeMatchingBpk(initialSearchResult.getBpk()); + throw new WorkflowException("step2RegisterSearchWithPersonIdentifier", + "More than one entry with unique personal-identifier", true); + } - } catch (WorkflowException | EaafStorageException e) { - throw new ManualFixNecessaryException(eidasData); + + } catch (WorkflowException e) { + //TODO: what we do in case of a workflow error and manual matching are necessary?? + + log.warn("Workflow error during matching step: {}. Reason: {}", e.getProcessStepName(), e.getErrorReason()); + throw e; + } } - - private void step5CountrySpecificSearchCheck( - ExecutionContext executionContext, MergedRegisterSearchResult initialSearchResult, SimpleEidasData eidasData) - throws TaskExecutionException, ManualFixNecessaryException, EaafStorageException { - log.trace("Starting step5CheckAndPerformCountrySpecificSearchIfPossible"); - CountrySpecificDetailSearchProcessor specificHandler = findSpecificProcessor(eidasData); - if (specificHandler != null) { - step6CountrySpecificSearch(executionContext, specificHandler, initialSearchResult, eidasData); + + private void step6CountrySpecificSearch( + ExecutionContext executionContext, RegisterOperationStatus registerOperationStatus, SimpleEidasData eidasData) + throws EaafStorageException, WorkflowException { + + log.trace("Starting 'step6CountrySpecificSearch' ... "); + RegisterSearchResult countrySpecificResult = registerSearchService.searchWithCountrySpecifics( + registerOperationStatus, eidasData); + if (countrySpecificResult.getResultCount() == 0) { + log.trace("'step6CountrySpecificSearch' ends with no result. Forward to next matching step ... "); + step8RegisterSearchWithMds(executionContext, countrySpecificResult.getOperationStatus(), eidasData); + + } else if (countrySpecificResult.getResultCount() == 1) { + log.trace("'step6CountrySpecificSearch' finds a person. Forward to 'step7aKittProcess' step ... "); + registerSearchService.step7aKittProcess(countrySpecificResult, eidasData); + + // find person by country-specific information --> finalize first matching task + countrySpecificResult.setMatchingFinished(true); + foundMatchFinializeTask(countrySpecificResult, eidasData); + } else { - step8RegisterSearchWithMds(executionContext, eidasData); - } + throw new WorkflowException("step6CountrySpecificSearch", + "More than one entry with unique country-specific informations", true); + + } } - @Nullable - private CountrySpecificDetailSearchProcessor findSpecificProcessor(SimpleEidasData eidasData) { - final String citizenCountry = eidasData.getCitizenCountryCode(); - for (final CountrySpecificDetailSearchProcessor processor : handlers) { - if (processor.canHandle(citizenCountry, eidasData)) { - log.debug("Found suitable search handler for {} by using: {}", citizenCountry, processor.getName()); - return processor; - } - } - return null; - } - - private void step6CountrySpecificSearch(ExecutionContext executionContext, - CountrySpecificDetailSearchProcessor processor, - MergedRegisterSearchResult initialSearchResult, - SimpleEidasData eidasData) - throws TaskExecutionException, ManualFixNecessaryException, EaafStorageException { - log.trace("Starting step6CountrySpecificSearch"); - MergedRegisterSearchResult countrySearchResult = processor.search(eidasData); - int resultCount = countrySearchResult.getResultCount(); - if (resultCount == 0) { - step8RegisterSearchWithMds(executionContext, eidasData); - } else if (resultCount == 1) { - String bpk = registerSearchService - .step7aKittProcess(initialSearchResult, countrySearchResult, eidasData, pendingReq); - storeMatchingBpk(bpk); - } else { - throw new ManualFixNecessaryException(eidasData); - } - } - - private void step8RegisterSearchWithMds(ExecutionContext executionContext, SimpleEidasData eidasData) - throws EaafStorageException { + private void step8RegisterSearchWithMds(ExecutionContext executionContext, + RegisterOperationStatus registerOperationStatus, SimpleEidasData eidasData) + throws EaafStorageException, WorkflowException { log.trace("Starting step8RegisterSearchWithMds"); - MergedRegisterSearchResult registerData = registerSearchService.searchWithMds(eidasData); + RegisterSearchResult registerData = registerSearchService.searchWithMds(registerOperationStatus, eidasData); + if (registerData.getResultCount() == 0) { + log.debug("Matching step: 'step8RegisterSearchWithMds' has no result. Forward to create new ERnP entry ... "); executionContext.put(TRANSITION_TO_CREATE_NEW_ERNP_ENTRY_TASK, true); + } else { - storeFurtherRegisterResults(registerData); + log.debug("Matching step: 'step8RegisterSearchWithMds' has #{} results. " + + "Forward to GUI based matching steps ... ", registerData.getResultCount()); + + MatchingTaskUtils.storeInitialRegisterResult(pendingReq, registerData); executionContext.put(TRANSITION_TO_GENERATE_OTHER_LOGIN_METHOD_GUI_TASK, true); + } } - private void storeInitialRegisterResult(MergedRegisterSearchResult registerData) throws EaafStorageException { - getAuthProcessDataWrapper().setGenericDataToSession(Constants.DATA_INITIAL_REGISTER_RESULT, registerData); - } - - private void storeFurtherRegisterResults(MergedRegisterSearchResult registerData) throws EaafStorageException { - getAuthProcessDataWrapper().setGenericDataToSession(Constants.DATA_FURTHER_REGISTER_RESULT, registerData); - } - private void storeInitialEidasData(SimpleEidasData eidasData) throws EaafStorageException { - getAuthProcessDataWrapper().setGenericDataToSession(Constants.DATA_SIMPLE_EIDAS, eidasData); - } - private void storeMatchingBpk(String bpk) throws EaafStorageException { - getAuthProcessDataWrapper().setGenericDataToSession(Constants.DATA_RESULT_MATCHING_BPK, bpk); + private void foundMatchFinializeTask(RegisterSearchResult searchResult, SimpleEidasData eidasData) + throws WorkflowException, EaafStorageException { + // check if register update is required + step3CheckRegisterUpdateNecessary(searchResult, eidasData); + + // store search result + MatchingTaskUtils.storeInitialRegisterResult(pendingReq, searchResult); + } - - private AuthProcessDataWrapper getAuthProcessDataWrapper() { - return pendingReq.getSessionData(AuthProcessDataWrapper.class); + + private void step3CheckRegisterUpdateNecessary(RegisterSearchResult initialSearchResult, + SimpleEidasData eidasData) throws WorkflowException { + log.trace("Starting step3CheckRegisterUpdateNecessary"); + if (!eidasData.equalsRegisterData(initialSearchResult)) { + // TODO Update "initialSearchResult" in register with "eidasData" from login not possible for now + log.info("Skipping update-register-information step, because it's not supported yet"); + + } else { + log.debug("Register information match to eIDAS information. No update requird"); + + } + } - + @NotNull private SimpleEidasData convertEidasAttrToSimpleData() throws EidasAttributeException, EidPostProcessingException { - final ILightResponse eidasResponse = getAuthProcessDataWrapper() + final ILightResponse eidasResponse = MatchingTaskUtils.getAuthProcessDataWrapper(pendingReq) .getGenericDataFromSession(Constants.DATA_FULL_EIDAS_RESPONSE, ILightResponse.class); Map simpleMap = convertEidasAttrToSimpleMap(eidasResponse.getAttributes().getAttributeMap()); return eidPostProcessor.postProcess(simpleMap); diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveAustrianResidenceGuiResponseTask.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveAustrianResidenceGuiResponseTask.java index 3b7f361c..b18104fa 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveAustrianResidenceGuiResponseTask.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveAustrianResidenceGuiResponseTask.java @@ -23,29 +23,31 @@ package at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks; +import java.util.Enumeration; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang.StringEscapeUtils; +import org.jetbrains.annotations.NotNull; +import org.springframework.stereotype.Component; + import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.MergedRegisterSearchResult; import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData; import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.InvalidUserInputException; import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.ManualFixNecessaryException; import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.WorkflowException; import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService.RegisterSearchResult; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.MatchingTaskUtils; import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext; import at.gv.egiz.eaaf.core.exceptions.EaafStorageException; import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException; -import at.gv.egiz.eaaf.core.impl.idp.auth.data.AuthProcessDataWrapper; import at.gv.egiz.eaaf.core.impl.idp.auth.modules.AbstractAuthServletTask; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang.StringEscapeUtils; -import org.jetbrains.annotations.NotNull; -import org.springframework.stereotype.Component; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.util.Enumeration; /** @@ -69,6 +71,7 @@ import java.util.Enumeration; * * @author amarsalek * @author ckollmann + * @author tlenz */ @Slf4j @Component("ReceiveAustrianResidenceGuiResponseTask") @@ -98,72 +101,88 @@ public class ReceiveAustrianResidenceGuiResponseTask extends AbstractAuthServlet public void execute(ExecutionContext executionContext, HttpServletRequest request, HttpServletResponse response) throws TaskExecutionException { log.trace("Starting ReceiveAustrianResidenceGuiResponseTask"); - UserInput input = parseHtmlInput(request); + + UserInput input = parseHtmlInput(request); if (!input.isFormerResidenceAvailable()) { moveToNextTask(executionContext); return; + } + + //TODO: Here, we need an error handling an can not stop full process if form input was invalid + //TODO: check minimum form elements + /*TODO: maybe we can switch to custom controller and use WebMVC form-binding feature. + * Binding element can be add as attribute to this request + */ if (input.getStreet().isEmpty() || input.getCity().isEmpty() || input.getZipcode().isEmpty()) { // HTML form should ensure that mandatory fields are set => this should never happen - throw new TaskExecutionException(pendingReq, "Invalid user input", new InvalidUserInputException()); + throw new TaskExecutionException(pendingReq, "Invalid user input", + new InvalidUserInputException("module.eidasauth.matching.06")); + } - // TODO Also search with MDS? But MDS Search has already happened? + + + try { - SimpleEidasData eidasData = getInitialEidasData(); - MergedRegisterSearchResult residencyResult = registerSearchService - .searchWithResidence(input.zipcode, input.city, input.street); + SimpleEidasData eidasData = MatchingTaskUtils.getInitialEidasData(pendingReq); + RegisterSearchResult initialSearchResult = MatchingTaskUtils.getInitialRegisterResult(pendingReq); + + RegisterSearchResult residencyResult = + registerSearchService.searchWithResidence(initialSearchResult.getOperationStatus(), + eidasData, input.zipcode, input.city, input.street); if (residencyResult.getResultCount() == 0) { + //TODO: her we should add a GUI step of result is zero to inform user an forward process by click moveToNextTask(executionContext); + } else if (residencyResult.getResultCount() == 1) { compareSearchResultWithInitialData(executionContext, residencyResult, eidasData); + } else { + /*TODO: align with form generation task and to better error handling in case of more-than-one result. + * Maybe the user has to provide more information. + */ throw new TaskExecutionException(pendingReq, "Manual Fix necessary", new ManualFixNecessaryException(eidasData)); + } + } catch (EaafStorageException e) { log.error("Search with residency data failed", e); throw new TaskExecutionException(pendingReq, "Search with residency data failed", e); + } } - private void compareSearchResultWithInitialData(ExecutionContext executionContext, - MergedRegisterSearchResult residencyResult, SimpleEidasData eidasData) + private void compareSearchResultWithInitialData(ExecutionContext executionContext, + RegisterSearchResult residencyResult, SimpleEidasData eidasData) throws TaskExecutionException, EaafStorageException { - try { - MergedRegisterSearchResult initialSearchResult = getInitialRegisterResult(); - // TODO search "residencyResult" in "initialSearchResult"!? + try { + /*TODO: check 'equalsRegisterData' because this method maybe this method evaluate to an invalid result. + * See TODO in methods body + */ if (eidasData.equalsRegisterData(residencyResult)) { - String bpk = registerSearchService - .step7aKittProcess(initialSearchResult, residencyResult, eidasData, pendingReq); - storeMatchingBpk(bpk); + // update register information + registerSearchService.step7aKittProcess(residencyResult, eidasData); + + // store search result to re-used in CreateIdentityLink step, because there we need bPK and MDS + residencyResult.setMatchingFinished(true); + MatchingTaskUtils.storeInitialRegisterResult(pendingReq, residencyResult); + } else { moveToNextTask(executionContext); + } + } catch (WorkflowException e) { throw new TaskExecutionException(pendingReq, "Search failed", new ManualFixNecessaryException(eidasData)); + } } - private SimpleEidasData getInitialEidasData() { - return getAuthProcessDataWrapper().getGenericDataFromSession(Constants.DATA_SIMPLE_EIDAS, SimpleEidasData.class); - } - - private MergedRegisterSearchResult getInitialRegisterResult() { - return getAuthProcessDataWrapper().getGenericDataFromSession(Constants.DATA_INITIAL_REGISTER_RESULT, - MergedRegisterSearchResult.class); - } - - private void storeMatchingBpk(String bpk) throws EaafStorageException { - getAuthProcessDataWrapper().setGenericDataToSession(Constants.DATA_RESULT_MATCHING_BPK, bpk); - } - - private AuthProcessDataWrapper getAuthProcessDataWrapper() { - return pendingReq.getSessionData(AuthProcessDataWrapper.class); - } - private void moveToNextTask(ExecutionContext executionContext) { // Later on, this should transition to Step 20 executionContext.put(Constants.TRANSITION_TO_CREATE_NEW_ERNP_ENTRY_TASK, true); + } private @NotNull UserInput parseHtmlInput(HttpServletRequest request) { @@ -174,15 +193,20 @@ public class ReceiveAustrianResidenceGuiResponseTask extends AbstractAuthServlet String escaped = StringEscapeUtils.escapeHtml(request.getParameter(paramName)); if (PARAM_FORMER_RESIDENCE_AVAILABLE.equalsIgnoreCase(paramName)) { result.setFormerResidenceAvailable(Boolean.parseBoolean(escaped)); + } else if (PARAM_STREET.equalsIgnoreCase(paramName)) { result.setStreet(escaped); + } else if (PARAM_CITY.equalsIgnoreCase(paramName)) { result.setCity(escaped); + } else if (PARAM_ZIPCODE.equalsIgnoreCase(paramName)) { result.setZipcode(escaped); + } } return result; + } } diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveMobilePhoneSignatureResponseTask.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveMobilePhoneSignatureResponseTask.java index a6ff345d..fd469f49 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveMobilePhoneSignatureResponseTask.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveMobilePhoneSignatureResponseTask.java @@ -23,24 +23,45 @@ package at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks; +import static at.asitplus.eidas.specific.modules.auth.eidas.v2.idaustriaclient.IdAustriaClientAuthConstants.MODULE_NAME_FOR_LOGGING; + +import java.io.IOException; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.xml.transform.TransformerException; + +import org.apache.commons.lang3.StringUtils; +import org.jetbrains.annotations.NotNull; +import org.opensaml.core.xml.io.MarshallingException; +import org.opensaml.messaging.decoder.MessageDecodingException; +import org.opensaml.saml.saml2.core.Response; +import org.opensaml.saml.saml2.core.StatusCode; +import org.opensaml.saml.saml2.metadata.IDPSSODescriptor; +import org.springframework.stereotype.Component; + import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.MergedRegisterSearchResult; +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.dao.SimpleMobileSignatureData; import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.InvalidUserInputException; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.ManualFixNecessaryException; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.WorkflowException; import at.asitplus.eidas.specific.modules.auth.eidas.v2.idaustriaclient.IdAustriaClientAuthConstants; import at.asitplus.eidas.specific.modules.auth.eidas.v2.idaustriaclient.IdAustriaClientAuthEventConstants; import at.asitplus.eidas.specific.modules.auth.eidas.v2.idaustriaclient.provider.IdAustriaClientAuthCredentialProvider; import at.asitplus.eidas.specific.modules.auth.eidas.v2.idaustriaclient.provider.IdAustriaClientAuthMetadataProvider; import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService.RegisterSearchResult; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.MatchingTaskUtils; import at.gv.egiz.eaaf.core.api.data.PvpAttributeDefinitions; import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext; import at.gv.egiz.eaaf.core.exceptions.EaafBuilderException; -import at.gv.egiz.eaaf.core.exceptions.EaafStorageException; import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException; import at.gv.egiz.eaaf.core.impl.data.Pair; -import at.gv.egiz.eaaf.core.impl.idp.auth.data.AuthProcessDataWrapper; import at.gv.egiz.eaaf.core.impl.idp.auth.modules.AbstractAuthServletTask; import at.gv.egiz.eaaf.modules.pvp2.api.binding.IDecoder; import at.gv.egiz.eaaf.modules.pvp2.exception.CredentialsNotAvailableException; @@ -58,23 +79,6 @@ import at.gv.egiz.eaaf.modules.pvp2.sp.exception.AssertionValidationExeption; import at.gv.egiz.eaaf.modules.pvp2.sp.exception.AuthnResponseValidationException; import at.gv.egiz.eaaf.modules.pvp2.sp.impl.utils.AssertionAttributeExtractor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.jetbrains.annotations.NotNull; -import org.opensaml.core.xml.io.MarshallingException; -import org.opensaml.messaging.decoder.MessageDecodingException; -import org.opensaml.saml.saml2.core.Response; -import org.opensaml.saml.saml2.core.StatusCode; -import org.opensaml.saml.saml2.metadata.IDPSSODescriptor; -import org.springframework.stereotype.Component; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.xml.transform.TransformerException; -import java.io.IOException; -import java.util.List; -import java.util.Set; - -import static at.asitplus.eidas.specific.modules.auth.eidas.v2.idaustriaclient.IdAustriaClientAuthConstants.MODULE_NAME_FOR_LOGGING; /** * Task that receives the SAML2 response from ID Austria system. @@ -144,95 +148,84 @@ public class ReceiveMobilePhoneSignatureResponseTask extends AbstractAuthServlet InboundMessage inboundMessage = decodeAndVerifyMessage(request, response, decoder, comparator); Pair processedMsg = validateAssertion((PvpSProfileResponse) inboundMessage); if (processedMsg.getSecond()) { - stopProcessFromUserDecision(executionContext, request, response); + // forward to next matching step in case of ID Autria authentication was stopped by user + executionContext.put(Constants.TRANSITION_TO_GENERATE_GUI_QUERY_AUSTRIAN_RESIDENCE_TASK, true); return; + } + // validate SAML2 response validateEntityId(inboundMessage); + log.info("Receive a valid assertion from IDP " + inboundMessage.getEntityID()); + + // load already existing information from session + SimpleEidasData eidasData = MatchingTaskUtils.getInitialEidasData(pendingReq); + RegisterSearchResult initialSearchResult = MatchingTaskUtils.getInitialRegisterResult(pendingReq); + + // extract user information from ID Austria authentication AssertionAttributeExtractor extractor = new AssertionAttributeExtractor(processedMsg.getFirst().getResponse()); - - /* - * SAML2 response ist bereits vollständig validiert und die Attribute können aus dem - * ausgelesen werden. - * Die AttributeNamen sind entsprechend PVP Spezifikation, z.B. PvpAttributeDefinitions.GIVEN_NAME_NAME - * - * --------------------------------------------------------------------------------------------- - * - * TODO: ab hier müssen wir wohl was anpassen - * - */ - - MergedRegisterSearchResult initialSearchResult = getInitialRegisterResult(); - SimpleEidasData eidasData = getInitialEidasData(); - String bpkZp = extractBpkZp(extractor, eidasData); - - // TODO Hier ist wohl keine Register-Suche notwendig, denn das ergibt sicher einen Treffer - // TODO Soll: In den Ergebnissen aus Step8 matchen! Über BPK matchen, und dann schauen, ob zumindest - // Geburtsdatum passt - MergedRegisterSearchResult registerResult = registerSearchService.searchWithBpkZp(bpkZp); - if (registerResult.getResultCount() == 0) { - executionContext.put(Constants.TRANSITION_TO_GENERATE_GUI_QUERY_AUSTRIAN_RESIDENCE_TASK, true); - return; - } else if (registerResult.getResultCount() == 1) { - String bpk = registerSearchService - .step7aKittProcess(initialSearchResult, registerResult, eidasData, pendingReq); - storeMatchingBpk(bpk); - return; - } else if (registerResult.getResultCount() > 1) { - throw new ManualFixNecessaryException(eidasData); + SimpleMobileSignatureData simpleMobileSignatureData = getAuthDataFromInterfederation(extractor); + + // check if MDS from ID Austria authentication matchs to eIDAS authentication + if (!simpleMobileSignatureData.equalsSimpleEidasData(eidasData)) { + // user has cheated!? + throw new InvalidUserInputException("module.eidasauth.matching.05"); + } - - // set NeedConsent to false, because user gives consent during authentication - pendingReq.setNeedUserConsent(false); - log.info("Receive a valid assertion from IDP " + inboundMessage.getEntityID()); + + // search entry in initial search result from steps before and build new RegisterSearchResult + RegisterSearchResult registerResult = new RegisterSearchResult(initialSearchResult.getOperationStatus(), + extractEntriesByBpk(initialSearchResult.getResultsZmr().stream(), simpleMobileSignatureData.getBpk()), + extractEntriesByBpk(initialSearchResult.getResultsErnp().stream(), simpleMobileSignatureData.getBpk())); + + if (registerResult.getResultCount() != 1) { + throw new WorkflowException("matchWithIDAustriaAuthentication", + "Suspect state detected. MDS matches to eIDAS authentication " + + "but register search-result with MDS contains #" + registerResult.getResultCount() + + " entry with bPK from ID Austria authentication", false); + + } else { + // perform kit operation + registerSearchService.step7aKittProcess(registerResult, eidasData); + + // store search result to re-used in CreateIdentityLink step, because there we need bPK and MDS + registerResult.setMatchingFinished(true); + MatchingTaskUtils.storeInitialRegisterResult(pendingReq, registerResult); + + } + } catch (final AuthnResponseValidationException e) { throw new TaskExecutionException(pendingReq, ERROR_MSG_03, e); + } catch (MessageDecodingException | SecurityException | SamlSigningException e) { //final String samlRequest = request.getParameter("SAMLRequest"); //log.debug("Receive INVALID PVP Response from 'ms-specific eIDAS node': {}", // samlRequest, null, e); throw new TaskExecutionException(pendingReq, ERROR_MSG_00, new AuthnResponseValidationException(ERROR_PVP_11, new Object[]{MODULE_NAME_FOR_LOGGING}, e)); + } catch (IOException | MarshallingException | TransformerException e) { log.debug("Processing PVP response from 'ms-specific eIDAS node' FAILED.", e); throw new TaskExecutionException(pendingReq, ERROR_MSG_01, new AuthnResponseValidationException(ERROR_PVP_12, new Object[]{MODULE_NAME_FOR_LOGGING, e.getMessage()}, e)); + } catch (final CredentialsNotAvailableException e) { log.debug("PVP response decryption FAILED. No credential found.", e); throw new TaskExecutionException(pendingReq, ERROR_MSG_02, new AuthnResponseValidationException(ERROR_PVP_10, new Object[]{MODULE_NAME_FOR_LOGGING}, e)); + } catch (final Exception e) { // todo catch ManualFixNecessaryException in any other way? log.debug("PVP response validation FAILED. Msg:" + e.getMessage(), e); throw new TaskExecutionException(pendingReq, ERROR_MSG_03, new AuthnResponseValidationException(ERROR_PVP_12, new Object[]{MODULE_NAME_FOR_LOGGING, e.getMessage()}, e)); + } } - private String extractBpkZp(AssertionAttributeExtractor extractor, - SimpleEidasData eidasData) throws EaafBuilderException, InvalidUserInputException { - SimpleMobileSignatureData simpleMobileSignatureData = getAuthDataFromInterfederation(extractor); - if (!simpleMobileSignatureData.equalsSimpleEidasData(eidasData)) { - throw new InvalidUserInputException(); // user has cheated!? - } - return simpleMobileSignatureData.getBpk(); - } + private List extractEntriesByBpk(Stream stream, String bpk) { + return stream.filter(el -> bpk.equals(el.getBpk())).collect(Collectors.toList()); - private SimpleEidasData getInitialEidasData() { - return getAuthProcessDataWrapper().getGenericDataFromSession(Constants.DATA_SIMPLE_EIDAS, SimpleEidasData.class); - } - - private MergedRegisterSearchResult getInitialRegisterResult() { - return getAuthProcessDataWrapper().getGenericDataFromSession(Constants.DATA_INITIAL_REGISTER_RESULT, - MergedRegisterSearchResult.class); - } - - private void storeMatchingBpk(String bpk) throws EaafStorageException { - getAuthProcessDataWrapper().setGenericDataToSession(Constants.DATA_RESULT_MATCHING_BPK, bpk); - } - - private AuthProcessDataWrapper getAuthProcessDataWrapper() { - return pendingReq.getSessionData(AuthProcessDataWrapper.class); } @NotNull @@ -359,13 +352,15 @@ public class ReceiveMobilePhoneSignatureResponseTask extends AbstractAuthServlet } if (PvpAttributeDefinitions.BIRTHDATE_NAME.equals(attrName)) { builder.dateOfBirth(extractor.getSingleAttributeValue(attrName)); - } + } if (PvpAttributeDefinitions.EID_CITIZEN_EIDAS_QAA_LEVEL_NAME.equals(attrName)) { - getAuthProcessDataWrapper().setQaaLevel(extractor.getSingleAttributeValue(attrName)); + MatchingTaskUtils.getAuthProcessDataWrapper(pendingReq).setQaaLevel( + extractor.getSingleAttributeValue(attrName)); } } - getAuthProcessDataWrapper().setIssueInstant(extractor.getAssertionIssuingDate()); + MatchingTaskUtils.getAuthProcessDataWrapper(pendingReq).setIssueInstant(extractor.getAssertionIssuingDate()); return builder.build(); + } diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveOtherLoginMethodGuiResponseTask.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveOtherLoginMethodGuiResponseTask.java index e139b280..59a6886a 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveOtherLoginMethodGuiResponseTask.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/tasks/ReceiveOtherLoginMethodGuiResponseTask.java @@ -23,6 +23,14 @@ package at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks; +import java.util.Enumeration; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang.StringEscapeUtils; +import org.springframework.stereotype.Component; + import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SelectedLoginMethod; import at.asitplus.eidas.specific.modules.auth.eidas.v2.exception.InvalidUserInputException; @@ -30,12 +38,6 @@ import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext; import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException; import at.gv.egiz.eaaf.core.impl.idp.auth.modules.AbstractAuthServletTask; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang.StringEscapeUtils; -import org.springframework.stereotype.Component; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.util.Enumeration; /** * Handles user's selection from {@link GenerateOtherLoginMethodGuiTask}. @@ -69,13 +71,16 @@ public class ReceiveOtherLoginMethodGuiResponseTask extends AbstractAuthServletT SelectedLoginMethod selection = SelectedLoginMethod.valueOf(extractUserSelection(request)); executionContext.put(Constants.REQ_SELECTED_LOGIN_METHOD_PARAMETER, selection); transitionToNextTask(executionContext, selection); + } catch (final IllegalArgumentException e) { log.error("Parsing selected login method FAILED.", e); throw new TaskExecutionException(pendingReq, "Parsing selected login method FAILED.", - new InvalidUserInputException()); + new InvalidUserInputException("module.eidasauth.matching.98")); + } catch (final Exception e) { log.error("Parsing selected login method FAILED.", e); throw new TaskExecutionException(pendingReq, "Parsing selected login method FAILED.", e); + } } @@ -85,9 +90,12 @@ public class ReceiveOtherLoginMethodGuiResponseTask extends AbstractAuthServletT String paramName = paramNames.nextElement(); if (Constants.REQ_SELECTED_LOGIN_METHOD_PARAMETER.equalsIgnoreCase(paramName)) { return StringEscapeUtils.escapeHtml(request.getParameter(paramName)); + } } - throw new InvalidUserInputException(); + + throw new InvalidUserInputException("module.eidasauth.matching.98"); + } private void transitionToNextTask(ExecutionContext executionContext, SelectedLoginMethod selection) @@ -96,14 +104,18 @@ public class ReceiveOtherLoginMethodGuiResponseTask extends AbstractAuthServletT case EIDAS_LOGIN: executionContext.put(Constants.TRANSITION_TO_GENERATE_EIDAS_LOGIN, true); return; + case MOBILE_PHONE_SIGNATURE_LOGIN: executionContext.put(Constants.TRANSITION_TO_GENERATE_MOBILE_PHONE_SIGNATURE_REQUEST_TASK, true); return; + case NO_OTHER_LOGIN: executionContext.put(Constants.TRANSITION_TO_GENERATE_GUI_QUERY_AUSTRIAN_RESIDENCE_TASK, true); return; + default: - throw new InvalidUserInputException(); + throw new InvalidUserInputException("module.eidasauth.matching.98"); + } } diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/utils/EidasResponseUtils.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/utils/EidasResponseUtils.java index 3023bc0a..6b541135 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/utils/EidasResponseUtils.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/utils/EidasResponseUtils.java @@ -23,30 +23,33 @@ package at.asitplus.eidas.specific.modules.auth.eidas.v2.utils; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.annotation.Nullable; + +import org.apache.commons.lang3.StringUtils; +import org.joda.time.DateTime; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +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.gv.e_government.reference.namespace.persondata._20020228.PostalAddressType; import at.gv.egiz.eaaf.core.impl.data.Triple; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; import eu.eidas.auth.commons.attribute.AttributeDefinition; import eu.eidas.auth.commons.attribute.AttributeValue; import eu.eidas.auth.commons.attribute.AttributeValueMarshaller; import eu.eidas.auth.commons.attribute.AttributeValueMarshallingException; import eu.eidas.auth.commons.attribute.AttributeValueTransliterator; import eu.eidas.auth.commons.protocol.eidas.impl.PostalAddress; -import org.apache.commons.lang3.StringUtils; -import org.joda.time.DateTime; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.annotation.Nullable; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; public class EidasResponseUtils { private static final Logger log = LoggerFactory.getLogger(EidasResponseUtils.class); @@ -323,6 +326,21 @@ public class EidasResponseUtils { return (String) familyNameObj; } + /** + * Post-Process the eIDAS personal identifier attribute. + * + * @param personalIdentifierObj eIDAS personal identifier attribute-information + * @return formated user's full personal identifier + * @throws EidasAttributeException if NO attribute is available + */ + public static String processPersonalIdentifier(Object personalIdentifierObj) throws EidasAttributeException { + if (!(personalIdentifierObj instanceof String)) { + throw new EidasAttributeException(Constants.eIDAS_ATTR_PERSONALIDENTIFIER); + } + return (String) personalIdentifierObj; + } + + /** * Post-Process the eIDAS pseudonym to ERnB unique identifier. * diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/utils/MatchingTaskUtils.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/utils/MatchingTaskUtils.java new file mode 100644 index 00000000..5625a30d --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/utils/MatchingTaskUtils.java @@ -0,0 +1,88 @@ +package at.asitplus.eidas.specific.modules.auth.eidas.v2.utils; + +import javax.annotation.Nullable; + +import org.springframework.lang.NonNull; + +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.service.RegisterSearchService.RegisterSearchResult; +import at.gv.egiz.eaaf.core.api.IRequest; +import at.gv.egiz.eaaf.core.exceptions.EaafStorageException; +import at.gv.egiz.eaaf.core.impl.idp.auth.data.AuthProcessDataWrapper; + +public class MatchingTaskUtils { + + /** + * Get eIDAS log-in information from session. + * + * @param pendingReq Current pendingRequest + * @return eIDAS infos or null if not exist + */ + @Nullable + public static SimpleEidasData getInitialEidasData(IRequest pendingReq) { + return getAuthProcessDataWrapper(pendingReq).getGenericDataFromSession( + Constants.DATA_SIMPLE_EIDAS, SimpleEidasData.class); + + } + + /** + * Set eIDAS log-in information to session. + * + * @param pendingReq Current pendingRequest + * @param eidasData infos from eIDAS Proxy-Service + * @throws EaafStorageException In case of data can not be add into session + */ + @Nullable + public static void storeInitialEidasData(IRequest pendingReq, SimpleEidasData eidasData) + throws EaafStorageException { + getAuthProcessDataWrapper(pendingReq).setGenericDataToSession(Constants.DATA_SIMPLE_EIDAS, eidasData); + + } + + /** + * Get Matching result from session. + * + * @param pendingReq Current pendingRequest + * @return Matching result or null if not exist + */ + @Nullable + public static RegisterSearchResult getInitialRegisterResult(IRequest pendingReq) { + return getAuthProcessDataWrapper(pendingReq).getGenericDataFromSession(Constants.DATA_INITIAL_REGISTER_RESULT, + RegisterSearchResult.class); + + } + + /** + * Store matching result into session. + * + * @param pendingReq Current pendingRequest + * @param registerData Matching result information + * @throws EaafStorageException In case of data can not be add into session + */ + @Nullable + public static void storeInitialRegisterResult(IRequest pendingReq, RegisterSearchResult registerData) + throws EaafStorageException { + getAuthProcessDataWrapper(pendingReq).setGenericDataToSession( + Constants.DATA_INITIAL_REGISTER_RESULT, registerData); + + } + + /** + * Get holder for authentication information for the current process. + * + * @param pendingReq Current pendingRequest + * @return {@link AuthProcessDataWrapper} + */ + @NonNull + public static AuthProcessDataWrapper getAuthProcessDataWrapper(IRequest pendingReq) { + return pendingReq.getSessionData(AuthProcessDataWrapper.class); + + } + + private MatchingTaskUtils() { + //hide constructor in case of class contains only static methods + + } + +} diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/utils/VersionHolder.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/utils/VersionHolder.java new file mode 100644 index 00000000..dbe88d33 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/utils/VersionHolder.java @@ -0,0 +1,40 @@ +package at.asitplus.eidas.specific.modules.auth.eidas.v2.utils; + +import java.util.Optional; + +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.ApplicationContext; + +/** + * SpringBoot based implementation of an application-version holder. + * + * @author tlenz + * + */ +public class VersionHolder { + + private final String version; + + /** + * Build up a holder that contains the current version of this application. + * + * @param context SprintBoot context + */ + public VersionHolder(ApplicationContext context) { + version = context.getBeansWithAnnotation(SpringBootApplication.class).entrySet().stream() + .findFirst() + .flatMap(es -> Optional.ofNullable(es.getValue().getClass().getPackage().getImplementationVersion())) + .orElse("unknown"); + + } + + /** + * Get version of this application. + * + * @return version + */ + public String getVersion() { + return version; + + } +} diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/zmr/DummyZmrClient.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/zmr/DummyZmrClient.java index 80e61451..30a801a4 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/zmr/DummyZmrClient.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/zmr/DummyZmrClient.java @@ -23,55 +23,59 @@ package at.asitplus.eidas.specific.modules.auth.eidas.v2.zmr; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.RegisterResult; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData; +import java.math.BigInteger; +import java.util.Collections; + import org.springframework.stereotype.Service; -import java.util.Collections; -import java.util.List; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.zmr.IZmrClient; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.zmr.ZmrSoapClient.ZmrRegisterResult; +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.gv.bmi.namespace.zmr_su.zmr._20040201.PersonSuchenRequest; @Service("ZmrClientForeIDAS") public class DummyZmrClient implements IZmrClient { @Override - public List searchWithPersonIdentifier(String personIdentifier) { - return Collections.emptyList(); + public ZmrRegisterResult searchWithPersonIdentifier(BigInteger zmrProzessId, String personIdentifier) { + return new ZmrRegisterResult(Collections.emptyList(), null); + } @Override - public List searchWithMds(String givenName, String familyName, String dateOfBirth) { + public ZmrRegisterResult searchWithMds(BigInteger zmrProzessId, String givenName, String familyName, + String dateOfBirth, String countryCode) { //TODO will I only receive matches where all three values match perfectly? - return Collections.emptyList(); + return new ZmrRegisterResult(Collections.emptyList(), null); + } @Override - public List searchDeSpecific(String givenName, String familyName, String dateOfBirth, - String birthPlace, String birthName) { - //TODO - return Collections.emptyList(); - } - - @Override - public List searchItSpecific(String taxNumber) { - //TODO - return Collections.emptyList(); + public ZmrRegisterResult searchCountrySpecific(BigInteger zmrProzessId, PersonSuchenRequest personSearchDao, + String citizenCountryCode) throws EidasSAuthenticationException { + return new ZmrRegisterResult(Collections.emptyList(), null); + } @Override - public void update(RegisterResult registerResult, SimpleEidasData eidData) { + public void update(BigInteger zmrProzessId, RegisterResult registerResult, SimpleEidasData eidData) { //TODO } @Override - public List searchWithBpkZp(String bpkzp) { + public ZmrRegisterResult searchWithBpkZp(BigInteger zmrProzessId, String bpkzp) { //TODO - return Collections.emptyList(); + return new ZmrRegisterResult(Collections.emptyList(), null); } @Override - public List searchWithResidenceData(String zipcode, String city, String street) { + public ZmrRegisterResult searchWithResidenceData(BigInteger zmrProzessId, String givenName, String familyName, + String dateOfBirth, String zipcode, String city, String street) { // TODO - return Collections.emptyList(); + return new ZmrRegisterResult(Collections.emptyList(), null); } + } diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/zmr/IZmrClient.java b/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/zmr/IZmrClient.java deleted file mode 100644 index 5ca69d3d..00000000 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/zmr/IZmrClient.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2020 A-SIT Plus GmbH - * AT-specific eIDAS Connector has been developed in a cooperation between EGIZ, - * A-SIT Plus GmbH, A-SIT, and Graz University of Technology. - * - * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "License"); - * You may not use this work except in compliance with the License. - * You may obtain a copy of the License at: - * https://joinup.ec.europa.eu/news/understanding-eupl-v12 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * This product combines work with different licenses. See the "NOTICE" text - * file for details on the various modules and licenses. - * The "NOTICE" text file is part of the distribution. Any derivative works - * that you distribute must include a readable copy of the "NOTICE" text file. - */ - -package at.asitplus.eidas.specific.modules.auth.eidas.v2.zmr; - -import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.RegisterResult; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.SimpleEidasData; - -import java.util.List; - -public interface IZmrClient { - - List searchWithPersonIdentifier(String personIdentifier); - - List searchWithMds(String givenName, String familyName, String dateOfBirth); - - List searchDeSpecific(String givenName, String familyName, String dateOfBirth, - String birthPlace, String birthName); - - List searchItSpecific(String taxNumber); - - void update(RegisterResult registerResult, SimpleEidasData eidData); - - List searchWithBpkZp(String bpkzp); - - List searchWithResidenceData(String zipcode, String city, String street); - -} diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/eIDAS.Authentication.process.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/eIDAS.Authentication.process.xml index 369af4c4..2379295b 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/eIDAS.Authentication.process.xml +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/eIDAS.Authentication.process.xml @@ -3,89 +3,53 @@ xmlns:pd="http://reference.e-government.gv.at/namespace/moa/process/definition/v1"> - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - + + + - - - + + + - - - + + + - - - - + + + - + - - + + - + - - + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/eidas_v2_auth.beans.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/eidas_v2_auth.beans.xml index ed086493..cec75682 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/eidas_v2_auth.beans.xml +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/eidas_v2_auth.beans.xml @@ -11,17 +11,25 @@ + + + class="at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.szr.SzrClient" /> + + + + + - diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/messages/eidas_connector_message.properties b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/messages/eidas_connector_message.properties index a2437ce6..cfb48d57 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/messages/eidas_connector_message.properties +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/messages/eidas_connector_message.properties @@ -13,3 +13,15 @@ module.eidasauth.06=eIDAS module was selected, but eIDAS is NOT enabled for SP: module.eidasauth.98=eIDAS module has an internal error. Reason: {0} module.eidasauth.99=eIDAS module has an generic internal error. + +module.eidasauth.matching.00=Matching failed, because find more than one ZMR entries with one eIDAS personal-identifier +module.eidasauth.matching.01=Matching failed, because of an ZMR communication error. Reason: {0} +module.eidasauth.matching.02=Matching failed, because ZMR response contains historic information which is not supported. +module.eidasauth.matching.03=Matching failed in workflow step: {0} with error: {1} +module.eidasauth.matching.04=An error occurred while loading your data from official registers. Please contact the support. +module.eidasauth.matching.05=Matching failed, because result from alternative authentication-method does not match to eIDAS authentication +module.eidasauth.matching.06=Matching failed, because GUI form for matching by residence was invalid filled + + +module.eidasauth.matching.98=Matching failed, because of an invalid or unknown request parameter. +module.eidasauth.matching.99=Matching failed, because of an unexpected processing error. Reason: {0} \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/SZR-1.1.WSDL b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/SZR-1.1.WSDL deleted file mode 100644 index 3c34458d..00000000 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/SZR-1.1.WSDL +++ /dev/null @@ -1,939 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/SZR-1.WSDL b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/SZR-1.WSDL deleted file mode 100644 index 4ad2645a..00000000 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/SZR-1.WSDL +++ /dev/null @@ -1,901 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/SZR_v4.0.wsdl b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/SZR_v4.0.wsdl deleted file mode 100644 index e7f296bd..00000000 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/SZR_v4.0.wsdl +++ /dev/null @@ -1,441 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/pvp1.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/pvp1.xsd deleted file mode 100644 index 09c0b1e3..00000000 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/pvp1.xsd +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - additional authentication properties - - - - - - - - - - - - - - - - - - - - - - - additional authorization properties - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - additional principal attributes - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/pvp19.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/pvp19.xsd deleted file mode 100644 index 596a2b99..00000000 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/pvp19.xsd +++ /dev/null @@ -1,133 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - additional authentication properties - - - - - - - - - - - - - - - - - - - - - - - additional authorization properties - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - additional principal attributes - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/szr.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/szr.xsd deleted file mode 100644 index 85acfb65..00000000 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/szr.xsd +++ /dev/null @@ -1,388 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/szr_ecdsa.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/szr_ecdsa.xsd deleted file mode 100644 index 87ee80be..00000000 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/szr_ecdsa.xsd +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/szr_persondata.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/szr_persondata.xsd deleted file mode 100644 index 3c9ac932..00000000 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/szr_persondata.xsd +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/szr_pvp_sec.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/szr_pvp_sec.xsd deleted file mode 100644 index 5001c1b8..00000000 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/szr_pvp_sec.xsd +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/szr_v4.0-schemas.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/szr_v4.0-schemas.xml deleted file mode 100644 index d40efa45..00000000 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/szr_v4.0-schemas.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/szr_v4.0-wsdl.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/szr_v4.0-wsdl.xml deleted file mode 100644 index f95c35f0..00000000 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/szr_v4.0-wsdl.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - false - - - \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/szr_v4.0.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/szr_v4.0.xsd deleted file mode 100644 index 2d25f2dc..00000000 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/szr_v4.0.xsd +++ /dev/null @@ -1,443 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/szr_xmldsig.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/szr_xmldsig.xsd deleted file mode 100644 index 96b50b40..00000000 --- a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/szr_client/szr_xmldsig.xsd +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/SZR-1.1.WSDL b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/SZR-1.1.WSDL new file mode 100644 index 00000000..3c34458d --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/SZR-1.1.WSDL @@ -0,0 +1,939 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/SZR-1.WSDL b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/SZR-1.WSDL new file mode 100644 index 00000000..4ad2645a --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/SZR-1.WSDL @@ -0,0 +1,901 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/SZR_v4.0.wsdl b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/SZR_v4.0.wsdl new file mode 100644 index 00000000..e7f296bd --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/SZR_v4.0.wsdl @@ -0,0 +1,441 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/pvp1.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/pvp1.xsd new file mode 100644 index 00000000..09c0b1e3 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/pvp1.xsd @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + additional authentication properties + + + + + + + + + + + + + + + + + + + + + + + additional authorization properties + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + additional principal attributes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/pvp19.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/pvp19.xsd new file mode 100644 index 00000000..596a2b99 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/pvp19.xsd @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + additional authentication properties + + + + + + + + + + + + + + + + + + + + + + + additional authorization properties + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + additional principal attributes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/szr.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/szr.xsd new file mode 100644 index 00000000..85acfb65 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/szr.xsd @@ -0,0 +1,388 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/szr_ecdsa.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/szr_ecdsa.xsd new file mode 100644 index 00000000..87ee80be --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/szr_ecdsa.xsd @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/szr_persondata.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/szr_persondata.xsd new file mode 100644 index 00000000..3c9ac932 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/szr_persondata.xsd @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/szr_pvp_sec.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/szr_pvp_sec.xsd new file mode 100644 index 00000000..5001c1b8 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/szr_pvp_sec.xsd @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/szr_v4.0-schemas.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/szr_v4.0-schemas.xml new file mode 100644 index 00000000..d40efa45 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/szr_v4.0-schemas.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/szr_v4.0-wsdl.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/szr_v4.0-wsdl.xml new file mode 100644 index 00000000..f95c35f0 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/szr_v4.0-wsdl.xml @@ -0,0 +1,10 @@ + + + + false + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/szr_v4.0.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/szr_v4.0.xsd new file mode 100644 index 00000000..2d25f2dc --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/szr_v4.0.xsd @@ -0,0 +1,443 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/szr_xmldsig.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/szr_xmldsig.xsd new file mode 100644 index 00000000..96b50b40 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/szr_client/szr_xmldsig.xsd @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/soapenv.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/soapenv.xsd new file mode 100644 index 00000000..cb89c710 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/soapenv.xsd @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Prose in the spec does not specify that attributes are allowed on the Body element + + + + + + + + + + + + + + + + + + + + 'encodingStyle' indicates any canonicalization conventions followed in the contents of the containing element. For example, the value 'http://schemas.xmlsoap.org/soap/encoding/' indicates the pattern described in SOAP specification + + + + + + + + + + + + + + + Fault reporting structure + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/ablaufendeauskunfssperren/ablaufendeauskunftssperrenrequest.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/ablaufendeauskunfssperren/ablaufendeauskunftssperrenrequest.xml new file mode 100644 index 00000000..173c3894 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/ablaufendeauskunfssperren/ablaufendeauskunftssperrenrequest.xml @@ -0,0 +1,22 @@ + + + + + + GP_Ablaufende_Auskunftssperren + ZPR_VO_Ablaufende_Auskunftssperren + + + + 000000 + + Test + + + 2005-01-01T00:00:00.000 + 10 + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/ablaufendeauskunfssperren/ablaufendeauskunftssperrenresponse.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/ablaufendeauskunfssperren/ablaufendeauskunftssperrenresponse.xml new file mode 100644 index 00000000..75fbd86f --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/ablaufendeauskunfssperren/ablaufendeauskunftssperrenresponse.xml @@ -0,0 +1,194 @@ + + + + + + GP_Ablaufende_Auskunftssperren + 1234 + A + 00034 + + ZPR_VO_Ablaufende_Auskunftssperren + A + false + true + + + + ZMR Server + 2004-01-26T00:00:00.000 + 1234567 + + + + 2005-01-01T00:00:00.000 + 10 + + + 0003 + Es wurde 1 Personen im ZMR gefunden + + + 1 + 0 + 1 + + + + + + + + + 2004-01-26T00:00:00.000 + + + + 0000001 + + 2004-01-26T00:00:00.000 + + 2004-01-26T00:00:00.000 + AMKOR + Amtliche Korrektur + + + 09999 + + test@bmi.gv.at + + + 000111111111 + + + Maximilian + Mustermann + + männlich + 2001-05-07 + Wien + Wien + Österreich + + AUT + Österreich + + + 0000001 + 2003-01-01T00:00:00.000 + + 2003-01-01T00:00:00.000 + REISEDOK_ANLEGEN + Reisedokument anlegen + + + 09999 + + test@bmi.gv.at + + + + + + + + + 2004-01-26T00:00:00.000 + + + + 0000001 + 2004-01-26T00:00:00.000 + + 2003-01-01T00:00:00.000 + GEBURT + Geburt + 2004-01-26T00:00:00.000 + + + 09999 + + test@bmi.gv.at + + + 000111111111 + + + Hans + Mustermann + + männlich + 2001-05-07 + Wien + Wien + Österreich + + AUT + Österreich + + + 0000001 + 2003-01-01T00:00:00.000 + + 2003-01-01T00:00:00.000 + REISEDOK_ANLEGEN + Reisedokument anlegen + + + 09999 + + test@bmi.gv.at + + + + + + + + + + + + 2004-01-26T00:00:00.000 + + + + 00000002 + + 2004-01-26T00:00:00.000 + + 2004-01-26T00:00:00.000 + WSANM + Wohnsitz anmelden + + + 099999 + + + + + + 1245 + Testgemeinde + 09999 + Testort + + Teststrasse + 1 + H + + + XXX000 + + 2004-01-26T00:00:00.000 + WSANM + Wohnsitz anmelden + + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/ablaufendeauskunfssperren/blaetternrequest.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/ablaufendeauskunfssperren/blaetternrequest.xml new file mode 100644 index 00000000..50517e75 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/ablaufendeauskunfssperren/blaetternrequest.xml @@ -0,0 +1,27 @@ + + + + + + GP_Ablaufende_Auskunftssperren + 1234 + + 00034 + ZPR_VO_Ablaufende_Auskunftssperren + + + + 000000 + + Test + + + + Vor + 3 + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/ablaufendeauskunfssperren/blaetternresponse.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/ablaufendeauskunfssperren/blaetternresponse.xml new file mode 100644 index 00000000..add2f3ad --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/ablaufendeauskunfssperren/blaetternresponse.xml @@ -0,0 +1,195 @@ + + + + + + GP_Ablaufende_Auskunftssperren + 1234 + A + 00034 + + ZPR_VO_Ablaufende_Auskunftssperren + A + false + true + + + + ZMR Server + 2004-01-26T00:00:00.000 + 1234567 + + + + 2005-01-01T00:00:00.000 + 10 + + + 0003 + Es wurde 1 Personen im ZMR gefunden + + + 4 + 3 + + 4 + + + + + + + + + 2004-01-26T00:00:00.000 + + + + 0000001 + + 2004-01-26T00:00:00.000 + + 2004-01-26T00:00:00.000 + AMKOR + Amtliche Korrektur + + + 09999 + + test@bmi.gv.at + + + 000111111111 + + + Maximilian + Mustermann + + männlich + 2001-05-07 + Wien + Wien + Österreich + + AUT + Österreich + + + 0000001 + 2003-01-01T00:00:00.000 + + 2003-01-01T00:00:00.000 + REISEDOK_ANLEGEN + Reisedokument anlegen + + + 09999 + + test@bmi.gv.at + + + + + + + + + 2004-01-26T00:00:00.000 + + + + 0000001 + 2004-01-26T00:00:00.000 + + 2003-01-01T00:00:00.000 + GEBURT + Geburt + 2004-01-26T00:00:00.000 + + + 09999 + + test@bmi.gv.at + + + 000111111111 + + + Hans + Mustermann + + männlich + 2001-05-07 + Wien + Wien + Österreich + + AUT + Österreich + + + 0000001 + 2003-01-01T00:00:00.000 + + 2003-01-01T00:00:00.000 + REISEDOK_ANLEGEN + Reisedokument anlegen + + + 09999 + + test@bmi.gv.at + + + + + + + + + + + + 2004-01-26T00:00:00.000 + + + + 00000002 + + 2004-01-26T00:00:00.000 + + 2004-01-26T00:00:00.000 + WSANM + Wohnsitz anmelden + + + 099999 + + + + + + 1245 + Testgemeinde + 09999 + Testort + + Teststrasse + 1 + H + + + XXX000 + + 2004-01-26T00:00:00.000 + WSANM + Wohnsitz anmelden + + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/adoption/adoptionrequest.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/adoption/adoptionrequest.xml new file mode 100644 index 00000000..9e8746ce --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/adoption/adoptionrequest.xml @@ -0,0 +1,32 @@ + + + + + + + GP_Adoption + ZPR_VO_Adoption + + + + 000000 + + Test + + + + 2004-01-26T00:00:00.000 + + + + 2434 + 2003-03-01T00:00:00.000 + + 000111111111 + + MustermannAdoption + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/adoption/adoptionresponse.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/adoption/adoptionresponse.xml new file mode 100644 index 00000000..466bdc2c --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/adoption/adoptionresponse.xml @@ -0,0 +1,82 @@ + + + + + + GP_Adoption + 1234 + C + 00034 + + ZPR_VO_Adoption + C + false + true + + + + ZMR Server + 2004-01-26T00:00:00.000 + 1234567 + + + + 1234 + Person wurde geändert + + + + 2004-01-26T00:00:00.000 + + + + 0000001 + 2004-01-26T00:00:00.000 + + 2004-01-26T00:00:00.000 + NAMENSAENDERUNG + Namensänderung + + + 09999 + + test@bmi.gv.at + + + 000111111111 + + + Anna + MustermannAdoption + + weiblich + 2001-05-07 + Wien + Wien + Österreich + + AUT + Österreich + + + 0000001 + 2003-01-01T00:00:00.000 + + 2003-01-01T00:00:00.000 + REISEDOK_ANLEGEN + Reisedokument anlegen + + + 09999 + + test@bmi.gv.at + + + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/adresssuche/adresssucherequest.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/adresssuche/adresssucherequest.xml new file mode 100644 index 00000000..b37c1ecf --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/adresssuche/adresssucherequest.xml @@ -0,0 +1,32 @@ + + + + + + Meldevorgang + Adresssuche + + + + 099999 + + ZMRHTMLClient V3.0 + + + + ADRESSSUCHE + + + + 09999 + Testort + + Teststraße + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/adresssuche/adresssucheresponse.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/adresssuche/adresssucheresponse.xml new file mode 100644 index 00000000..53c04d79 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/adresssuche/adresssucheresponse.xml @@ -0,0 +1,81 @@ + + + + + + Meldevorgang + 1234 + A + 00034 + + Adresssuche + A + true + true + + + + ZMR Server + 2004-01-26T00:00:00.000 + 1234567 + + + + + ADRESSSUCHE + + + + 09999 + + Teststraße + + + + + + 123 + Adressen gefunden. + + + Orientierungsnummer + 3 + + + Testgemeinde + 09999 + Testort + + Teststraße + 1 + + + + + + Testgemeinde + 09999 + Testort + + Teststraße + 2 + + + + + + Testgemeinde + 09999 + Testort + + Teststraße + 3 + + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/behoerdenabfrage/behoerdenabfragerequestStufe1.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/behoerdenabfrage/behoerdenabfragerequestStufe1.xml new file mode 100644 index 00000000..0aa8460b --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/behoerdenabfrage/behoerdenabfragerequestStufe1.xml @@ -0,0 +1,33 @@ + + + + + + GP_Behoerdenabfrage_erstellen + ZMR_VO_Behoerdenabfrage_Ueberblick_erstellen + + + + 000000 + + Test + + + + Test + SONSTIGES + false + false + + + + Max + Mustermann + + 2000-01-01 + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/behoerdenabfrage/behoerdenabfragerequestStufe2.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/behoerdenabfrage/behoerdenabfragerequestStufe2.xml new file mode 100644 index 00000000..a68cd27d --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/behoerdenabfrage/behoerdenabfragerequestStufe2.xml @@ -0,0 +1,27 @@ + + + + + + GP_Behoerdenabfrage_erstellen + ZMR_VO_Behoerdenabfrage_Detail_erstellen + + + + 000000 + + Test + + + + Test + SONSTIGES + false + false + + 1 + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/behoerdenabfrage/behoerdenabfrageresponseStufe1.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/behoerdenabfrage/behoerdenabfrageresponseStufe1.xml new file mode 100644 index 00000000..cf18458e --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/behoerdenabfrage/behoerdenabfrageresponseStufe1.xml @@ -0,0 +1,76 @@ + + + + + + GP_Behoerdenabfrage_erstellen + 1234 + A + 00034 + + ZPR_VO_Person_suchen_Meldevorgang + C + false + true + + + ZMR_VO_Behoerdenabfrage_Detail_erstellen + A + false + true + + + + ZMR Server + 2004-01-26T00:00:00.000 + 1234567 + + + + + Test + SONSTIGES + false + false + + + + Max + Mustermann + + 2000-01-01 + + + + 0003 + Es wurden 3 Personen im ZMR gefunden + + + 3 + + 0 + 2001-01-01 + Wien - Ottakring + 1010 + Wien - Innere Stadt + + + 1 + 2001-01-01 + Testort + 9999 + Testort + + + 2 + 2001-01-01 + Testort2 + 8888 + Testort2 + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/behoerdenabfrage/behoerdenabfrageresponseStufe2.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/behoerdenabfrage/behoerdenabfrageresponseStufe2.xml new file mode 100644 index 00000000..909c491e --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/behoerdenabfrage/behoerdenabfrageresponseStufe2.xml @@ -0,0 +1,200 @@ + + + + + + GP_Behoerdenabfrage_erstellen + 1234 + C + 00034 + + ZPR_VO_Person_suchen_Meldevorgang + C + false + true + + + ZMR_VO_Behoerdenabfrage_Detail_erstellen + C + false + true + + + + ZMR Server + 2004-01-26T00:00:00.000 + 1234567 + + + + + Test + SONSTIGES + false + false + + 1 + + + 0003 + Es wurde 1 Person im ZMR gefunden + + + + + + + + + 2004-01-26T00:00:00.000 + + + + 0000001 + + 2004-01-26T00:00:00.000 + + 2004-01-26T00:00:00.000 + AMKOR + Amtliche Korrektur + + + 09999 + + test@bmi.gv.at + + + 000111111111 + + + Maximilian + Mustermann + + männlich + 2001-05-07 + Wien + Wien + Österreich + + AUT + Österreich + + + 0000001 + 2003-01-01T00:00:00.000 + + 2003-01-01T00:00:00.000 + REISEDOK_ANLEGEN + Reisedokument anlegen + + + 09999 + + test@bmi.gv.at + + + + + + + + + 2004-01-26T00:00:00.000 + + + + 0000001 + 2004-01-26T00:00:00.000 + + 2003-01-01T00:00:00.000 + GEBURT + Geburt + 2004-01-26T00:00:00.000 + + + 09999 + + test@bmi.gv.at + + + 000111111111 + + + Hans + Mustermann + + männlich + 2001-05-07 + Wien + Wien + Österreich + + AUT + Österreich + + + 0000001 + 2003-01-01T00:00:00.000 + + 2003-01-01T00:00:00.000 + REISEDOK_ANLEGEN + Reisedokument anlegen + + + 09999 + + test@bmi.gv.at + + + + + + + + + + + + 2004-01-26T00:00:00.000 + + + + 00000002 + + 2004-01-26T00:00:00.000 + + 2004-01-26T00:00:00.000 + WSANM + Wohnsitz anmelden + + + 099999 + + + + + + 1245 + Testgemeinde + 09999 + Testort + + Teststrasse + 1 + H + + + XXX000 + + 2004-01-26T00:00:00.000 + WSANM + Wohnsitz anmelden + + + XXYY + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/bestandsaenderungen/bestandsaenderungenrequest.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/bestandsaenderungen/bestandsaenderungenrequest.xml new file mode 100644 index 00000000..db6014cd --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/bestandsaenderungen/bestandsaenderungenrequest.xml @@ -0,0 +1,26 @@ + + + + + + Abfragen + Bestandsaenderungen + + + + 099999 + + ZMRHTMLClient V3.0 + + + + 2004-01-01T00:00:00.000 + 2004-07-01T00:00:00.000 + true + TYP_ZUGANG + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/bestandsaenderungen/bestandsaenderungenresponse.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/bestandsaenderungen/bestandsaenderungenresponse.xml new file mode 100644 index 00000000..b66a6636 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/bestandsaenderungen/bestandsaenderungenresponse.xml @@ -0,0 +1,83 @@ + + + + + + Abfragen + Bestandsaenderung + 1234 + A + 00034 + + Bestandsaenderung + Bestandsaenderung + C + true + true + + + + ZMR Server + 2004-06-01T00:00:00.000 + 1234567 + + + + + 2004-01-01T00:00:00.000 + 2004-07-01T00:00:00.000 + true + TYP_ZUGANG + + + + 0004 + Die Abgleichdaten wurden erstellt + + + 230 + 2 + + 2004-01-01T08:00:00.000 + 000111111111 + 2001-05-07 + männlich + + TYP_ZUGANG + + Testgemeinde + 09999 + Testort + + Teststraße + 3 + 7 + + + + + + 2004-01-02T08:00:00.000 + 000111111111 + 2003-05-07 + weiblich + + TYP_ZUGANG + + Testgemeinde + 09999 + Testort + + Teststraße + 3 + 3 + + + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/bpabfrage/bpabfragerequest.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/bpabfrage/bpabfragerequest.xml new file mode 100644 index 00000000..73c30b8b --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/bpabfrage/bpabfragerequest.xml @@ -0,0 +1,31 @@ + + + + + + GP_Businesspartnerabfrage_erstellen + ZMR_VO_Businesspartnerabfrage_erstellen + + + + 000000 + + ZMRHTMLClient V4.0 + + + + Test + SONSTIGES + + + + Max + Mustermann + + 2005-01-01 + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/bpabfrage/bpabfrageresponse.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/bpabfrage/bpabfrageresponse.xml new file mode 100644 index 00000000..bd7d3a22 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/bpabfrage/bpabfrageresponse.xml @@ -0,0 +1,68 @@ + + + + + + GP_Businesspartnerabfrage_erstellen + Businesspartnerabfragen + 62700000000195 + C + 0 + + ZMR_VO_Businesspartnerabfrage_erstellen + Businesspartnerabfrage + C + false + true + + + + ZMR-Server + 2005-03-10T13:38:22.617 + 32900000000018 + + + + + Test + SONSTIGES + + + + Max + Mustermann + + 2005-01-01 + + + + 5020 + Person gefunden + + + + + Max + Mustermann + + 2005-01-01 + + + 1160 + Wien,Ottakring + + Ottakringer Straße + 101 + 7 + false + 0003 + + + true + JVBERi0xLjMKJaqrrK0KNCAwIG9iago8PCAvVHlwZSAvSW5mbwovUHJvZHVjZXIgKG51bGwpID4+CmVuZG9iago1IDAgb2JqCjw8IC9MZW5ndGggODA2IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIAogPj4Kc3RyZWFtCnicnVbbctMwEH33V+ixnaGqpNXNfUsGtwRIWhIDMwUe3FZNMyQOOA4w/XrWt8hOYwpMHqJozp69nN1VhnFweg6EC8pIfB+w4us2YGQecMLww4mQnGoAooWhoQlJvCKfjq6i6exyEk1eDuJocky+kPg18nDCecXTGHMrqVCcaKaoCE1lfJ6sFsuFS9Nk5c6OyYliEFJhgByNt5vcZaskTWvOfR4VChoKUfF8WGcNhRGa1xTJrz5by6iSdQwX7mab5Zu7JN+uCgIZWoEEQpEjhjkgGWNql5gv0I6UYzUQrYSkFlRFOlohkzAWoUfXLs2zZOlSfzV2yzuXufmiSNJfb24f3CJtA+/Xy7lL79yeKQbbRiXb+7M6wigOvpeiGUat1kQq/MaUpQJMGQgmTjJH7oN3wTD+o1AyBKrrdAZf861bLtuxvkq23/Kf64d0s8gfz3oKLY2imumKZIZV+AxgSpksYNlKmS7zPPmaLdJ5m32H9Veccf/D9DnUQAXwujXfXp9eZnnZFbZ0V4jKuWae6CN234tdCD1FNFJSwJ6tiiiwiNAp4tOmaAwxf7B1OMMxPaejySSaRjMfwGAY09GHU+FvRvHJeNaepB5u7HO7446mFxdUwl5ZdvFbHwZnYTv/0W5qy6ytojiDpTkwapglEkcSdEiMklTakNyugtPRipOX6yr9qljUCiMVlqw5XQRaVc5FSI2QpTRFB54odFGU76Ztj5Y9+G7HttGAaG1QeEQXKKUr4n2oQkbJwr/C1kE00D8FcSDlpt64CsoU6qE7AV7Z37Q6RnZVFQo1UkAMh6JRK63GXqj3reHwx9gfI3+c7k8Ht9Tg6g0NVc3KHDxH/eYgYOKP590wLMi9Wxxg2QmqwQyf8z066DA6iG0dr1pj1XX8tFyHeaedDdCvsMblKNoKo2pdhZ/OrWD4UIAh2gK2o61kSLYb7/3O/dOz4TcE69kQuPrrZzpO5m73xh3aEbrY1DX4/UP26BZ5DxL3ADS0M4SV+7xZ0v74Y5127rsdiX8lDIhOiEUW0H5t98HtEDmcgd3DgTG4scIO6f8sXRT/N+i29j4KZW5kc3RyZWFtCmVuZG9iago2IDAgb2JqCjw8L1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9OYW1lIC9JbTEKL0xlbmd0aCAyMDU1Ci9XaWR0aCAxMDgKL0hlaWdodCAzOQovQml0c1BlckNvbXBvbmVudCA4Ci9Db2xvclNwYWNlIC9EZXZpY2VSR0IKL0ZpbHRlciAvRmxhdGVEZWNvZGUgCj4+CnN0cmVhbQp4nO1aK7CrOhStPPLI2iuRSCyyEolFIpG1SGQkFllZeWxl5ZXHVlZW8layIA35lZ72zdx572YYhk+ys7Oy9ieBcfxb/mtlvz+U1VAUfb4Tu50oyr6uh04cI02EOFa1bLJTTXZFDwmQ80atfgvxe7+XR11Ph7p1a0KBLBd5/p6zHkVZ9qFqbXcHp2kGPMyyDkcqz0Jf4AyIhIMksJU6L2vqW8hvfEhCjlcfeRTDBNp+/10U31l22W4vHx/fm81ls+GZF9fN5pCmrnAOwdU/My7STA8zWBmvgNt9aoo+VLNtD8s6wif5frtv75hU1WA1sZRkk8LQZEK+O7oKs4lIikuSuKBdDPSm64+PvutcDDEd6Wvo8QJyTLGgkEkSs2aneKi45EXDgwllwsADWnmal0sYZwyn+kkm8rQFeqfN59WBzgWTJITjcAGcMbQsYu3ZVLvrFkbn8PB+hi3DhAPEc9GQZ9APbAzNaUh/0w9oHpJ+dVpp9DTHYMLXLOMhmWlYNGqettthGNZgGNDnAbx1Ywtf8nAhh97MR2mL/J62D6fSrA/kTQzT+ZX4TCfctttbWd76fjydxuvVhgZPcJxOqHCra/hZL4Dj3R96rCOioanqbmc7HwPD+DDVq/xhX8785p7KLgEyw70oDOXDw0dyJXptO95uC8TOZ3l8f8vDfPWowG/A7gp16AvrOmY1uRiGL1esGy9sf1UN2tYgwfF1/okDtUQ/ter74zLEeNDWusGBwAFK+/38uKN3PuP6mueMKTy+DbsG/cbD4XI+h6x4ZYGqPiOaYGxbf0pm8dBib+nEzVHFXF8Tf9x3OvKnOtpLi+5w3HzekkQyDeXrC9C52YsbU0BadPwKgOOSURY9TIezutWCHmbph6+wMxTZMu7rYgVcqzs9xcj64Pok/U4njd5VHSZ6+sllRShZWbAWCHHJ6wYtDL0RAYuRUKtwjO7clC/QauEhmVtiiSGtchxhudJOFT6wawSX/WdWbXfFrwJHW5SgHLLok4rIBDMSStYUWHEkJvY+LunizQ/ZMMLePLdNUnfthn6nlY08rsHDcz/cigIhA2dSDtDlv8ok2Sdpm2Rdomo2zX1mQTzk0sgGQwnh+mImIZZvj4yIJRCX5W1kVYseQ8n8mlauBwAyICF8IO2X6P1K25SS57wuYhqvlNnDe1YuXt9uFW9+OPmoLriZ4MzaIjOPtvKEvESt4xA+bnmOgEL0El+KDpf1Q5jCBev6kE2FfLtVQjzERbcKQztTfaqVAlCUSSPTY7W5U1X7xJdG8hzKLl4p4bxXxLekdPH5w2mYEQmu99AX7gaO2cpVNUU2uBdyfaEyExi1GpSf5HHf/oMit60C64WHblCXyDoljoZ3ifdsK5CwLgSicJtPQaFtBwWaf/34FD4PC1gdWikAlvVyvDzMnK0Aq3gZxYbr2ctggXBcpxVMmHW4Xg5tBawf18MyyCzXm/CLPH9usiL7h+vQsAm8Bvmpl1QtCZs9shedsSxT8QWM78WwKM3FxcKrR8KiX1R4//B5Hj5mr6ltKjczpT80MyJnD3ZxfmpokYLuvBkCLpA+YQjy6I+RC3MF97I/tDPSKHvtdeVk0R4MPbHyXf4Qw4+4C/e599rMGyP7h+ut0hz1M8jfG5oYeqPJG3noLG/9K9DQHqy7iIvsYz+T2zwbU2ytIjy8y1+X8cZLs7Biz6hD02elcKWBYTguP2fLT+WHrt+I+MM3xhQhjk7vHo55s2Wr/lt5aOuwPqaY/Tq27Df5FzEMTOIa6Oxz9YCHP4gpK5G3d9r1resPPTHrNVsup730uP2GwLQVjn5fvleL8zBgEStt2YYowEObMD8GENlI7nz6D92uuTB3P/R/Dm61CBrydxGf/J+1woXeTMDEhZTP3xFT/pY/rcArvn0bpGkGa3uqDG+Gryx9f/T+mfOvFoxize5r6vzz8HqBxzO7Vp8aXw2m3uGsHKMu8DCYX3hdPR2QIH9aUwhg5YJbLJPxhL6IYQKOBRU69b9H30u+oQKEoDLXejqGok5t8Ad16iWdUB8Pu7kLqcm8twYm41rfomsGfTSH163V32KmWK3zvpWa8FOUpQBu0Va/xUS0ulo98CHTCdqRKVmoURMQE0MI4U8s/JpQq9/5uIONc6teAV61nSgnnWEC0tgR6qMvOGTcUg7VYD5MHy7UuVGapOpLpRkauEJHK/6/N/XYDFx4cvro8NEFhk/6Nc2Bn+alzs2AxAYySX5KgJ5C6c9lPhUQqm1N/JWGzTwRmfo8RMW4dzqqdcdONafatfq+ibd9b5uYkP/yTdTN1PdHSIaGnCxKE7PhYMhEW/78UN5bocLpdCKSmocQAh2gCcYOmYeD/JMBrcxPS0SeUNCCIITMyeTnpGHxXLEdCqAvSMvUR2qAUBo6c/OTwvn/hnylFFDzJdui4EI6w2YaDl5x4ITOHCPnixiGwjdxI13RKRw1FOMtSTLO31bG+X/LcemdmBa2aiVF02Au10p29VoaGIuH5IDJw5QYKngpmXyTCxO1I8R5x7gq9W8Je+FX71FFFvROt2PqrImkFWBbzBrrwAtBGcJC78SHeozVUnIVwBBtJbdrOYl0ZZxQbvhD+Vrle/wZZpz9J/mjnQweYiDKdx043nrOEiUJq4G3/DeGc6oV0F3QdRAEDln6LlWff9dIf6ue07eYnrP26aznSAqZn/C2oS2rCWIgIAK81mO00KD/9/Lwf1UYUKSf/JtU/xnlH7uDa8sKZW5kc3RyZWFtCmVuZG9iago3IDAgb2JqCjw8IC9UeXBlIC9QYWdlCi9QYXJlbnQgMSAwIFIKL01lZGlhQm94IFsgMCAwIDU5NSA4NDIgXQovUmVzb3VyY2VzIDMgMCBSCi9Db250ZW50cyA1IDAgUgo+PgplbmRvYmoKOCAwIG9iago8PCAvVHlwZSAvRm9udAovU3VidHlwZSAvVHlwZTEKL05hbWUgL0YzCi9CYXNlRm9udCAvSGVsdmV0aWNhLUJvbGQKL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcgPj4KZW5kb2JqCjkgMCBvYmoKPDwgL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUxCi9OYW1lIC9GMQovQmFzZUZvbnQgL0hlbHZldGljYQovRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZyA+PgplbmRvYmoKMSAwIG9iago8PCAvVHlwZSAvUGFnZXMKL0NvdW50IDEKL0tpZHMgWzcgMCBSIF0gPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL0NhdGFsb2cKL1BhZ2VzIDEgMCBSCiA+PgplbmRvYmoKMyAwIG9iago8PCAKL0ZvbnQgPDwgL0YzIDggMCBSIC9GMSA5IDAgUiA+PiAKL1Byb2NTZXQgWyAvUERGIC9JbWFnZUMgL1RleHQgXSAvWE9iamVjdCA8PC9JbTEgNiAwIFIgCiA+Pgo+PiAKZW5kb2JqCnhyZWYKMCAxMAowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDM1MDQgMDAwMDAgbiAKMDAwMDAwMzU2MiAwMDAwMCBuIAowMDAwMDAzNjEyIDAwMDAwIG4gCjAwMDAwMDAwMTUgMDAwMDAgbiAKMDAwMDAwMDA2NSAwMDAwMCBuIAowMDAwMDAwOTQ0IDAwMDAwIG4gCjAwMDAwMDMxNzkgMDAwMDAgbiAKMDAwMDAwMzI4NSAwMDAwMCBuIAowMDAwMDAzMzk3IDAwMDAwIG4gCnRyYWlsZXIKPDwKL1NpemUgMTAKL1Jvb3QgMiAwIFIKL0luZm8gNCAwIFIKPj4Kc3RhcnR4cmVmCjM3MjcKJSVFT0YK + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/datenabgleich/datenabgleichrequest.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/datenabgleich/datenabgleichrequest.xml new file mode 100644 index 00000000..07c501c6 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/datenabgleich/datenabgleichrequest.xml @@ -0,0 +1,26 @@ + + + + + + GP_Datenabgleich_anfordern + ZMR_VO_Datenabgleich_anfordern + + + + 000000 + + Test + + + + 91601 + AENDERUNGEN + 2004-01-01T00:00:00.000 + 2004-02-01T00:00:00.000 + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/datenabgleich/datenabgleichresponse.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/datenabgleich/datenabgleichresponse.xml new file mode 100644 index 00000000..86d96963 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/datenabgleich/datenabgleichresponse.xml @@ -0,0 +1,91 @@ + + + + + + GP_Datenabgleich_anfordern + 1234 + C + 00034 + + ZMR_VO_Datenabgleich_anfordern + C + false + true + + + + ZMR Server + 2004-06-01T00:00:00.000 + 1234567 + + + + + 09999 + AENDERUNGEN + 2004-01-01T00:00:00.000 + 2004-02-01T00:00:00.000 + false + + + + 0004 + Die Abgleichdaten wurden erstellt + + + 230 + 2 + + 2004-01-01T08:00:00.000 + + + 0000001 + 2004-01-26T00:00:00.000 + + 000111111111 + + Mustermann + Max + 2001-05-07 + + + + + + + 0000001 + 2004-01-26T00:00:00.000 + + 2004-01-01T08:00:00.000 + PAN + Personensnlage + + + 09999 + + test@bmi.gv.at + + + 000111111111 + + + Max + Mustermann + + männlich + 2001-05-07 + Wien + Wien + Österreich + + + + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/fremdenabfrage/fremdenabfragerequest.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/fremdenabfrage/fremdenabfragerequest.xml new file mode 100644 index 00000000..6e9ad235 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/fremdenabfrage/fremdenabfragerequest.xml @@ -0,0 +1,31 @@ + + + + + + GP_Fremden_abfrage + ZPR_VO_Fremden_abfrage + + + + 000000 + + Test + + + + Test + NICHT_OESTERREICH + 916 + false + false + true + 10 + + 2004-01-01T00:00:00.000 + 2004-01-07T00:00:00.000 + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/fremdenabfrage/fremdenabfrageresponse.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/fremdenabfrage/fremdenabfrageresponse.xml new file mode 100644 index 00000000..7f0adb0d --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/fremdenabfrage/fremdenabfrageresponse.xml @@ -0,0 +1,45 @@ + + + + + + GP_Fremden_abfrage + 1234 + A + 00034 + + ZPR_VO_Fremden_abfrage + A + false + true + + + + ZMR Server + 2004-01-26T00:00:00.000 + 1234567 + + + + + Test + NICHT_OESTERREICH + 916 + false + false + true + 10 + + 2004-01-01T00:00:00.000 + 2004-01-07T00:00:00.000 + + + 0003 + Es wurde 1 Personen im ZMR gefunden + + XXYY + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/gisadressabfrage/gisadressabfragerequest1.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/gisadressabfrage/gisadressabfragerequest1.xml new file mode 100644 index 00000000..50bd6226 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/gisadressabfrage/gisadressabfragerequest1.xml @@ -0,0 +1,30 @@ + + + + + + GP_GIS_Adressabfrage + ZMR_VO_GIS_Adressabfrage + + + + 000000 + + Test + + + + Testgemeinde + 09999 + Testort + + Teststraße + 3 + 3 + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/gisadressabfrage/gisadressabfragerequest2.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/gisadressabfrage/gisadressabfragerequest2.xml new file mode 100644 index 00000000..86ddb20e --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/gisadressabfrage/gisadressabfragerequest2.xml @@ -0,0 +1,23 @@ + + + + + + GP_GIS_Adressabfrage + 1234 + 00034 + ZMR_VO_GIS_Adressabfrage_Druck + + + + 099999 + + ZMRHTMLClient V3.0 + + + true + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/gisadressabfrage/gisadressabfrageresponse1.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/gisadressabfrage/gisadressabfrageresponse1.xml new file mode 100644 index 00000000..f17c9596 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/gisadressabfrage/gisadressabfrageresponse1.xml @@ -0,0 +1,50 @@ + + + + + + GP_GIS_Adressabfrage + 1234 + A + 00034 + + ZMR_VO_GIS_Adressabfrage + C + false + true + + + ZMR_VO_GIS_Adressabfrage_Druck + A + false + true + + + + ZMR Server + 2004-01-26T00:00:00.000 + 1234567 + + + + + Testgemeinde + 09999 + Testort + + Teststraße + 3 + 3 + + + + + 023 + Personen gefunden. + + 2 + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/gisadressabfrage/gisadressabfrageresponse2.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/gisadressabfrage/gisadressabfrageresponse2.xml new file mode 100644 index 00000000..68018bfc --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/gisadressabfrage/gisadressabfrageresponse2.xml @@ -0,0 +1,91 @@ + + + + + + GP_GIS_Adressabfrage + 1234 + C + 00134 + + ZMR_VO_GIS_Adressabfrage + C + false + true + + + ZMR_VO_GIS_Adressabfrage_Druck + C + false + true + + + + ZMR Server + 2004-01-26T00:00:00.000 + 1234567 + + + + + Testgemeinde + 09999 + Testort + + Teststraße + 3 + 3 + + + + + 023 + Personen gefunden. + + + 2 + + + + Max + Mustermann + + 2003-01-01 + + + Testgemeinde + 09999 + Testort + + Teststraße + 3 + 3 + + + + + + + Ida + Mustermann + + 2004-01-01 + + + Testgemeinde + 09999 + Testort + + Teststraße + 3 + 3 + + + + WFhYWVlZ + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/hauseigentuemerabfrage/hauseigentuemerabfragerequest.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/hauseigentuemerabfrage/hauseigentuemerabfragerequest.xml new file mode 100644 index 00000000..c35e07e2 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/hauseigentuemerabfrage/hauseigentuemerabfragerequest.xml @@ -0,0 +1,35 @@ + + + + + + GP_Hauseigentuemerabfrage_erstellen + ZMR_VO_Hauseigentuemerabfrage_erstellen + + + + 000000 + + Test + + + + Test + false + 10 + + + 1245 + Testgemeinde + 09999 + Testort + + Teststrasse + 1 + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/hauseigentuemerabfrage/hauseigentuemerabfrageresponse.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/hauseigentuemerabfrage/hauseigentuemerabfrageresponse.xml new file mode 100644 index 00000000..e954abd5 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/hauseigentuemerabfrage/hauseigentuemerabfrageresponse.xml @@ -0,0 +1,213 @@ + + + + + + GP_Hauseigentuemerabfrage_erstellen + 1234 + A + 00034 + + ZMR_VO_Hauseigentuemerabfrage_erstellen + A + false + true + + + ZMR_VO_Hauseigentuemerabfrage_Druck_erstellen + A + false + true + + + + ZMR Server + 2004-01-26T00:00:00.000 + 1234567 + + + + + Test + false + 10 + + + 1245 + Testgemeinde + 09999 + Testort + + Teststrasse + 1 + + + + + 0003 + Es wurde 1 Personen im ZMR gefunden + + + 1 + 0 + 1 + + + + + + + + + 2004-01-26T00:00:00.000 + + + + 0000001 + + 2004-01-26T00:00:00.000 + + 2004-01-26T00:00:00.000 + AMKOR + Amtliche Korrektur + + + 09999 + + test@bmi.gv.at + + + 000111111111 + + + Maximilian + Mustermann + + männlich + 2001-05-07 + Wien + Wien + Österreich + + AUT + Österreich + + + 0000001 + 2003-01-01T00:00:00.000 + + 2003-01-01T00:00:00.000 + REISEDOK_ANLEGEN + Reisedokument anlegen + + + 09999 + + test@bmi.gv.at + + + + + + + + + 2004-01-26T00:00:00.000 + + + + 0000001 + 2004-01-26T00:00:00.000 + + 2003-01-01T00:00:00.000 + GEBURT + Geburt + 2004-01-26T00:00:00.000 + + + 09999 + + test@bmi.gv.at + + + 000111111111 + + + Hans + Mustermann + + männlich + 2001-05-07 + Wien + Wien + Österreich + + AUT + Österreich + + + 0000001 + 2003-01-01T00:00:00.000 + + 2003-01-01T00:00:00.000 + REISEDOK_ANLEGEN + Reisedokument anlegen + + + 09999 + + test@bmi.gv.at + + + + + + + + + + + + 2004-01-26T00:00:00.000 + + + + 00000002 + + 2004-01-26T00:00:00.000 + + 2004-01-26T00:00:00.000 + WSANM + Wohnsitz anmelden + + + 099999 + + + + + + 1245 + Testgemeinde + 09999 + Testort + + Teststrasse + 1 + H + + + XXX000 + + 2004-01-26T00:00:00.000 + WSANM + Wohnsitz anmelden + + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/meldeauskunft/meldeauskunftrequest.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/meldeauskunft/meldeauskunftrequest.xml new file mode 100644 index 00000000..f67f145e --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/meldeauskunft/meldeauskunftrequest.xml @@ -0,0 +1,44 @@ + + + + + + GP_Meldeauskunft_erstellen + ZMR_VO_Meldeauskunft_erstellen + + + + 000000 + + Test + + + + Test + + false + false + + Testdruck 099999 + + urn:publicid:gv.at:wbpk0009999999 + 000123456789 + + + Max + Mustermann + + 2003-01-01 + + + 09999 + Testort + + Teststraße + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/meldeauskunft/meldeauskunftresponse.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/meldeauskunft/meldeauskunftresponse.xml new file mode 100644 index 00000000..75273ec7 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/meldeauskunft/meldeauskunftresponse.xml @@ -0,0 +1,75 @@ + + + + + + GP_Meldeauskunft_erstellen + 1234 + A + 00034 + + ZMR_VO_Meldeauskunft_erstellen + C + false + true + + + + ZMR Server + 2004-01-26T00:00:00.000 + 1234567 + + + + + Test + + false + false + + Testdruck 099999 + + urn:publicid:gv.at:wbpk0009999999 + 000123456789 + + + Max + Mustermann + + 2003-01-01 + + + 09999 + Testort + + Teststraße + + + + + 123 + Meldeauskunft erstellt. + + + + + Max + Mustermann + + 2003-01-01 + + + 09999 + Testort + + Teststraße + + + true + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/meldebestaetigung/meldebestaetigungrequest.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/meldebestaetigung/meldebestaetigungrequest.xml new file mode 100644 index 00000000..312e16b7 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/meldebestaetigung/meldebestaetigungrequest.xml @@ -0,0 +1,26 @@ + + + + + + + GP_Meldebestaetigung_erstellen + ZMR_VO_Meldebestaetigung_erstellen + + + + 099999 + + ZMRHTMLClient V3.0 + + + + Test + AKTLETZT + + 000111111111 + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/meldebestaetigung/meldebestaetigungresponse.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/meldebestaetigung/meldebestaetigungresponse.xml new file mode 100644 index 00000000..e3e4a42b --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/meldebestaetigung/meldebestaetigungresponse.xml @@ -0,0 +1,72 @@ + + + + + + + GP_Meldebestaetigung_erstellen + 1234 + C + 00034 + + ZMR_VO_Meldebestaetigung_erstellen + C + true + true + + + + ZMR Server + 2004-01-26T00:00:00.000 + 1234567 + + + + + Test + AKTLETZT + + 000111111111 + + + 01234 + Die Meldebestätigung wurde erstellt + + + 000111111111 + + + Max + Mustermann + + männlich + 2000-01-01 + + AUT + Österreich + + + + + Testgemeinde + 09999 + Testort + + Teststraße + 3 + + + 2000-01-01T00:00:00.000 + + true + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/militaerbehoerden/blaetternrequest.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/militaerbehoerden/blaetternrequest.xml new file mode 100644 index 00000000..a5733f30 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/militaerbehoerden/blaetternrequest.xml @@ -0,0 +1,27 @@ + + + + + + GP_Militaerbehoerde + 37300000000157 + 0 + ZPR_VO_Wehrpflichtige_abfragen + + + + 09999 + + ZMRGUI v4_9_3-04 + + + + Vor + 30 + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/militaerbehoerden/wehrpflichtigeAbfragenRequst.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/militaerbehoerden/wehrpflichtigeAbfragenRequst.xml new file mode 100644 index 00000000..1d4d1e1d --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/militaerbehoerden/wehrpflichtigeAbfragenRequst.xml @@ -0,0 +1,31 @@ + + + + + + GP_Militaerbehoerde + ZPR_VO_Wehrpflichtige_abfragen + + + + 09999 + + ZMRGUI v4_9_3-04 + + + + false + 30 + + Wien + 1980-01-01T00:00:00.000 + 1980-02-01T00:00:00.000 + A + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/natuerlicheperson.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/natuerlicheperson.xml new file mode 100644 index 00000000..23958f84 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/natuerlicheperson.xml @@ -0,0 +1,30 @@ + + + + + + 000111111111 + ZMR + + + Max + Mustermann + Mag. rer. nat. + + + Musterfrau + + männlich + 2001-05-07 + Wien + Wien + Österreich + 2003-05-07 + + AUT + Österreich + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personaendern/personaendernrequest1.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personaendern/personaendernrequest1.xml new file mode 100644 index 00000000..62449f25 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personaendern/personaendernrequest1.xml @@ -0,0 +1,40 @@ + + + + + + + GP_Person_aendern + ZPR_VO_Person_aendern + + + + 000000 + + Test + + + + 2004-01-26T00:00:00.000 + NAMENSAENDERUNG + + + + 2434 + 2003-03-01T00:00:00.000 + + 000111111111 + + + + + Anna + + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personaendern/personaendernrequest2.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personaendern/personaendernrequest2.xml new file mode 100644 index 00000000..c93c5b72 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personaendern/personaendernrequest2.xml @@ -0,0 +1,42 @@ + + + + + + + GP_Person_aendern + ZPR_VO_Person_aendern + + + + 000000 + + Test + + + + 2004-01-26T00:00:00.000 + XXX + + + + 2434 + 2003-03-01T00:00:00.000 + + 000111111111 + + + + 0004 + + true + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personaendern/personaendernresponse1.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personaendern/personaendernresponse1.xml new file mode 100644 index 00000000..dde7e494 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personaendern/personaendernresponse1.xml @@ -0,0 +1,85 @@ + + + + + + GP_Person_aendern + 1234 + A + 00034 + + ZPR_VO_Person_aendern + C + false + true + + + + ZMR Server + 2004-01-26T00:00:00.000 + 1234567 + + + + 1234 + Person wurde geändert + + + + 2004-01-26T00:00:00.000 + + + + 0000001 + 2004-01-26T00:00:00.000 + + 2004-01-26T00:00:00.000 + NAMENSAENDERUNG + Namensänderung + + + 09999 + + test@bmi.gv.at + + + 000111111111 + + + Anna + Mustermann + + + Huber + + weiblich + 2001-05-07 + Wien + Wien + Österreich + + AUT + Österreich + + + 0000001 + 2003-01-01T00:00:00.000 + + 2003-01-01T00:00:00.000 + REISEDOK_ANLEGEN + Reisedokument anlegen + + + 09999 + + test@bmi.gv.at + + + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personaendern/personaendernresponse2.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personaendern/personaendernresponse2.xml new file mode 100644 index 00000000..d824dfac --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personaendern/personaendernresponse2.xml @@ -0,0 +1,110 @@ + + + + + + GP_Person_aendern + 1234 + A + 00034 + + ZPR_VO_Person_aendern + C + false + true + + + + ZMR Server + 2004-01-26T00:00:00.000 + 1234567 + + + + 1234 + Personendaten wurden geändert + + + + 2004-01-26T00:00:00.000 + + + + 2434 + 2003-01-01T00:00:00.000 + + 2003-01-01T00:00:00.000 + GEBURT + Geburt + + + 09999 + + test@bmi.gv.at + + + 000111111111 + + + Anna + Mustermann + + + Huber + + weiblich + 2001-05-07 + Wien + Wien + Österreich + + AUT + Österreich + + + 0004 + 2004-01-26T00:00:00.000 + + + 2003-01-01T00:00:00.000 + STAATSANGEH_ANLEGEN + Staatsangehörigkeit anlegen + + + 09999 + + test@bmi.gv.at + + + + + + + + 0004 + 2004-01-26T00:00:00.000 + + + 2004-01-26T00:00:00.000 + REISEDOK_AENDERN + Reisedokument geändert + 2004-01-26T00:00:00.000 + + + 09999 + + test@bmi.gv.at + + + Reisedokument + 123 + 2003-01-01 + Libyen + 2004-01-26T00:00:00.000 + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personanlegen/personanlegenrequest.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personanlegen/personanlegenrequest.xml new file mode 100644 index 00000000..c9d604cd --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personanlegen/personanlegenrequest.xml @@ -0,0 +1,56 @@ + + + + + + GP_Person_anlegen + ZPR_VO_Person_anlegen + + + + 000000 + + Test + + + + 2004-01-26T00:00:00.000 + GEBURT + + + + + Max + Mustermann + + männlich + 2001-05-07 + Wien + Wien + Österreich + + AUT + + + + + + + 09999 + + H + + 1234567 + 111 + 1111111 + + + + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personanlegen/personanlegenresponse.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personanlegen/personanlegenresponse.xml new file mode 100644 index 00000000..dbc29ee8 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personanlegen/personanlegenresponse.xml @@ -0,0 +1,118 @@ + + + + + + GP_Person_anlegen + 1234 + A + 00034 + + ZPR_VO_Person_anlegen + C + false + true + + + + ZMR Server + 2004-01-26T00:00:00.000 + 1234567 + + + + 1234 + Person wurde angelegt + + + + 2004-01-26T00:00:00.000 + + + + 0000001 + 2004-01-26T00:00:00.000 + + 2004-01-26T00:00:00.000 + GEBURT + Geburt + + + 09999 + + test@bmi.gv.at + + + 000111111111 + + + Max + Mustermann + + männlich + 2001-05-07 + Wien + Wien + Österreich + + AUT + Österreich + + + 0000001 + 2004-01-26T00:00:00.000 + + 2004-01-26T00:00:00.000 + STAATSANGEH_ANLEGEN + Staatsangehörigkeit angelegt + + + 09999 + + test@bmi.gv.at + + + + + + + + 2004-01-26T00:00:00.000 + + + + 00000002 + 2004-01-26T00:00:00.000 + + 2004-01-26T00:00:00.000 + WSANM + Wohnsitz anmelden + + + 099999 + + + + + + 1245 + Testgemeinde + 09999 + Testort + + Teststrasse + 1 + H + + + XXX000 + + 2004-01-26T00:00:00.000 + WSANM + Wohnsitz anmelden + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personenabfrage/blaetternrequest.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personenabfrage/blaetternrequest.xml new file mode 100644 index 00000000..57395ab5 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personenabfrage/blaetternrequest.xml @@ -0,0 +1,27 @@ + + + + + + GP_Verknuepfungsanfrage + 1234 + + 00034 + ZPR_VO_Person_abfragen + + + + 000000 + + Test + + + + Vor + 3 + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personenabfrage/blaetternresponse.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personenabfrage/blaetternresponse.xml new file mode 100644 index 00000000..50e831f2 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personenabfrage/blaetternresponse.xml @@ -0,0 +1,210 @@ + + + + + + GP_Verknuepfungsanfrage + 1234 + A + 00034 + + ZPR_VO_Person_abfragen + A + false + true + + + + ZMR Server + 2004-01-26T00:00:00.000 + 1234567 + + + + + Test + + false + false + + + true + + 10 + + + + Max + Mustermann + + + + + 0003 + Es wurde 1 Personen im ZMR gefunden + + + 4 + 3 + + 4 + + + + + + + + + 2004-01-26T00:00:00.000 + + + + 0000001 + + 2004-01-26T00:00:00.000 + + 2004-01-26T00:00:00.000 + AMKOR + Amtliche Korrektur + + + 09999 + + test@bmi.gv.at + + + 000111111111 + + + Maximilian + Mustermann + + männlich + 2001-05-07 + Wien + Wien + Österreich + + AUT + Österreich + + + 0000001 + 2003-01-01T00:00:00.000 + + 2003-01-01T00:00:00.000 + REISEDOK_ANLEGEN + Reisedokument anlegen + + + 09999 + + test@bmi.gv.at + + + + + + + + + 2004-01-26T00:00:00.000 + + + + 0000001 + 2004-01-26T00:00:00.000 + + 2003-01-01T00:00:00.000 + GEBURT + Geburt + 2004-01-26T00:00:00.000 + + + 09999 + + test@bmi.gv.at + + + 000111111111 + + + Hans + Mustermann + + männlich + 2001-05-07 + Wien + Wien + Österreich + + AUT + Österreich + + + 0000001 + 2003-01-01T00:00:00.000 + + 2003-01-01T00:00:00.000 + REISEDOK_ANLEGEN + Reisedokument anlegen + + + 09999 + + test@bmi.gv.at + + + + + + + + + + + + 2004-01-26T00:00:00.000 + + + + 00000002 + + 2004-01-26T00:00:00.000 + + 2004-01-26T00:00:00.000 + WSANM + Wohnsitz anmelden + + + 099999 + + + + + + 1245 + Testgemeinde + 09999 + Testort + + Teststrasse + 1 + H + + + XXX000 + + 2004-01-26T00:00:00.000 + WSANM + Wohnsitz anmelden + + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personenabfrage/personenabfragedruckrequest.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personenabfrage/personenabfragedruckrequest.xml new file mode 100644 index 00000000..2a6cc5e0 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personenabfrage/personenabfragedruckrequest.xml @@ -0,0 +1,23 @@ + + + + + + GP_Verknuepfungsanfrage + ZPR_VO_Person_abfragen_drucken + + + + 000000 + + Test + + + 00001 + 00008 + 00003 + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personenabfrage/personenabfragedruckresponse.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personenabfrage/personenabfragedruckresponse.xml new file mode 100644 index 00000000..6463624b --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personenabfrage/personenabfragedruckresponse.xml @@ -0,0 +1,51 @@ + + + + + + GP_Verknuepfungsanfrage + 1234 + C + 00034 + + ZPR_VO_Person_abfragen_drucken + C + false + true + + + + ZMR Server + 2004-01-26T00:00:00.000 + 1234567 + + + + + Test + + false + false + + + true + + 10 + + + + Max + Mustermann + + + + + 0003 + Die Druckdaten wurden aufbereitet + + XXYY + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personenabfrage/personenabfragerequest.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personenabfrage/personenabfragerequest.xml new file mode 100644 index 00000000..a856e8ab --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personenabfrage/personenabfragerequest.xml @@ -0,0 +1,37 @@ + + + + + + GP_Verknuepfungsanfrage + ZPR_VO_Person_abfragen + + + + 000000 + + Test + + + + Test + + false + false + + + true + + 10 + + + + Max + Mustermann + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personenabfrage/personenabfrageresponse.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personenabfrage/personenabfrageresponse.xml new file mode 100644 index 00000000..70b6aef3 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personenabfrage/personenabfrageresponse.xml @@ -0,0 +1,209 @@ + + + + + + GP_Verknuepfungsanfrage + 1234 + A + 00034 + + ZPR_VO_Person_abfragen + A + false + true + + + + ZMR Server + 2004-01-26T00:00:00.000 + 1234567 + + + + + Test + + false + false + + + true + + 10 + + + + Max + Mustermann + + + + + 0003 + Es wurde 1 Personen im ZMR gefunden + + + 1 + 0 + 1 + + + + + + + + + 2004-01-26T00:00:00.000 + + + + 0000001 + + 2004-01-26T00:00:00.000 + + 2004-01-26T00:00:00.000 + AMKOR + Amtliche Korrektur + + + 09999 + + test@bmi.gv.at + + + 000111111111 + + + Maximilian + Mustermann + + männlich + 2001-05-07 + Wien + Wien + Österreich + + AUT + Österreich + + + 0000001 + 2003-01-01T00:00:00.000 + + 2003-01-01T00:00:00.000 + REISEDOK_ANLEGEN + Reisedokument anlegen + + + 09999 + + test@bmi.gv.at + + + + + + + + + 2004-01-26T00:00:00.000 + + + + 0000001 + 2004-01-26T00:00:00.000 + + 2003-01-01T00:00:00.000 + GEBURT + Geburt + 2004-01-26T00:00:00.000 + + + 09999 + + test@bmi.gv.at + + + 000111111111 + + + Hans + Mustermann + + männlich + 2001-05-07 + Wien + Wien + Österreich + + AUT + Österreich + + + 0000001 + 2003-01-01T00:00:00.000 + + 2003-01-01T00:00:00.000 + REISEDOK_ANLEGEN + Reisedokument anlegen + + + 09999 + + test@bmi.gv.at + + + + + + + + + + + + 2004-01-26T00:00:00.000 + + + + 00000002 + + 2004-01-26T00:00:00.000 + + 2004-01-26T00:00:00.000 + WSANM + Wohnsitz anmelden + + + 099999 + + + + + + 1245 + Testgemeinde + 09999 + Testort + + Teststrasse + 1 + H + + + XXX000 + + 2004-01-26T00:00:00.000 + WSANM + Wohnsitz anmelden + + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personensuche/blaetternrequest.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personensuche/blaetternrequest.xml new file mode 100644 index 00000000..4458527e --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personensuche/blaetternrequest.xml @@ -0,0 +1,27 @@ + + + + + + GP_Person_suchen_Meldevorgang + 1234 + + 00034 + ZPR_VO_Person_suchen_Meldevorgang + + + + 000000 + + Test + + + + Vor + 3 + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personensuche/blaetternresponse.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personensuche/blaetternresponse.xml new file mode 100644 index 00000000..f082c3cc --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personensuche/blaetternresponse.xml @@ -0,0 +1,210 @@ + + + + + + GP_Person_suchen_Meldevorgang + 1234 + A + 00034 + + ZPR_VO_Person_suchen_Meldevorgang + A + false + true + + + + ZMR Server + 2004-01-26T00:00:00.000 + 1234567 + + + + + Test + + false + false + + + true + + 10 + + + + Max + Mustermann + + + + + 0003 + Es wurde 1 Personen im ZMR gefunden + + + 4 + 3 + + 4 + + + + + + + + + 2004-01-26T00:00:00.000 + + + + 0000001 + + 2004-01-26T00:00:00.000 + + 2004-01-26T00:00:00.000 + AMKOR + Amtliche Korrektur + + + 09999 + + test@bmi.gv.at + + + 000111111111 + + + Maximilian + Mustermann + + männlich + 2001-05-07 + Wien + Wien + Österreich + + AUT + Österreich + + + 0000001 + 2003-01-01T00:00:00.000 + + 2003-01-01T00:00:00.000 + REISEDOK_ANLEGEN + Reisedokument anlegen + + + 09999 + + test@bmi.gv.at + + + + + + + + + 2004-01-26T00:00:00.000 + + + + 0000001 + 2004-01-26T00:00:00.000 + + 2003-01-01T00:00:00.000 + GEBURT + Geburt + 2004-01-26T00:00:00.000 + + + 09999 + + test@bmi.gv.at + + + 000111111111 + + + Hans + Mustermann + + männlich + 2001-05-07 + Wien + Wien + Österreich + + AUT + Österreich + + + 0000001 + 2003-01-01T00:00:00.000 + + 2003-01-01T00:00:00.000 + REISEDOK_ANLEGEN + Reisedokument anlegen + + + 09999 + + test@bmi.gv.at + + + + + + + + + + + + 2004-01-26T00:00:00.000 + + + + 00000002 + + 2004-01-26T00:00:00.000 + + 2004-01-26T00:00:00.000 + WSANM + Wohnsitz anmelden + + + 099999 + + + + + + 1245 + Testgemeinde + 09999 + Testort + + Teststrasse + 1 + H + + + XXX000 + + 2004-01-26T00:00:00.000 + WSANM + Wohnsitz anmelden + + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personensuche/personensucherequest.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personensuche/personensucherequest.xml new file mode 100644 index 00000000..ca8bf47e --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personensuche/personensucherequest.xml @@ -0,0 +1,37 @@ + + + + + + GP_Person_suchen_Meldevorgang + ZPR_VO_Person_suchen_Meldevorgang + + + + 000000 + + Test + + + + Test + + false + false + + + true + + 10 + + + + Max + Mustermann + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personensuche/personensucheresponse.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personensuche/personensucheresponse.xml new file mode 100644 index 00000000..5a2526fa --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personensuche/personensucheresponse.xml @@ -0,0 +1,209 @@ + + + + + + GP_Person_suchen_Meldevorgang + 1234 + A + 00034 + + ZPR_VO_Person_suchen_Meldevorgang + A + false + true + + + + ZMR Server + 2004-01-26T00:00:00.000 + 1234567 + + + + + Test + + false + false + + + true + + 10 + + + + Max + Mustermann + + + + + 0003 + Es wurde 1 Personen im ZMR gefunden + + + 1 + 0 + 1 + + + + + + + + + 2004-01-26T00:00:00.000 + + + + 0000001 + + 2004-01-26T00:00:00.000 + + 2004-01-26T00:00:00.000 + AMKOR + Amtliche Korrektur + + + 09999 + + test@bmi.gv.at + + + 000111111111 + + + Maximilian + Mustermann + + männlich + 2001-05-07 + Wien + Wien + Österreich + + AUT + Österreich + + + 0000001 + 2003-01-01T00:00:00.000 + + 2003-01-01T00:00:00.000 + REISEDOK_ANLEGEN + Reisedokument anlegen + + + 09999 + + test@bmi.gv.at + + + + + + + + + 2004-01-26T00:00:00.000 + + + + 0000001 + 2004-01-26T00:00:00.000 + + 2003-01-01T00:00:00.000 + GEBURT + Geburt + 2004-01-26T00:00:00.000 + + + 09999 + + test@bmi.gv.at + + + 000111111111 + + + Hans + Mustermann + + männlich + 2001-05-07 + Wien + Wien + Österreich + + AUT + Österreich + + + 0000001 + 2003-01-01T00:00:00.000 + + 2003-01-01T00:00:00.000 + REISEDOK_ANLEGEN + Reisedokument anlegen + + + 09999 + + test@bmi.gv.at + + + + + + + + + + + + 2004-01-26T00:00:00.000 + + + + 00000002 + + 2004-01-26T00:00:00.000 + + 2004-01-26T00:00:00.000 + WSANM + Wohnsitz anmelden + + + 099999 + + + + + + 1245 + Testgemeinde + 09999 + Testort + + Teststrasse + 1 + H + + + XXX000 + + 2004-01-26T00:00:00.000 + WSANM + Wohnsitz anmelden + + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/persontrennen/persontrennenrequest.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/persontrennen/persontrennenrequest.xml new file mode 100644 index 00000000..82643121 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/persontrennen/persontrennenrequest.xml @@ -0,0 +1,37 @@ + + + + + + GP_Person_trennen + 1234 + + 11111 + ZPR_VO_Person_trennen_durchfuehren + + + + 000000 + + Test + + + + + 123 + 2004-01-01T00:00:00.000 + + 000111111111 + + + + 1234 + 2004-01-01T00:00:00.000 + + N + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/persontrennen/persontrennensucherequest.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/persontrennen/persontrennensucherequest.xml new file mode 100644 index 00000000..2ab231dd --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/persontrennen/persontrennensucherequest.xml @@ -0,0 +1,21 @@ + + + + + + GP_Person_trennen + ZPR_VO_Person_trennen_darstellen + + + + 000000 + + Test + + + 000111111111 + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personzusammenfuehren/personzusammenfuehrenrequest.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personzusammenfuehren/personzusammenfuehrenrequest.xml new file mode 100644 index 00000000..0442b0e0 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personzusammenfuehren/personzusammenfuehrenrequest.xml @@ -0,0 +1,37 @@ + + + + + + GP_Person_zusammenfuehren + 1234 + + 11111 + ZPR_VO_Person_zusammenfuehren_durchfuehren + + + + 000000 + + Test + + + + + 123 + 2004-01-01T00:00:00.000 + + 000111111111 + + + + 222 + 2004-02-01T00:00:00.000 + + 000222222222 + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personzusammenfuehren/personzusammenfuehrensucherequest.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personzusammenfuehren/personzusammenfuehrensucherequest.xml new file mode 100644 index 00000000..be5b38ba --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/personzusammenfuehren/personzusammenfuehrensucherequest.xml @@ -0,0 +1,22 @@ + + + + + + GP_Person_zusammenfuehren + ZPR_VO_Person_zusammenfuehren_darstellen + + + + 000000 + + Test + + + 000111111111 + 000222222222 + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/wohnsitzabmelden/wohnsitzabmeldenrequest.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/wohnsitzabmelden/wohnsitzabmeldenrequest.xml new file mode 100644 index 00000000..69675bd3 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/wohnsitzabmelden/wohnsitzabmeldenrequest.xml @@ -0,0 +1,40 @@ + + + + + + + GP_Wohnsitz_abmelden + ZMR_VO_Wohnsitz_abmelden + + + + 000000 + + Test + + + + + 2004-01-26T00:00:00.000 + WSABM + + + + 0000001 + 2003-01-01T00:00:00.000 + + 000111111111 + + + + 0000002 + 2003-01-01T00:00:00.000 + + H + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/wohnsitzabmelden/wohnsitzabmeldenresponse.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/wohnsitzabmelden/wohnsitzabmeldenresponse.xml new file mode 100644 index 00000000..a1f2a361 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/wohnsitzabmelden/wohnsitzabmeldenresponse.xml @@ -0,0 +1,77 @@ + + + + + + GP_Wohnsitz_abmelden + 1234 + C + 00034 + + ZMR_VO_Wohnsitz_abmelden + C + false + true + + + + ZMR Server + 2004-01-26T00:00:00.000 + 1234567 + + + + 1234 + Der Wohnsitz wurde abgemeldet + + + + 0000001 + 2003-01-01T00:00:00.000 + + 000111111111 + + + + 2004-01-26T00:00:00.000 + + + + 0000002 + 2004-01-26T00:00:00.000 + + + 2004-01-26T00:00:00.000 + WSABM + Wohnsitz abmelden + 2004-01-26T00:00:00.000 + + + 099999 + + + + + + 1245 + Testgemeinde + 09999 + Testort + + Teststrasse + 1 + H + + + XXX000 + + 2003-01-01T00:00:00.000 + WSABM + Wohnsitz abmelden + 2004-01-26T00:00:00.000 + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/wohnsitzanmelden/wohnsitzanmeldenrequest.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/wohnsitzanmelden/wohnsitzanmeldenrequest.xml new file mode 100644 index 00000000..44ebbb56 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/wohnsitzanmelden/wohnsitzanmeldenrequest.xml @@ -0,0 +1,48 @@ + + + + + + GP_Wohnsitz_anmelden + ZMR_VO_Wohnsitz_anmelden + + + + 000000 + + Test + + + + + 2004-01-26T00:00:00.000 + WSANM + + + + 0000001 + 2003-01-01T00:00:00.000 + + 000111111111 + + + + + 09999 + + H + + 1234567 + 111 + 1111111 + + + + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/wohnsitzanmelden/wohnsitzanmeldenresponse.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/wohnsitzanmelden/wohnsitzanmeldenresponse.xml new file mode 100644 index 00000000..ccbc350d --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/wohnsitzanmelden/wohnsitzanmeldenresponse.xml @@ -0,0 +1,79 @@ + + + + + + GP_Wohnsitz_anmelden + 1234 + C + 00034 + + ZMR_VO_Wohnsitz_anmelden + C + false + true + + + + ZMR Server + 2004-01-26T00:00:00.000 + 1234567 + + + + 1234 + Der Wohnsitz wurde angemeldet + + + + 0000001 + 2003-01-01T00:00:00.000 + + 000111111111 + + + + 2004-01-26T00:00:00.000 + + + + 00000002 + 2004-01-26T00:00:00.000 + + 2004-01-26T00:00:00.000 + WSANM + Wohnsitz anmelden + + + 099999 + + + + + + 1245 + Testgemeinde + 09999 + Testort + + Teststrasse + 1 + H + + 1234567 + 111 + 1111111 + + + + XXX000 + + 2004-01-26T00:00:00.000 + WSANM + Wohnsitz anmelden + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/wohnsitzummelden/wohnsitzummeldenrequest.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/wohnsitzummelden/wohnsitzummeldenrequest.xml new file mode 100644 index 00000000..039626bb --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/wohnsitzummelden/wohnsitzummeldenrequest.xml @@ -0,0 +1,60 @@ + + + + + + GP_Wohnsitz_ummelden + ZMR_VO_Wohnsitz_ummelden + + + + 000000 + + Test + + + + 2004-01-26T00:00:00.000 + HWS_NWS_HWS + + + + 0000001 + 2003-01-01T00:00:00.000 + + 000111111111 + + + + + + 0000003 + 2003-01-01T00:00:00.000 + + H + + + + + + + + 09999 + + H + + 1234567 + 111 + 1111111 + + + + + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/wohnsitzummelden/wohnsitzummeldenresponse.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/wohnsitzummelden/wohnsitzummeldenresponse.xml new file mode 100644 index 00000000..1af5a374 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/wohnsitzummelden/wohnsitzummeldenresponse.xml @@ -0,0 +1,124 @@ + + + + + + GP_Wohnsitz_ummelden + 1234 + C + 00034 + + ZMR_VO_Wohnsitz_ummelden + C + false + true + + + + ZMR Server + 2004-01-26T00:00:00.000 + 1234567 + + + + 1234 + Ummeldung erfolgreich durchgeführt + + + + 0000001 + 2003-01-01T00:00:00.000 + + 000111111111 + + + + + 2004-01-26T00:00:00.000 + + + + 0000003 + 2004-01-26T00:00:00.000 + + 2004-01-26T00:00:00.000 + HWS_ABM_HWS + Hauptwohnsitz wird abgemeldet, neuer Hauptwohnsitz + 2004-01-26T00:00:00.000 + + + 099999 + + + + + + 1245 + Testgemeinde + 09999 + Testort + + Teststrasse + 2 + H + + 1111111 + 111 + 1111111 + + + + XXX000 + + 2003-01-01T00:00:00.000 + HWS_ABM_HWS + Hauptwohnsitz wird abgemeldet, neuer Hauptwohnsitz + 2004-01-26T00:00:00.000 + + + + + 2004-01-26T00:00:00.000 + + + + 0000012 + 2004-01-26T00:00:00.000 + + 2004-01-26T00:00:00.000 + HWS_ABM_HWS + Hauptwohnsitz wird abgemeldet, neuer Hauptwohnsitz + + + 099999 + + + + + + 1245 + Testgemeinde + 09999 + Testort + + Teststrasse + 1 + H + + 1234567 + 111 + 1111111 + + + + XXX000 + + 2004-01-26T00:00:00.000 + HWS_ABM_HWS + Hauptwohnsitz wird abgemeldet, neuer Hauptwohnsitz + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/zuzugsbestaetigung/zuzugsbestaetigungrequest.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/zuzugsbestaetigung/zuzugsbestaetigungrequest.xml new file mode 100644 index 00000000..35dae59d --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/zuzugsbestaetigung/zuzugsbestaetigungrequest.xml @@ -0,0 +1,25 @@ + + + + + + GP_Zuzugsbestaetigung_anfordern + ZMR_VO_Zuzugsbestaetigung_anfordern + + + + 000000 + + Test + + + + 09999 + 2004-01-01T00:00:00.000 + 2004-01-05T00:00:00.000 + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/zuzugsbestaetigung/zuzugsbestaetigungresponse.xml b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/zuzugsbestaetigung/zuzugsbestaetigungresponse.xml new file mode 100644 index 00000000..a9ef5a38 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/testxml/zmr/zuzugsbestaetigung/zuzugsbestaetigungresponse.xml @@ -0,0 +1,64 @@ + + + + + + GP_Zuzugsbestaetigung_anfordern + 1234 + C + 00034 + + ZMR_VO_Zuzugsbestaetigung_anfordern + C + false + true + + + + ZMR Server + 2004-01-26T00:00:00.000 + 1234567 + + + + + 09999 + 2004-01-01T00:00:00.000 + 2004-01-05T00:00:00.000 + + + + 0012 + Die Zuzugsdaten wurden erzeugt + + + 100 + 2 + + + 000111111111 + Mustermann + Max + 2000-01-01 + + 2004-01-01T00:00:00.000 + 09999 + Testgemeinde + + + + 000111111112 + Mustermann + Ida + 2001-01-01 + + 2004-01-02T00:00:00.000 + 09999 + Testgemeinde + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/wsdl/Messages.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/wsdl/Messages.xsd new file mode 100644 index 00000000..112598a4 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/wsdl/Messages.xsd @@ -0,0 +1,215 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/wsdl/Service.wsdl b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/wsdl/Service.wsdl new file mode 100644 index 00000000..3dbeabc7 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/wsdl/Service.wsdl @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/wsdl/secext.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/wsdl/secext.xsd new file mode 100644 index 00000000..1005b12a --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/wsdl/secext.xsd @@ -0,0 +1,150 @@ + + + + + + + This element defines header block to use for security-relevant data directed at a specific SOAP actor. + + + + + + + + The use of "any" is to allow extensibility and different forms of security data. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A security token that is encoded in binary + + + + + + + + + + + + + + + + This element is used reference a security token. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/wsdl/secext_pvp.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/wsdl/secext_pvp.xsd new file mode 100644 index 00000000..24896b99 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/wsdl/secext_pvp.xsd @@ -0,0 +1,152 @@ + + + + + + + + This element defines header block to use for security-relevant data directed at a specific SOAP actor. + + + + + + + + + The use of "any" is to allow extensibility and different forms of security data. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A security token that is encoded in binary + + + + + + + + + + + + + + + + This element is used reference a security token. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/allgemein/Auswertungen.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/allgemein/Auswertungen.xsd new file mode 100644 index 00000000..c5efb2f6 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/allgemein/Auswertungen.xsd @@ -0,0 +1,200 @@ + + + + + + + + + + + Request zum Auflisten der im ZMR für eine Organisation erzeugten Auswertungen + Ist InclusiveAbgeholte='true', werden auch die Auswerungen geliefert, die schon abgeholt wurden. + + + + + + + + + + + + + + + + + + In der Response werden die für die Organisation erzeugten Auswertungen als Liste geliefert. + Die Auswertungen sind nach GeneriertAm aufsteigend sortiert + + + + + + + + + + + + + + + + + + Wenn alle Teile (Auswertungsdaten) einer Auswertung abgeholt (mittels HTTP-Get) und erfolgreich + verarbeitet wurden, muss dieser Request zum 'Abschliessen' der Auswertung geschickt werden. + Abgeholte Auswertungen werden nur nuch dann geliefert, wenn InclusiveAbgeholte='true' gesetzt ist. + Es muss die EntityID der abgeholten Auswertung geschickt werden. + + + + + + + + + + + + + Response mit EntityID der abgeholten Auswertung + + + + + + + + + + + + + + Sobald eine Auswertung erzeugt wurde, kann über diese Schnittstelle der Empfänger aktiv verständigt werden (PUSH-Mechanismus) + + + + + + + + + + + + + + Bestätigung des Empfängers, die Verstänfigung erhalten zu haben + + + + + + + + + + + + + Innerhalb einer Auswertung werden die geteilten Files aufsteigend durchnummeriert geliefert. + Als erster Schüssel der Sortierung dient der Datentyp, als zweiter die Nummerierung + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Das File mit dem Auswertungsteil ist über den angegebenen (zur ZMR-Applikationsroot) + relativen URL referenziert und kann mittels HTTP-GET abgeholt werden. + + + + + + + + + + + + + + + + + + + + + + Falls die Auswertung schon einmal abgeholt wurde, wird dieser Datenteil mit den + Informationen zur Abholung (Organisation, Zeitpunkt) geliefert. + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/allgemein/BasTabelleAbfrage.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/allgemein/BasTabelleAbfrage.xsd new file mode 100644 index 00000000..4c2387d7 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/allgemein/BasTabelleAbfrage.xsd @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + + + + Definiert welche Tabelle mit welchen Suchkriterien aufgelistet werden soll. + InclusivHistorie: bestimmt ob nur aktuelle oder auch (fachlich) historische Einträge aufgelistet werden sollen + LetzteAenderungNach: Gibt man hier ein Datum an, werden nur Einträge gelistet, deren LetzteAenderung Datum nach diesem ist + + + + + + + + + + + + + + Enthält alle gefunden Einträge der entsprechenden BAS-Tabelle + + + + + + + + + + + + + + + + + Ein BAS.STAAT Eintrag mit den üblichen technischen und allen fachlichen Informationen + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ein BAS.AKADGRAD Eintrag mit den üblichen technischen und allen fachlichen Informationen + + + + + + + + + + + + + + + + + + Ein BAS.DOMAINCODE Eintrag mit den fürs ZMR3 relevanten Feldern + + + + + + + + + + + + + Ein BAS.GEMNRBEHKZ Eintrag mit den fürs ZMR3 relevanten Feldern + + + + + + + + + + Ein GW2.TGEM Eintrag mit den fürs ZMR3 relevanten Feldern + + + + + + + + + + Eine Rolle mit den erlaubten Geschäftsprozessen + + + + + + + + + + + + Ein Geschäftsprozess zu einer Rolle mit optionaler Einschränkung auf bestimmte Vorgänge + + + + + + + + + + + + Ein Geschäftsprozess zu einer Rolle mit optionaler Einschränkung auf bestimmte Vorgänge + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/allgemein/Benutzereinstellungen.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/allgemein/Benutzereinstellungen.xsd new file mode 100644 index 00000000..45bb9795 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/allgemein/Benutzereinstellungen.xsd @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + Leerer Request, die Identifikation des Benutzers wird aus den Logindaten gewonnen + + + + + + + + + + Benutzereinstellungsdaten des abfragenden Benutzers. + + + + + + + + + + + + + geaenderte Benutzereinstellungen + + + + + + + + + + Benutzereinstellungsdaten des abfragenden Benutzers. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/allgemein/GeschaeftsprozesseAuflisten.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/allgemein/GeschaeftsprozesseAuflisten.xsd new file mode 100644 index 00000000..34f8354c --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/allgemein/GeschaeftsprozesseAuflisten.xsd @@ -0,0 +1,64 @@ + + + + + + + + + + + + Request zum Auflisten der für den aktiven User verfügbaren Geschäftsprozesse. + Dieses Feld wird, genauso wie z.B. PersonSuchenRequest, innerhalb eines base:Request geschickt. + + + + + + + + + + + + Enthält die Liste mit den für den User verfügbaren Geschäftsprozessen, sowie deren Sub-Prozesse (Vorgänge) + als Baumstruktur aufgebaut. Ein eintrag in der Liste enspricht einem Geschäftsprozess. + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/allgemein/Messages.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/allgemein/Messages.xsd new file mode 100644 index 00000000..47dcda53 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/allgemein/Messages.xsd @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/allgemein/Organisationseinstellungen.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/allgemein/Organisationseinstellungen.xsd new file mode 100644 index 00000000..b5058e1b --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/allgemein/Organisationseinstellungen.xsd @@ -0,0 +1,151 @@ + + + + + + + + + + + + geaenderte Benutzereinstellungen + + + + + + + + + + Benutzereinstellungsdaten des abfragenden Benutzers. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/allgemein/Service.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/allgemein/Service.xsd new file mode 100644 index 00000000..81cd3e80 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/allgemein/Service.xsd @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/AbfrageMuster.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/AbfrageMuster.xsd new file mode 100644 index 00000000..c7163abe --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/AbfrageMuster.xsd @@ -0,0 +1,140 @@ + + + + + + Daten zu einem Suchmuster (Ausdruck) + + + + + + + + + + + Dient zur Klammerung von Suchmuster-Ausdrücken. + Muss erst dann unterstützt werden, wenn eine Klammerung nötig wird. + + + + + + + + + + + + Eine Sucheinschränkung (= Einschränkung für ein Feld) + + + + + + + + + + + + Verknüpfung mit der nächsten Zeile (Default: AND) + + + + + + + + + + + + Mögliche Vergleichsoperatoren. + + + + + + + + + + + + + + + + + + + + + + + Daten zur Sortierung einer Abfrage + + + + + + + + + + Sortierungsschluessel einer Abfrage + + + + + + + + + + + + + + + + + + + + + + + + + + + + Daten zur Parametrisierung einer Abfrage + + + + + + + + + + Ein einzelner Abfrageparameter + + + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/AkademischerGradFelder.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/AkademischerGradFelder.xsd new file mode 100644 index 00000000..da73c389 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/AkademischerGradFelder.xsd @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/Blaettern.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/Blaettern.xsd new file mode 100644 index 00000000..943439b8 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/Blaettern.xsd @@ -0,0 +1,56 @@ + + + + + + + + + + Für Suchvorgänge, in deren Ergebnisliste geblättert werden kann, stellt dieser Request + eine generische Schnittstelle zum Blättern dar. Er wird mit demselben Vorgang-Namen in der + Workflowschnittstelle geschickt, wie der ursprüngliche Suche-Request. Als Ergebnis wird + das Suchergebnis des ensprechenden Suchvorgangs analog zur rsprünglichen Suche-Response geliefert. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/DokumentFelder.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/DokumentFelder.xsd new file mode 100644 index 00000000..0c38ec09 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/DokumentFelder.xsd @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/EingebundenProxy.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/EingebundenProxy.xsd new file mode 100644 index 00000000..de80a94f --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/EingebundenProxy.xsd @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/Entity.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/Entity.xsd new file mode 100644 index 00000000..a5fbac59 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/Entity.xsd @@ -0,0 +1,135 @@ + + + + + + + + + + Referenziert eine Entity in der Datenbank für Suchergebnisse + + + + + + + + + + + + + + + Referenziert eine Entity in der Datenbank für Aenderungen (immer die aktuellste, das heisst jüngstes 'Von') + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Die derzeit bekannten Organisationen sind strikt definiert (BehoerdenNr, GemeindeNr, KundenNr); + neue, noch nicht definierte Organiationen, können mittels eines (Orgtyp, OrgCode)-Paares übermittelt werden. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/InfoFachlich.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/InfoFachlich.xsd new file mode 100644 index 00000000..20212cc2 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/InfoFachlich.xsd @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + Letze-Änderung-Timestamp des Gesamt-Satzes (Jüngster Timestamp aller Entities im Satz), + Muss bei einem Änderungsvorgang als Letzte-Änderung-Timestamp geschickt werden. + + + + + + + + + + + + + + + + + + + + + + + + + + + + allgemeine fachliche Informationen + + + + + + + + + + + + + Bereichspezifische Bürgerkarten-Information einer Person + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/InfoTechnisch.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/InfoTechnisch.xsd new file mode 100644 index 00000000..e23ff4fe --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/InfoTechnisch.xsd @@ -0,0 +1,103 @@ + + + + + + + + + + + Technische Client-Informationen + + + + + + + Herstellername der Client-Software inklusive Version (Bsp.: ZMRHTMLClient V3.0) + + + + + + + + + + + + + + + + + + + + + Technische Server-Informationen + + + + + + Applikationsname und -version + + + + + Generierung Timestamp + + + + + Transaktionsnummer des Servers + + + + + + Enthält neue User-Information (wie z.B. Information über Wartungarbeiten am ZMR) + Diese Info kann dem User am Bildschirm angezeigt werden. + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/MeldungFelder.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/MeldungFelder.xsd new file mode 100644 index 00000000..2179baaf --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/MeldungFelder.xsd @@ -0,0 +1,283 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/PersonDataZMR.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/PersonDataZMR.xsd new file mode 100644 index 00000000..d5d2df47 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/PersonDataZMR.xsd @@ -0,0 +1,741 @@ + + + + + + + This version of person deploys only global elements. All types derived from abstract types have been replaced by substitution groups + + + + + unique identification entities + + + + + unique identifier + + + + + actual value of the identifier. + + + + + type of value (eg 'ZMR', 'SV-Nummer', 'Martrikelnummer', database identification, ...) + + + + + zusätzliche felder + + + + + + + + + Personendatenstruktur + + + + + + + + + + + + + + element of physical person type + + + + + element of person type + + + + + + main structure of person data + + + + + unique identification entities + + + + + + + + + + physical person + + + + + + + + + + + + + + + + + any additional properties + + + + + + + + + + Former name, Artist name, changes of Given name ... type of name is given as attribute - choose from list or define new type + + + + + + + + + + + + + + + + + + + + known types of alternative names + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple type for dates (union), which may omit day and/or month + + + + + + + + simple type for dates (union), which may omit day and/or month + + + + + + + + + simple type for marital status of a person + + + + + + + + + + + + + + + + + + + + simple type for sex (gender) of person + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + any additional properties + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Post oder ZMR Adresse, entspricht PostalAddress + + + + + main structure of address data + + + + + unique identification entities + + + + + + + + + postal address + + + + + + + + + + + + + + + + + + + any additional properties + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Entspricht InternetAddress + + + + + Container für Telefonnummern, entspricht TelephoneAddress + + + + + + internet based communication + + + + + + + certificate for secure communication + + + + + eURI: mail-Adresse, Web, FTP, LDAP, ..., entspricht Address + + + + + + + + + + + any additional properties + + + + + + + + + + phone numbers + + + + + + + type of phononumber - category (eg 'Festnetz', 'Mobile', 'fax', ...) + + + + + + + + + + + + phonenumber + + + + + any additional properties + + + + + + + + + + + + + + + + + + + + + + + + + + + entspricht InternationalCountryCode + + + + + entspricht NationalNumber + + + + + entspricht AreaCityCode + + + + + entspricht SubscriberNumber + + + + + + + + + + + + + + entspricht Extension + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + entspricht Region + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/PersonExport.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/PersonExport.xsd new file mode 100644 index 00000000..5987d099 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/PersonExport.xsd @@ -0,0 +1,107 @@ + + + + + + Definiert allgemein nutzbare Export-Schnittstelle um eine Liste von Personen abzubilden. + + + + + + Root-Element des Personenexports. + + + + + + Root-Element des Personenexports. + + + + + + + + + + + + + + + + Gruppiert nach Personen werden alle Elemente in dieser + Liste abgebildet. + + + + + + + + + Dieser Type beinhaltet alle Elemente die zu einer Person gehören. + + + + + + + + Diese Liste beinhaltet alle Sätze die zu einer + Person gehören. Unabhängig von der Tabelle oder + Strang-Historie. + Fehlt die Liste, ist die Entity zu löschen. + + + + + + + + + + Dieser Type beinhaltet alle Elemente die sich auf einen Eintrag + in einer beliebigen Tabelle beziehen. + + + + + + + + + + + + + + + + + + + + + Generiersche Name/Wert-Paare für Export + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/PersonFelder.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/PersonFelder.xsd new file mode 100644 index 00000000..600e01c3 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/PersonFelder.xsd @@ -0,0 +1,70 @@ + + + + + + + + Personendaten-Felder + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple type for dates (union), which may omit day and/or month + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/Protokollierung.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/Protokollierung.xsd new file mode 100644 index 00000000..c9bc3b1a --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/Protokollierung.xsd @@ -0,0 +1,496 @@ + + + + + + + + + + + + + + + + Das Element Dienststelle identifiziert die Dienststelle mit den verschiedenen definierten + Codes und Kennzeichen. + + + + + 3-Stelliger Dienststellencode. Wird im neuen Portal wegfallen??? + + + + + + + + + + + + Klartextname der durchfuehrenden Dienststelle. PVP.ou + + + + + + Emailadresse der Organisationseinheit/Dienststelle + + + + + + + + + + + + + + + + + + Verwaltungskennzeichen (VKZ) der durchfuehrenden Dienststelle + (PVP-Header). Kunde fuer Verrechnung + + + + + Bundesweite eindeutige ID der Dienststelle (vom Portal) fuer Verrechnung. + PVP.gvOuId - bleibt das? + + + + + Verwaltungskennzeichen (VKZ) der Kostenstelle des Users aus + PVP-Header normalerweise der Kunde (BMI Kundennummer) fuer Verrechnung. PVP.CostCenterId + + + + + Verwaltungskennzeichen (VKZ) des Rechnungsempfaengers aus PVP-Header + Provider fuer Verrechnung. PVP.invoiceReceiptId + + + + + Liste von Codes aus PVP-Header fuer Verrechnung. PVP.ChargeCode + + + + + + + + + + + + + Applikationskurzzeichen, Beispiel: "X02" + + + + + Versionsnummer wie sie auch im GUI angezeigt wird + + + + + + Applikationskurzzeichen-Verarbeitungsbezeichnung + + + + + + + If (Anfrage oder Auskunft)="1" Else="0" + + + + + + + + + + + If Update="1" Else "0" + + + + + + + + + + + Summe der Anzahl der Treffer + + + + + + If Treffer="P", If Kein Treffer="N", If Treffer mit abweichenden Personendaten="I" + + + + + + + + + + + + z.B.: "X02A" "X02B" analog zu den Hosttransaktionen + + + + + + + + + + + Transaktionsnummer + + + + + + Behoerdenschluessel der durchfuehrenden Behoerde. Wenn in Applikation + geprueft, dann MUSS es vorhanden sein, sonst 000000 + + + + + + Entiwcklungsumgebung=WEBS, Testumgebung=WEBT, + Produktionsumgebung=WEBP + + + + + + + + + Das Element User identifiziert den User, der den Request ausgelöst hat und die + Dienststelle, welcher der Request zuzuordnen ist. + + + + + gvgid im Sinne des Portalverbundes, Wert der "OPK". PVP.gvGid + + + + + Familienname und Vorname. PVP.cn + + + + + Anmeldename des durchführenden Benutzers. PVP.userId + + + + + Emailadresse des Users aus PVP-Header. PVP.mail + + + + + + + + + + + + + + + + + + Dienststelle + + + + + + + + Vordefinierte Werte für Referenzarten: + * edv_zahl + * dastazahl + * numerator_nr + * geschaeftszahl + + + + + Transaktionsnummer + + + + + + + + + + + + String-Begruendung der Anfrage fuer den User "hilfreich" bei + DS-Rueckfrage. Manuelle Eingabe oder Vorgangsbeschreibung. + + + + + + + + Protokoll:Referenz + + + + + + SOAP Request im Fall von Abfragen, Suchen. Parameter wenn es sich um eine + Batchanforderung handelt, sonst leer. + Weitere applikationsspezifische Daten, allenfalls notwendige Tags + sind mit IV/2 abzustimmen. + Datumselemente: Art ist mit IV/2 abzustimmen. + + + + + + + + + + Zurueckgelieferte Person. + + + + + im ZMR: "ZMR-Meldung", "Meldepflichtiger". ERnP??? Definition??? + Attribute + art="personenrolle" + + + + + Familienname der Person. ZPR.famname + + + + + Vorname der Person. ZPR.vorname + + + + + Geburtsort + + + + + + Zu klären: + * was vom Akademischen Grad + * welche Grade + * Reihenfolge + * Kurzform, nur + vorangestellte? + + + + + Kennzeichen Geschlecht. + + + + + Geburtsstaat. Normierung? + + + + + JJJJMMTT created: Letztes Aenderungsdatum der Person. + + + + + zmrzahl + + + + + + + + + + + + + + + Liste von Adressen. Es wird nur eine Adresse ausgegeben (bisherige Logik) + + + + + + + + + + + + + Postleitzahl. Meldung.plz + + + + + Ortname (vereinfacht?). Meldung.ortname + + + + + Strassenname. Meldung.strname + + + + + Hausnummer. Meldung.hausnummer + + + + + + + + + + JJJJMMTT: Gebdatum + + + + + + JJJJMMTT: Suche mit unvollständigem Datum (Jahr) + + + + + JJJJMMTT: Suche mit unvollständigem Datum (Jahr) + + + + + + + + + Geburstsdatum oder Suchintervall + + + + + + + + DatumRedType: Format JJJJMMTT richtet sich nach + xsd:date, '00' bei Monat und Tag erlaubt. + Keine + Trennzeichen + + + + + + + + + + + TimeRedType: Format (mindestens HHMMSS) richtet sich + nach xsd:dateTime, ohne Datumsanteil und + ohne + Trennzeichen. 0 bis 3 Nachkommastellen sind zulaessig + + + + + + + + + + Maennlich="1", Weiblich="2", Unbekannt="3", Juristische Person="4". + "Juristische Person" ist nur in enstprechenden Anwendungen/Anwendungsfaellen zulaessig. + + + + + maennlich + + + + + weiblich + + + + + unbekannt + + + + + juristische Person + + + + + + + + im ZMR: "ZMR-Meldung", "Meldepflichtiger". ERnP??? + Definition??? Attribute + art="personenrolle" + + + + + + + + + + + + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/SimpleTypes.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/SimpleTypes.xsd new file mode 100644 index 00000000..77b3e59e --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/SimpleTypes.xsd @@ -0,0 +1,173 @@ + + + + + + + + IntegerType: nicht negativer Integer mit Maximalwert 2^31-1 (Beschränkung durch Datenbank) + + + + + + + + + DatumType: Format richtet sich nach xsd:date, '00' bei Monat und Tag erlaubt + + + + + + + + + + TimestampType: Format richtet sich nach xsd:dateTime, Angabe der Millisekunden ist Pflicht, Zeitzone nicht erlaubt + + + + + + + + + IDs + + + + + + + Entity-IDs (können auch alphanumerisch sein, z.B. alte edvzahlen) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/W3C-XMLDSig.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/W3C-XMLDSig.xsd new file mode 100644 index 00000000..63440043 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/W3C-XMLDSig.xsd @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/Workflow.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/Workflow.xsd new file mode 100644 index 00000000..729b61ee --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/Workflow.xsd @@ -0,0 +1,200 @@ + + + + + + + + + + + Workflowinformationen des Clients + + + + + + + + Wenn der Geschäftsprozess aus mehreren Vorgängen besteht, + müssen die ProzessinstanzID und SequenzID aus der letzten + Server-Response vom Client geschickt werden. + Beim ersten Vorgang eines neuen Geschäftsprozesses dürfen die beiden + Felder nicht geschickt werden. + Bei Beginn einen neuen Geschäftsprozesses SOLLTE die InstanzID des letztzen + Prozesses als VerlassenerProzessInstanzID mitgeschickt werden + + + + + + + + + + + + + + Workflowinformationen des Servers + + + + + + Der Prozessname dient zur technischen Identifikation des Prozesses, der ProzessAnzeigeName + kann zur Anzeige auf der Benutzeroberfläche verwendet werden. + + + + + + + + + + + + + + + + + Der VorgangName dient zur technischen Identifikation des Vorgangs, der VorgangAnzeigeName + kann zur Anzeige auf der Benutzeroberfläche verwendet werden. + Die Elemente VorgangRestriction und VorgangConditions werden in näherer Zukunft nicht implementiert + und können ignoriert werden (werden nicht befüllt). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + regionale Restriktion, die fuer den Vorgang gilt (z.B. Gemeindenummer, fuer die Personen angemeldet werden duerfen. + + + + + + + + + + + + + Liste von Bedingungen, unter denen das Item aktiv wird. + + + + + + Liste von alternativen Voraussetzungen (ODER) für die Anwählbarkeit der Activity. Ein Eintrag repräsentiert eine Reihe von Objekten, die im Suchergebnis ausgewählt sein müssen (UND). + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/gis-schnittstelle.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/gis-schnittstelle.xsd new file mode 100644 index 00000000..4228c88f --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/gis-schnittstelle.xsd @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/pvp1.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/pvp1.xsd new file mode 100644 index 00000000..68a1115d --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/pvp1.xsd @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + additional authentication properties + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + additional authorization properties + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + additional properties + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + additional principal attributes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/secext.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/secext.xsd new file mode 100644 index 00000000..1005b12a --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/secext.xsd @@ -0,0 +1,150 @@ + + + + + + + This element defines header block to use for security-relevant data directed at a specific SOAP actor. + + + + + + + + The use of "any" is to allow extensibility and different forms of security data. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A security token that is encoded in binary + + + + + + + + + + + + + + + + This element is used reference a security token. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/soapenv.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/soapenv.xsd new file mode 100644 index 00000000..a5db77f5 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/eingebunden/soapenv.xsd @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Prose in the spec does not specify that attributes are allowed on the Body element + + + + + + + + + + + + + + + + + + + + 'encodingStyle' indicates any canonicalization conventions followed in the contents of the containing element. For example, the value 'http://schemas.xmlsoap.org/soap/encoding/' indicates the pattern described in SOAP specification + + + + + + + + + + + + + + + Fault reporting structure + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/AblaufendeAuskunftssperrenSuche.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/AblaufendeAuskunftssperrenSuche.xsd new file mode 100644 index 00000000..cf5a661e --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/AblaufendeAuskunftssperrenSuche.xsd @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Enthält je einen 'PersonErgebnisSatz' pro gefundener Person. Wird keine Person gefunden, befindet sich eine entprechende Text-Message in 'PersonensucheMsg' + + + + + Gesamtanzahl der in der Datenbank gefundenen Personen + + + + + Beginn-Index dieser Ergebnisliste im Gesamtergebnis (bei Blaettern); Start mit 1 + + + + + Ende-Index dieser Ergebnisliste im Gesamtergebnis (bei Blaettern) + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Adoption.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Adoption.xsd new file mode 100644 index 00000000..81a29052 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Adoption.xsd @@ -0,0 +1,63 @@ + + + + + + + + + + + + Es können die Person und deren abhängige Entities (z.B. Staatsangehoerigkeit) unabhängig geändert werden. Felder, die nicht geschickt werden, bleiben unverändert, leer geschickte Felder werden gelöscht. + + + + + + + + + + + + + + Server-Antwort zur Adoption + + + + + + + Gesamtdatensatz der geänderten (adoptierten) Person (mit EntityIDs der Person und deren abhängigen Entities) + + + + + + + + + + allgemeine Fachliche Informationen zur Adoption + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Adresssuche.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Adresssuche.xsd new file mode 100644 index 00000000..41dab2e2 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Adresssuche.xsd @@ -0,0 +1,128 @@ + + + + + + + + + + + Suchdaten für die STATA - Adresssuche im ZMR + + + + + + + + + + + + Anfragedaten, sowie Suchergebnis oder Text-Meldung (falls nichts gefunden) + + + + + + + + + + + + + + + + + + + + + + + + + Fachliche Informationen zur Adresssuche + + + + + + + + + + + + + + + + + + + + Gibt der Detailgrad der Adressen im Suchergebnis an + + + + + + + + + + + + + + + + Gesamtanzahl der gefundenen Sätze + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Anwendungsintegration.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Anwendungsintegration.xsd new file mode 100644 index 00000000..4bdd43c5 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Anwendungsintegration.xsd @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + Suchkriterien für die Anwendungsintegration im ZMR/ERnP (Personendaten + Adressdaten) + + + + + + + + + + + + + + In der Response werden die Anfragedaten aus dem Request, und das Suchergebnis bzw. eine Text-Meldung geliefert (Falls keine Person gefunden) + + + + + + + + + + + + + + + Fachliche Informationen zur Anwendungsintegration + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/AnwendungsintegrationWiederholung.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/AnwendungsintegrationWiederholung.xsd new file mode 100644 index 00000000..6bbd038d --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/AnwendungsintegrationWiederholung.xsd @@ -0,0 +1,117 @@ + + + + + + + + + + + + + Sammel-Token für die AnwendungsintegrationWiederholung im ZMR/ERnP (Personendaten + Adressdaten) + + + + + + + + + + + + + Fachliche Informationen zur AnwendungsintegrationWiederholung + + + + + + + + + + + + + + + Verfahrensbereich inkl. Prefix für den die bPK errechnet werden soll (zb. urn:publicid:gv.at:cdid+PV) + + + + + + + + + + + + Fremd-bPKs die miterzeugt werden sollen. (zb. urn:publicid:gv.at:ecdid+BMI+ZP) + + + + + + + + + + + + + + + + Suchkriterien für die Anwendungsintegration/Wiederholungsabfrage im ZMR/ERnP (Personendaten + Adressdaten) + + + + + + + + + + + + + In der Response werden die Anfragedaten aus dem Request, und das Suchergebnis bzw. eine Text-Meldung geliefert (Falls keine Person gefunden) + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/AuskunftssperreAendern.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/AuskunftssperreAendern.xsd new file mode 100644 index 00000000..9e29f2f2 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/AuskunftssperreAendern.xsd @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + Server-Antwort zur Änderung von Auskunftssperren auf Meldungen + + + + + + + + Gesamtdatensatz der korrigierten Meldung (mit EntityIDs der Meldung und deren abhängigen Entities) + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/AvisoAendern.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/AvisoAendern.xsd new file mode 100644 index 00000000..37a3ac98 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/AvisoAendern.xsd @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Server-Antwort zur Avisonänderung + + + + + + + Gesamtdatensatz des geänderten Aviso + + + + + + + + + + + + + + + + + Server-Antwort zur Avisobeendugung + + + + + + + Gesamtdatensätze der beendeten Avisi + + + + + + + + + + Fachliche Informationen zur Avisoaenderung + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/AvisoAnlegen.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/AvisoAnlegen.xsd new file mode 100644 index 00000000..92c37432 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/AvisoAnlegen.xsd @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + Server-Antwort zur Avisonanlage + + + + + + + Gesamtdatensatz des im ZMR angelegten Aviso + + + + + + + + + + Fachliche Informationen zur Avisoanlage + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/AvisoFreigeben.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/AvisoFreigeben.xsd new file mode 100644 index 00000000..6291dd58 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/AvisoFreigeben.xsd @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + Server-Antwort mit den zu aktivierenden Avisi + + + + + + + + + + + + + + + + + + + + + Server-Antwort zur Aviso-Aktivierung + + + + + + + Gesamtdatensätze der freigegebenen/abgelehnten Avisi + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Avisosuche.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Avisosuche.xsd new file mode 100644 index 00000000..82e48c49 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Avisosuche.xsd @@ -0,0 +1,124 @@ + + + + + + + + + + + + Suchedaten fuer die Suche nach existierenden Avisi, sowie nach Personen im ZPR + + + + + + + + + + + + Anfragedaten, sowie Suchergebnis oder Text-Meldung (falls nichts gefunden) + + + + + + + + + + + + + + + + + + + + + + + + Fachliche Informationen zur Avisosuche + + + + + + + + + + + + + + + + Aviso-Struktur für die Suche nach Avisi bzw. Personen + + + + + + + + + + + + + + + + + + + + + + Aviso-Struktur für Neuanlagen von Avisi im ZMR + + + + + Gesamtanzahl der in der Datenbank gefundenen Avisi + + + + + Beginn-Index dieser Ergebnisliste im Gesamtergebnis (bei Blaettern); Start mit 1 + + + + + Ende-Index dieser Ergebnisliste im Gesamtergebnis (bei Blaettern) + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/BKMeldeauskunft.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/BKMeldeauskunft.xsd new file mode 100644 index 00000000..b82fae63 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/BKMeldeauskunft.xsd @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + allgemeine Fachliche Informationen für die Meldeauskunft + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/BPKPruefung.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/BPKPruefung.xsd new file mode 100644 index 00000000..eb9b3798 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/BPKPruefung.xsd @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + allgemeine Fachliche Informationen für die BPK-Pruefung + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Behoerdenabfrage.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Behoerdenabfrage.xsd new file mode 100644 index 00000000..6e764562 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Behoerdenabfrage.xsd @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + allgemeine Fachliche Informationen für die Behördenabfrage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/BehoerdenattributeAendern.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/BehoerdenattributeAendern.xsd new file mode 100644 index 00000000..aa4b2bbf --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/BehoerdenattributeAendern.xsd @@ -0,0 +1,68 @@ + + + + + + + + + + + + + Referenz-Daten der betroffenen Person und der Meldung, sowie die geänderten Behördenattribute. + Nicht übermittelte Felder bleiben unverändert, Felder, die als Leer-Tags geschickt werden, werden gelöscht. + + + + + + + + + + + + + + + Server-Antwort zum Änderungsvorgang + + + + + + + + Gesamtdatensatz der geänderten Meldung (geänderte Behördenattribute) + + + + + + + + + + allgemeine Fachliche Informationen zur Änderung der Behördenattribute + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Bestandsaenderungen.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Bestandsaenderungen.xsd new file mode 100644 index 00000000..8abbbedf --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Bestandsaenderungen.xsd @@ -0,0 +1,140 @@ + + + + + + + + + + + + Anfragedaten der Bestandsaenderungen-Anforderung + + + + + + + + + + + In der Response werden die Anfragedaten aus dem Request und das Abgleichergebnis geliefert. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gesamtanzahl der Bestandsaenderung-Saetze für diese Anfrage + + + + + Anzahl der im File gelieferten Bestandsaenderung-Saetze + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/BusinesspartnerAnfrage.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/BusinesspartnerAnfrage.xsd new file mode 100644 index 00000000..249aa0c0 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/BusinesspartnerAnfrage.xsd @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Businesspartnerabfrage.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Businesspartnerabfrage.xsd new file mode 100644 index 00000000..2831a33d --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Businesspartnerabfrage.xsd @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + allgemeine Fachliche Informationen für die BP-Abfrage + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/BusinesspartnerabfrageErweitert.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/BusinesspartnerabfrageErweitert.xsd new file mode 100644 index 00000000..75daf516 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/BusinesspartnerabfrageErweitert.xsd @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Datenabgleich.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Datenabgleich.xsd new file mode 100644 index 00000000..b953f052 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Datenabgleich.xsd @@ -0,0 +1,280 @@ + + + + + + + + + + + + + + Anfragedaten des Datenabgleichs (täglich, von-bis oder aktuell) + + + + + + + + + + + In der Response werden die Anfragedaten aus dem Request und das Abgleichergebnis geliefert. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gesamtanzahl der Abgleichsätze für diese Anfrage + + + + + Anzahl der im File gelieferten Abgleichsätze + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gesamtanzahl der Abgleichsätze für diese Anfrage + + + + + Anzahl der im File gelieferten Abgleichsätze + + + + + + + + + + + + + + + + + + + + + + Person-Struktur für Datenabgleich-Ergebnisse aus dem ZMR + + + + + + + + + + + + + + + Natuerliche Person (Suchergebnis) + + + + + + + + + + + + + + + + + + + + + + + + + + + + Meldung-Struktur für Suchergebnisse aus dem ZMR + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Person-Struktur für Datenabgleich-Ergebnisse aus dem ZMR + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/ErnpAbfrage.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/ErnpAbfrage.xsd new file mode 100644 index 00000000..db36e0d5 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/ErnpAbfrage.xsd @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Fremdenabfrage.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Fremdenabfrage.xsd new file mode 100644 index 00000000..e4a610ae --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Fremdenabfrage.xsd @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + allgemeine Fachliche Informationen für die Fremdenabfrage + + + + + + + + + + + + + + + + + + + + + + + + + + Enthält je einen 'PersonErgebnisSatz' pro gefundener Person. Wird keine Person gefunden, befindet sich eine entprechende Text-Message in 'base:Message' + + + + + Gesamtanzahl der in der Datenbank gefundenen Personen + + + + + Beginn-Index dieser Ergebnisliste im Gesamtergebnis (bei Blaettern); Start mit 0 + + + + + Ende-Index dieser Ergebnisliste im Gesamtergebnis (bei Blaettern) + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/GISAdressabfrage.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/GISAdressabfrage.xsd new file mode 100644 index 00000000..3f5bbe7f --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/GISAdressabfrage.xsd @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gesamtanzahl der in der Datenbank gefundenen Personen + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/GISSuche.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/GISSuche.xsd new file mode 100644 index 00000000..4989b13c --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/GISSuche.xsd @@ -0,0 +1,74 @@ + + + + + + + + + + + + Request zum Suchen von Personen mittels GIS-Daten + + + + + + + + + + + + + + + + + + + + + + + + + + + + Request zum Suchen von Personen mittels GIS-Daten + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Gemeindeeinstellungen.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Gemeindeeinstellungen.xsd new file mode 100644 index 00000000..5096e120 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Gemeindeeinstellungen.xsd @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + Lesen der Gemeindeeinstellungen + + + + + + + + + + + Lesen der Gemeindeeinstellungen + + + + + + + + + + + + + Aendern der Gemeindeeinstellungen + + + + + + + + + + + + Aendern der Gemeindeeinstellungen Ergebnismeldung + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Gerichtskommissaerabfrage.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Gerichtskommissaerabfrage.xsd new file mode 100644 index 00000000..6eacf127 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Gerichtskommissaerabfrage.xsd @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + allgemeine Fachliche Informationen für die Behördenabfrage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/GleichsetzungstabelleWarten.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/GleichsetzungstabelleWarten.xsd new file mode 100644 index 00000000..f5cd55cd --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/GleichsetzungstabelleWarten.xsd @@ -0,0 +1,185 @@ + + + + + + + + + + + Suchedaten fuer die Suche nach Einträgen in der Gleichsetzungstabelle + + + + + + + + + + + + + + + Anfragedaten, sowie Suchergebnis oder Text-Meldung (falls nichts gefunden) + + + + + + + + + + + + + Suchedaten fuer die Suche nach Einträgen in der Gleichsetzungstabelle + + + + + + + + + + + + + + Daten der angelegeten Gleichsetzung, sowie Erfolgsmeldung + + + + + + + + + + + + Suchedaten fuer die Suche nach Einträgen in der Gleichsetzungstabelle + + + + + + + + + + + + Daten der angelegeten Gleichsetzung, sowie Erfolgsmeldung + + + + + + + + + + + + + + + + + + + + + + + + + Fachliche Informationen zur Gleichsetzungstabelle - Abfrage + + + + + + + + + + Gleichsetzungstabelle - Suchereggebnis + + + + + Gesamtanzahl der in der Datenbank gefundenen Einträge + + + + + + + + + + Gleichsetzungstabelleneintrag + + + + + + + + + + + + + + + + + + + + + + + Fachliche Informationen einer Anlage in der Gleichsetzungstabelle + + + + + + + + + + + + + Fachliche Informationen für das Löschen eines Eintrages der Gleichsetzungstabelle + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Hauseigentuemerabfrage.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Hauseigentuemerabfrage.xsd new file mode 100644 index 00000000..b72bea37 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Hauseigentuemerabfrage.xsd @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Hauseigentuemerabfrage-Druckrequest (muss nach einer Hauseigentuemerabfrage mit derselben ProzessInstanzID aufgerufen werden) + + + + + Liste der EntityIDs der zu druckenden Meldungen (aus der vorangegangenen Hauseigentuemerabfrage) + + + + + + + + + + + + In der Response werden die Anfragedaten aus dem Request, und das Suchergebnis bzw. eine Text-Meldung geliefert (Falls keine Person gefunden) + + + + + + + + + + + + + + + + + + + + + + + allgemeine Fachliche Informationen für die Hauseigentuemerabfrage + + + + + + + + + + + + Enthält je einen 'PersonErgebnisSatz' pro gefundener Person. Wird keine Person gefunden, befindet sich eine entprechende Text-Message in 'base:Message' + + + + + Gesamtanzahl der in der Datenbank gefundenen Personen + + + + + Beginn-Index dieser Ergebnisliste im Gesamtergebnis (bei Blaettern); Start mit 1 + + + + + Ende-Index dieser Ergebnisliste im Gesamtergebnis (bei Blaettern) + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/IAPPersonenabfrage.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/IAPPersonenabfrage.xsd new file mode 100644 index 00000000..26165d66 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/IAPPersonenabfrage.xsd @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Meldeauskunft.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Meldeauskunft.xsd new file mode 100644 index 00000000..df262baf --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Meldeauskunft.xsd @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + allgemeine Fachliche Informationen für die Meldeauskunft + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Meldebestaetigung.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Meldebestaetigung.xsd new file mode 100644 index 00000000..4f8b6f93 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Meldebestaetigung.xsd @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + allgemeine Fachliche Informationen für die Meldebestaetigung + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + allgemeine Fachliche Informationen für die Meldebestaetigung + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/MeldebestaetigungenAnfordern.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/MeldebestaetigungenAnfordern.xsd new file mode 100644 index 00000000..0e08efd2 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/MeldebestaetigungenAnfordern.xsd @@ -0,0 +1,55 @@ + + + + + + + + + + Meldebestätigungen für alle Personen in der angegebenen Gemeinde. + + + + + + + + + + + + + + + + + + + + + + + Server-Antwort zur Anforderung von Massen-Meldebestätigungen + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/MeldungHistKorrigieren.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/MeldungHistKorrigieren.xsd new file mode 100644 index 00000000..b322b1b0 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/MeldungHistKorrigieren.xsd @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Server-Antwort zur Meldungkorrektur + + + + + + + + + Gesamtdatensatz der korrigierten Meldung (mit EntityIDs der Meldung und deren abhängigen Entities) + + + + + + + + + + + + + + + + + + + + + + + + + Meta-Informationen zur Meldungkorrektur + + + + + + + + + + + + + + mögliche Korrekturen für eine historische Meldung + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/ORFGISAnforderung.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/ORFGISAnforderung.xsd new file mode 100644 index 00000000..90e6d34a --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/ORFGISAnforderung.xsd @@ -0,0 +1,65 @@ + + + + + + + + + + + Anfragedaten der ORFGISAnforderung + + + + + + + + + + + In der Response werden die Anfragedaten aus dem Request und die Meldung geliefert, dass die Daten bereit gestellt werden. + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/ObjektsucheMindestsicherung.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/ObjektsucheMindestsicherung.xsd new file mode 100644 index 00000000..2e91cacf --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/ObjektsucheMindestsicherung.xsd @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gesamtanzahl der in der Datenbank gefundenen Personen + + + + + Beginn-Index dieser Ergebnisliste im Gesamtergebnis (bei Blaettern); Start mit 0 + + + + + Ende-Index dieser Ergebnisliste im Gesamtergebnis (bei Blaettern) + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/ObjektsucheSteuerfahndung.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/ObjektsucheSteuerfahndung.xsd new file mode 100644 index 00000000..0e0e5355 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/ObjektsucheSteuerfahndung.xsd @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + Es wir entweder das Feld PDFDaten (Anforderung als Druck) mit allen gefundenen Datensätzen, + oder ObjektsucheSteuerfahndungErgebnis mit der aktuell geblätterten Seite geliefert. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gesamtanzahl der in der Datenbank gefundenen Personen + + + + + Beginn-Index dieser Ergebnisliste im Gesamtergebnis (bei Blaettern); Start mit 0 + + + + + Ende-Index dieser Ergebnisliste im Gesamtergebnis (bei Blaettern) + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/PersonAendern.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/PersonAendern.xsd new file mode 100644 index 00000000..c29e8e06 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/PersonAendern.xsd @@ -0,0 +1,78 @@ + + + + + + + + + + + Es können die Person und deren abhängige Entities (z.B. Staatsangehoerigkeit) unabhängig geändert werden. Felder, die nicht geschickt werden, bleiben unverändert, leer geschickte Felder werden gelöscht. + + + + + + + + + + + + + + + + + + + + + + + + + + Server-Antwort zur Personenänderung + + + + + + + Gesamtdatensatz der geänderten Person (mit EntityIDs der Person und deren abhängigen Entities) + + + + + + + + + + allgemeine Fachliche Informationen zur Personenänderung + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/PersonAnlegen.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/PersonAnlegen.xsd new file mode 100644 index 00000000..e3131165 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/PersonAnlegen.xsd @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + Server-Antwort zur Personenanlage + + + + + + Gesamtdatensatz der im ZMR angelegten Person (mit EntityIDs der Person und deren abhängigen Entities) + + + + + Gesamtdatensatz der angelegten Meldung (mit EntityIDs der Meldung und deren abhängigen Entities) + + + + + + + + + + allgemeine Fachliche Informationen zur Personenanlage + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/PersonExport.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/PersonExport.xsd new file mode 100644 index 00000000..a91e9f5a --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/PersonExport.xsd @@ -0,0 +1,74 @@ + + + + + + + + + + + + + Request für PersonExport + + + + + + + + + + + + Response für PersonExport + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/PersonKorrigieren.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/PersonKorrigieren.xsd new file mode 100644 index 00000000..3f163231 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/PersonKorrigieren.xsd @@ -0,0 +1,74 @@ + + + + + + + + + + + Es können die Person und deren abhängige Entities (z.B. Staatsangehoerigkeit) unabhängig geändert werden. Felder, die nicht geschickt werden, bleiben unverändert, leer geschickte Felder werden gelöscht. + + + + + + + + + + + + + + + + + + + + + + + + Server-Antwort zur Personenkorrektur + + + + + + + Gesamtdatensatz der korrigierten Person (mit EntityIDs der Person und deren abhängigen Entities) + + + + + + + + + + allgemeine Fachliche Informationen zur Personenkorrektur + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/PersonTrennen.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/PersonTrennen.xsd new file mode 100644 index 00000000..ceba2041 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/PersonTrennen.xsd @@ -0,0 +1,75 @@ + + + + + + + + + + + + + ZMR-Zahl der Person, die gesplittet werden soll + + + + + + + + + + + Personen- und Medledaten des SPLIT-Kandidaten (es werden nur die zuletzt fachlich gültigen Sätze - sowohl der Person, als auch der Meldungen geliefert) + + + + + + + + + + + + + + Zweiter Schritt der Personentrennung nach der Suche/Anzeige der zu trennenden Person (Trennung durchführen) + Enthält die Person-Referenz und die Liste der auf die neue Person zu übertragenden Meldungen + + + + + + + + + + + + + Personen- und Meldedaten der getrennten Personen, es wird die gesamte fachl. Historie geliefert + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/PersonZusammenfuehren.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/PersonZusammenfuehren.xsd new file mode 100644 index 00000000..b44943d7 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/PersonZusammenfuehren.xsd @@ -0,0 +1,75 @@ + + + + + + + + + + + + + ZMR-Zahl der Person, die gesplittet werden soll + + + + + + + + + + + + Personen- und Medledaten der KIT-Kandidaten (es werden nur die zuletzt fachlich gültigen Sätze - sowohl der Person, als auch der Meldungen geliefert) + + + + + + + + + + + + + + + Zweiter Schritt der Personenzusammenführung nach der Suche/Anzeige der zusammenzuführenden Personen (Zusammenführung durchführen) + + + + + + + + + + + + Personen- und Meldedaten zusammengeführten Person, es wird die gesamte fachl. Historie geliefert + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/PersonenIndex.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/PersonenIndex.xsd new file mode 100644 index 00000000..72b3d3f2 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/PersonenIndex.xsd @@ -0,0 +1,73 @@ + + + + + + + + + + + + Im Request werden Meta-Informationen zum Batch und die verschlüsselten BPKs geliefert + ECDID steht für "encrypted context dependend id" aus. + + + + + + + + + + + + + + Es werden keine Responsedaten erwartet. + + + + + + + + + + + + Meta-Informationen zum ausgelieferten Index: + BatchCode/Name, Organisation, Bereich, Zeitraum, etc... + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Personenabfrage.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Personenabfrage.xsd new file mode 100644 index 00000000..c1b579ce --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Personenabfrage.xsd @@ -0,0 +1,139 @@ + + + + + + + + + + + + + Suchkriterien für die Personensuche im ZMR(Personendaten + Adressdaten) + + + + + + + + + + + + + + In der Response werden die Anfragedaten aus dem Request, und das Suchergebnis bzw. eine Text-Meldung geliefert (Falls keine Person gefunden) + + + + + + + + + + + + + Suchkriterien für die Personensuche im ZMR (Personendaten + Adressdaten) + + + + + Liste der EntityIDs der zu druckenden Personen + + + + + + + + + In der Response werden die Anfragedaten aus dem Request, und das Suchergebnis bzw. eine Text-Meldung geliefert (Falls keine Person gefunden) + + + + + + + + + + + + + + + + + + + + + + + + + + Fachliche Informationen zur Personensuche + + + + + + + + + + + + + Enthält je einen 'PersonErgebnisSatz' pro gefundener Person. Wird keine Person gefunden, befindet sich eine entprechende Text-Message in 'PersonensucheMsg' + + + + + Gesamtanzahl der in der Datenbank gefundenen Personen + + + + + Beginn-Index dieser Ergebnisliste im Gesamtergebnis (bei Blaettern); Start mit 1 + + + + + Ende-Index dieser Ergebnisliste im Gesamtergebnis (bei Blaettern) + + + + + + + + + Enthält die Ergebnisdaten zu einer gefundenen Person. + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Personenlisten.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Personenlisten.xsd new file mode 100644 index 00000000..e7f18752 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Personenlisten.xsd @@ -0,0 +1,131 @@ + + + + + + + + + + + + Suchkriterien für den PersonenListen-Request im ZMR (Personendaten + Adressdaten) + + + + + + + + + + + + + + In der Response werden die Anfragedaten aus dem Request, und das + Suchergebnis bzw. eine Text-Meldung geliefert (Falls keine Person gefunden) + + + + + + + + + + + + + + + + Anfragedaten, entsprechen den Suchdaten des Requests + + + + + + + + + + + + + + Fachliche Informationen zur PersonenListen + + + + + + + + + + + Suchkriterien + + + + + + + + + + + Ergebniskriterien + + + + + v-bPKs die miterzeugt werden sollen. (zb. urn:publicid:gv.at:ecdid+BMI+ZP) + + + + + + + + + + + + + + + PersonenListenErgebnisType beinhaltet die Liste der gefundenen Personen. + Derzeit wird die Liste auf 50 Sätze begrenzt. + + + + + + + + + Beinhaltet als einen Ergebnissatz eine Personen und ihre aktuellen Meldungen + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Personensuche.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Personensuche.xsd new file mode 100644 index 00000000..31606d6f --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Personensuche.xsd @@ -0,0 +1,255 @@ + + + + + + + + + + + + + + + Suchkriterien für die Personensuche im ZMR/ERnP (Personendaten + Adressdaten) + + + + + + + + + + + + + + + + In der Response werden die Anfragedaten aus dem Request, und das Suchergebnis bzw. eine Text-Meldung geliefert (Falls keine Person gefunden) + + + + + + + + + + + + + + + + + + + + + + + + + + + Fachliche Informationen zur Personensuche + + + + + + + + + + + + Datenbank-Suchkriterien für Personen- und Meldedaten der Personensuche + + + + + + + + + + + + + + + + + + + Anzeigekriterien für Personen- und Meldedaten im Personensuchergebnis + + + + + + + + + + + + + + + + Sortierung nach Familienname, Vorname, Geburtsdatum (Default) + + + + + + Sortierung nach PLZ, Straße, Hausnummer, Stiege, Tür, Familienname, Vorname, + Geburtsdatum. + Die Sortierung wirkt auf die Adresse, nach der gesucht wurde, d.h. es sollte + auf eine eingeschränkt werden (z.B. Suche in Objekt). + + + + + + + + + + Enthält je einen 'PersonErgebnisSatz' pro gefundener Person. Wird keine Person gefunden, befindet sich eine entprechende Text-Message in 'PersonensucheMsg' + + + + + Gesamtanzahl der in der Datenbank gefundenen Personen + + + + + Gesamtanzahl der in der ERnP-Datenbank gefundenen Personen + + + + + Beginn-Index dieser Ergebnisliste im Gesamtergebnis (bei Blaettern); Start mit 1 + + + + + Ende-Index dieser Ergebnisliste im Gesamtergebnis (bei Blaettern) + + + + + + + + + Enthält die Ergebnisdaten zu einer gefundenen Person. + + + + + + + + + + Fasst die gefundenen Daten einer Person aus dem Melderegister (aktuelle und historische Personendaten, sowie aktuelle und historische Meldedaten) + + + + + + + + + + Historienliste der Personendaten (Erklärung Historienliste siehe Dokument ZMR2Schnittstellen-Richtlinien.doc + + + + + + + + + + + + gelieferte Meldungen der Person (ein Strang = ein Element 'Meldedaten') + + + + + + Historienliste der Meldedaten einer Meldung + + + + + + + + + Fasst die gefundenen Daten einer Person aus dem Ergänzungsregister (ERnP) (aktuelle und historische Personendaten, sowie aktuelle und historische Kontaktadressen) + + + + + Historienliste der Personendaten (Erklärung Historienliste siehe Dokument ZMR2Schnittstellen-Richtlinien.doc + + + + + + + + + + + + LMR-Histmeldungen für ERnP-Personen werden bei der LMR-Suche benötigt. + Sonst nicht verwenden, ausbauen, wenn Schnittstelle an externe Partner + geliefert wird!!! + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/QKZAuswertung.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/QKZAuswertung.xsd new file mode 100644 index 00000000..e6dafecd --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/QKZAuswertung.xsd @@ -0,0 +1,82 @@ + + + + + + + + + + + + Die Auswertung läuft über alle Personen mit den angegebene QKZ in der angegebenen Gemeinde. + + + + + + + + + + + + + + + + + + + + + Server-Antwort zur Anforderung einer QKZ-Auswertung + + + + + + + + + + + + Auswertungs-XML für QKZs laut ZMR-171 + + + + + + + + + + + + + Definiert eine Zuordnung zwischen einer Person und einem QKZ für die XML-Auswertung laut ZMR-171 + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/QKZBearbeiten.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/QKZBearbeiten.xsd new file mode 100644 index 00000000..2f97c8b8 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/QKZBearbeiten.xsd @@ -0,0 +1,71 @@ + + + + + + + + + + + + + Mit einem Request können Qualifikationskennzeichen angelegt oder gelöscht werden. + + + + + + + Referenz auf das Objekt, für das die QKZ-Wartung durchgeführt wird (Person oder Meldung) + + + + + + + + + + + + + Server-Antwort zur QKZ-Wartung + + + + + + + Datensatz der angelegten/gelöschten Qualifikationskennzeichen + + + + + + + + + + allgemeine Fachliche Informationen zur QKZ-Wartung + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/SZREinzelabfrage.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/SZREinzelabfrage.xsd new file mode 100644 index 00000000..f0cc9d26 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/SZREinzelabfrage.xsd @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + allgemeine Fachliche Informationen für die SZR - Einzelabfrage + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/SZRPersonenbindung.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/SZRPersonenbindung.xsd new file mode 100644 index 00000000..81a836d6 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/SZRPersonenbindung.xsd @@ -0,0 +1,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + allgemeine Fachliche Informationen für die Personenbindungsanfrage + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/SZRPersonensuche.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/SZRPersonensuche.xsd new file mode 100644 index 00000000..7e1050e5 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/SZRPersonensuche.xsd @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + allgemeine Fachliche Informationen für die SZR - Personensuche + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/SZRSammelabfrage.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/SZRSammelabfrage.xsd new file mode 100644 index 00000000..0608fa38 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/SZRSammelabfrage.xsd @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Sperrliste.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Sperrliste.xsd new file mode 100644 index 00000000..624919ff --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Sperrliste.xsd @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + Auflisten der gesperrten Adressen für die angegebene Gemeinde + + + + + + + + + + + Response der Personensuche im ZMR. Geliefert werden die ID-Daten sowie alle Staatsangehoerigkeiten + + + + + + + + + + + + Anlegen einer neuen Adressen für die angegebene Gemeinde + + + + + + + + + + + Message fuer das Update einer Sperradresse + + + + + + + + + + + Loeschen von Sperradressen + + + + + + + + + + + Id der Sperradresse + + + + + + + + + + + + gespeicherte Sperradresse + + + + + + + + + + + + + Adresse + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Storno.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Storno.xsd new file mode 100644 index 00000000..50b6f1f4 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Storno.xsd @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + Über den Storno-Modus kann gesteuert werden, ob + der Storno normal durchgeführt werden soll, oder + zb. ob der letzte Storno rückgängig gemacht werden soll. + Fehlt der Storno-Modus wird das Storno normal + durchgeführt. + + + + + + + + Falls eine bestimmte Meldung storniert werden soll, + müssen hier ihre Referenzdaten geschickt werden. + Wird nur die Personreferenz geschickt, wird die Person storniert + + + + + + + + + + + + Stellt den Stornovorgang für den User dar + + + + + + + Für jede in den Storno involvierte Person wird ein Element StornoVergleich geliefert. + Hier wird der Person-Gesamtdatensatz vor und nach dem Storno dargestellt. + Auch wenn aussschließlich Meldedaten vom Storno betroffen sind, wird die gesamte Person geliefert. + + + + + + + + + + + + + + + + Bei einem Storno kann vorkommen, dass mehrere Personen involviert sind. + Zum Beispiel bei einem Kit-Fall. Um davor zu warnen, wird hier explizit + eine Liste von ZMR-Zahlen geliefert, die Personen anzeigen, bei denen das + Storno ebenfalls eine Änderung bewirken würde. + + + + + + + + + + + + + Über den Storno-Modus kann gesteuert werden, ob + der Storno normal durchgeführt werden soll, oder + zb. ob der letzte Storno rückgängig gemacht werden soll. + Fehlt der Storno-Modus wird das Storno normal + durchgeführt. + + + + + + + + Falls eine bestimmte Meldung storniert werden soll, + müssen hier ihre Referenzdaten geschickt werden. + Wird nur die Personreferenz geschickt, wird die Person storniert + + + + + + + + + + + + Server-Antwort des Storno-Vorgangs + + + + + + + + + + + + Stellt Steuerungsmöglichkeiten für den Storno zur Verfügung. + zb. normales Storno, letztes Storno rückgängig machen (Storno vom Storno) + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/SzrAbfrage.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/SzrAbfrage.xsd new file mode 100644 index 00000000..1e8261ab --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/SzrAbfrage.xsd @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/TechnischeAnsicht.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/TechnischeAnsicht.xsd new file mode 100644 index 00000000..a8d09153 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/TechnischeAnsicht.xsd @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + allgemeine Fachliche Informationen für die Abfrage zur technischen Ansicht + + + + + + + + + Enthält alle Personenzustände (für eine Person) zu einem bestimmten techn. Änderungszeitpunkt. + + + + + + + + + + + Enthält alle Meldungszustände (für eine Meldung) zu einem bestimmten techn. Änderungszeitpunkt. + + + + + + + + + + + Liste der technischen Zustände einer Person zu einem Zeitpunkt. + + + + + + + + + + + + Liste der technischen Zustände einer Meldung + + + + + + + + + + + + komplette Personendaten mit Information für den technischen Stichzeitpunkt + + + + + + + + + + + komplette Meldung mit Information für den technischen Stichzeitpunkt + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Ummeldeserviceabfrage.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Ummeldeserviceabfrage.xsd new file mode 100644 index 00000000..8f459931 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Ummeldeserviceabfrage.xsd @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + allgemeine Fachliche Informationen für die BP-Abfrage + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/WehrpflichtigeAbfragen.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/WehrpflichtigeAbfragen.xsd new file mode 100644 index 00000000..9a5e6e1a --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/WehrpflichtigeAbfragen.xsd @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + Es wir entweder das Feld PDFDaten (Anforderung als Druck) mit allen gefundenen Datensätzen, + oder WehrpflichtigeAbfragenErgebnis mit der aktuell geblätterten Seite geliefert. + + + + + + + + + + + + + + + + + + + + + + + + + + + + allgemeine Fachliche Informationen für die Wehrpflichtigenabfrage + + + + + + + + + + + Enthält je einen 'PersonErgebnisSatz' pro gefundener Person. Wird keine Person gefunden, befindet sich eine entprechende Text-Message in 'base:Message' + + + + + Gesamtanzahl der in der Datenbank gefundenen Personen + + + + + Beginn-Index dieser Ergebnisliste im Gesamtergebnis (bei Blaettern); Start mit 0 + + + + + Ende-Index dieser Ergebnisliste im Gesamtergebnis (bei Blaettern) + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/WohnsitzAbmelden.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/WohnsitzAbmelden.xsd new file mode 100644 index 00000000..5d3b7cc2 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/WohnsitzAbmelden.xsd @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + Server-Antwort zur Wohnsitzabmeldung + + + + + + + + Gesamtdatensatz der abgemeldeten Meldung (mit EntityIDs der Meldung und deren abhängigen Entities) + + + + + + + + + + + Fachliche Informationen zur Wohnsitzabmeldung + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/WohnsitzAnmelden.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/WohnsitzAnmelden.xsd new file mode 100644 index 00000000..75670c47 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/WohnsitzAnmelden.xsd @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + Server-Antwort zur Wohnsitzanmeldung + + + + + + + + Gesamtdatensatz der angelegten Meldung (mit EntityIDs der Meldung und deren abhängigen Entities) + + + + + + + + + + + + allgemeine Fachliche Informationen zur Wohnsitzanmeldung + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/WohnsitzKorrigieren.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/WohnsitzKorrigieren.xsd new file mode 100644 index 00000000..90153232 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/WohnsitzKorrigieren.xsd @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Server-Antwort zur Wohnsitzkorrektur + + + + + + + + Gesamtdatensatz der korrigierten Meldung (mit EntityIDs der Meldung und deren abhängigen Entities) + + + + + + + + + + + Fachliche Informationen zur Wohnsitzkorrektur + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/WohnsitzUmmelden.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/WohnsitzUmmelden.xsd new file mode 100644 index 00000000..48128ade --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/WohnsitzUmmelden.xsd @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + Referenz auf die erste in den Ummeldevorgang involvierte Meldung (wird entweder umgemeldet, oder abgemeldet), sowie deren evtl. geänderten Behördenattribute + + + + + + + + + + + + + + Zweite in den Ummeldevorgang involvierte Meldung (wird entweder umgemeldet, oder angemeldet - entsprechend entweder Referenz oder MeldungAnlage), sowie deren Behördenattribute (bei Ummeldung) + + + + + + + + + + + + + + + + + + + + + + + Server-Antwort zur Wohnsitzummeldung + + + + + + + + + Gesamtdatensatz der umgemeldeten Meldung (mit EntityIDs der Meldung und deren abhängigen Entities) + + + + + Gesamtdatensatz der umgemeldeten oder neuen Meldung (mit EntityIDs der Meldung und deren abhängigen Entities) + + + + + + + + + + + Fachliche Informationen zur Wohnsitzummeldung + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/ZMRDatenauszug.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/ZMRDatenauszug.xsd new file mode 100644 index 00000000..cdab5654 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/ZMRDatenauszug.xsd @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/ZMRProxy.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/ZMRProxy.xsd new file mode 100644 index 00000000..bb0583ef --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/ZMRProxy.xsd @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/ZmrBuergerService.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/ZmrBuergerService.xsd new file mode 100644 index 00000000..9732778d --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/ZmrBuergerService.xsd @@ -0,0 +1,373 @@ + + + + + + + + + + + + + + + Suchkriterien für die Personensuche im ZMR + + + + + + + + + + + + + + + + Response der Personensuche im ZMR. Geliefert werden die ID-Daten sowie alle Staatsangehoerigkeiten + + + + + + + + + + + + + Suchkriterien für die Mitbewohnersuche im ZMR + + + + + + + + + + + + + + Response der Mitbewohnersuche im ZMR. Geliefert wird die angefragte Adresse sowie die ID-Daten aller Personen an der Adresse + + + + + + + + + + + + + Suchkriterien für die Wohnsitzanmeldung im ZMR. bPK/ZP der + + + + + + + + + + + + + + + + Suchkriterien für die Wohnsitzanmeldung im ZMR + + + + + + + + + + + + + + Suchkriterien für die Wohnsitzanmeldung im ZMR + + + + + + + + + + + + + + + + + Transaction- und UUID des Service Clients + + + + + + + + + + + + neue Meldung bei HWS_ABM_NWS_HWS und HWS_NWS_NWS_HWS + + + + + + + + + + + Response der Wohnsitzabmeldung im ZMR. Geliefert wird der MessageCode, die Anzahl der an/ab/umgemeldeten Personen und die Meldebestaetigungen + + + + + + + + + + + + + + + + + aktuelle Personendaten + + + + + + + + + + + + + + + + + + + Staatsangehoerigkeiten der Person, mindestens eine (ISO-Code3 + Name) + + + + + + + + + + + + aktuelle Meldungen zur Person + + + + + + + + + + + + aktuelle Meldungen zur Person + + + + + + + + + + + + + + Adresse + + + + + + + + + + + + + + + + + + + + + Personen- und Meldedaten der abfragenden Person + + + + + + + + + + + + Personen- und Meldedaten der minderjaehrigen Kinder + + + + + + + + + + + + Personen- und Meldedaten fuer eine abzumeldende Person + + + + + + + + + + + + + + + + + Personen- und Meldedaten fuer eine umzumeldende Person + + + + + + + + + + + + + + + + + + + + + + + + + + + + + neue Meldung bei HWS_ABM_NWS_HWS und HWS_NWS_NWS_HWS + + + + + + + + + + + Id der zu aendernden Meldung sowie Datum der letzten Aenderung + + + + + + + + + + + + + + + + + + + + + Zuzugsstaat und Ummeldedaten + + + + + + + + + + + + + Id der Person und Religionsbekenntnis + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Zuzugsbestaetigung.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Zuzugsbestaetigung.xsd new file mode 100644 index 00000000..d557ae50 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/Zuzugsbestaetigung.xsd @@ -0,0 +1,105 @@ + + + + + + + + + + + + Anfragedaten der Zuzugsbestaetigung + + + + + + + + + + + In der Response werden die Anfragedaten aus dem Request und das Abgleichergebnis geliefert. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gesamtanzahl der Zuzugs-Saetze für diese Anfrage + + + + + Anzahl der im File gelieferten Zuzugs-Saetze + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/AkademischerGrad.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/AkademischerGrad.xsd new file mode 100644 index 00000000..3ebf0c0a --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/AkademischerGrad.xsd @@ -0,0 +1,84 @@ + + + + + + + + + Suchergebnisse-Struktur akademischer Grade einer Person + + + + + + + + + + + + + + + + + + + Struktur für Anlagen von akademischen Graden im ZMR + + + + + + Bei Anlage eines offiziellen akademischer Grades muss der AkadGradKey des Grades geschickt werden, + die einzelnen Felder (ohne AkadGradKey) sind nur bei Anlage eines "händischen", nicht offiziellen + Grades zu befüllen. + + + + + + + + + + + + + + + + + + + + + Struktur für Änderungen von akademischen Graden im ZMR. + Die Felder AkadGradLang und AkadGradKurz lassen sich nur bei nicht-offiziellen Graden (kein AkadGradKey) ändern. + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Auskunftssperre.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Auskunftssperre.xsd new file mode 100644 index 00000000..30dafed3 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Auskunftssperre.xsd @@ -0,0 +1,95 @@ + + + + + + + + + + Auskunftssperre-Struktur für Suchergebnisse + + + + + + + + + + + + + + + Struktur für Anlagen von Auskunftssperren + + + + + + + + + + + + + Struktur für Änderungen von Auskunftssperren + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Aviso.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Aviso.xsd new file mode 100644 index 00000000..dff1d5eb --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Aviso.xsd @@ -0,0 +1,176 @@ + + + + + + + + + + + + + Typ für Referenzdaten eines Aviso (immer das aktuellste, das heisst jüngstes 'Von'), mit Avisozahl zur Kontrolle + + + + + + + + + + + + + Aviso-Struktur für Suchergebnisse der Avisosuchen + + + + + + + + + + + + + + + + + + + + + + + + + Struktur für gefundenen Treffer des Aviso im ZMR (ein Treffer repräsentiert eine gefundene Person) + + + + + + + + + + + + Aviso-Struktur für Neuanlagen von Avisi im ZMR + + + + + + + + + + + + + + + + + + Aviso-Struktur für Aenderungen von Avisdaten + + + + + + + + + + + + Struktur zum Ein/Ausschliessen von Avisotreffern eines Aviso + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Behoerdenattribute.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Behoerdenattribute.xsd new file mode 100644 index 00000000..0b2cc6b8 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Behoerdenattribute.xsd @@ -0,0 +1,67 @@ + + + + + + + + + Behördenattribute-Struktur für Suchergebnisse + + + + + + + + + + + + + + + + + + Behördenattribute-Struktur zum Setzen der Behördenattribute einer Meldung + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/ERnPAnschrift.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/ERnPAnschrift.xsd new file mode 100644 index 00000000..0fb07b9b --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/ERnPAnschrift.xsd @@ -0,0 +1,73 @@ + + + + + + + + + + + + Anschrift-Struktur für Suchergebnisse aus dem ERnP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/ERnPPerson.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/ERnPPerson.xsd new file mode 100644 index 00000000..d4b83b63 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/ERnPPerson.xsd @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + Person-Struktur für Suchergebnisse aus dem ERnP + + + + + + + + + + + + + + + + + + Dokument-Struktur für Suchergebnisse + + + + + + + + + + + + + + + + Reisedokument-Struktur für Suchergebnisse + + + + + + + + + + + + + + + + Akademischer-Grad-Struktur für Suchergebnisse + + + + + + + + + + + + + + + + + + Hier befinden sich Referenzan auf Personen, die mit der Person in technischer Beziehung stehen. + - KITQuelle, KITZiel, SPLITQuelle, SPLITZiel1 und SPLITZiel2 sind Referenzen auf geKITete + bzw. geSPLITete Quellpersonen- bzw. Zielpersonen und entsprechend befüllt (siehe Beschreibung KIT/SPLIT) + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/EidasIdentitaet.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/EidasIdentitaet.xsd new file mode 100644 index 00000000..cd07bd8a --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/EidasIdentitaet.xsd @@ -0,0 +1,106 @@ + + + + + + + + + EIDAS-Identitaet-Struktur für Suchergebnisse + + + + + + + + + + + + + + + + EIDAS-Identitaet-Struktur für Identitaetanlagen im ZMR + + + + + + + + + + + + + + + + EidasIdentitaet-Struktur für Änderungen von Identitaeten im ZMR + + + + + + + + + + + + + + + + + + EidasIdentitaet-Struktur für EidasIdentitensuche im ZMR + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/EidasIdentitaet.xsd.svntmp b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/EidasIdentitaet.xsd.svntmp new file mode 100644 index 00000000..cd07bd8a --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/EidasIdentitaet.xsd.svntmp @@ -0,0 +1,106 @@ + + + + + + + + + EIDAS-Identitaet-Struktur für Suchergebnisse + + + + + + + + + + + + + + + + EIDAS-Identitaet-Struktur für Identitaetanlagen im ZMR + + + + + + + + + + + + + + + + EidasIdentitaet-Struktur für Änderungen von Identitaeten im ZMR + + + + + + + + + + + + + + + + + + EidasIdentitaet-Struktur für EidasIdentitensuche im ZMR + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Meldung.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Meldung.xsd new file mode 100644 index 00000000..0ea75355 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Meldung.xsd @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + Typ für Referenzdaten einer Meldung, (immer die aktuellste, das heisst jüngstes 'Von') mit WS-Qualität zur Kontrolle) + + + + + + Bei einer Änderung von Meldedaten müssen hier die EntityID der Meldung, sowie der + Zeitpunkt der letzten Änderung am Meldungssatz (Meldung-Entity und abhängige Entities wie Behördenattribute) + geschickt werden. + Der LetzteAenderung-Timestamp muss mit dem LetzteAenderung-Timestamp im Feld ErgebnissatzInfo + aus dem Suchergebnissatz übereinstimmen + + + + + + + Die Wohnsitzqualität der Meldung muss zur Kontrolle unverändert + mitgeschickt werden. + + + + + + + + + + Meldung-Struktur für Suchergebnisse aus dem ZMR + + + + + + + + + + + + + + + + + + + + ZMR-Adresse (Suchergebnis) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Meldung-Struktur zur Wohnsitzanmeldung im ZMR + + + + + + + + + + + + + + + + + + ZMR-Adresse (für Wohnsitzanlage) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Person.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Person.xsd new file mode 100644 index 00000000..8e3e55ee --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Person.xsd @@ -0,0 +1,233 @@ + + + + + + + + + + + + + + + + + + + + Typ für Referenzdaten einer Person (immer die aktuellste, das heisst jüngstes 'Von'), mit ZMR-Zahl zur Kontrolle + + + + + + Bei einer Änderung von Personendaten müssen hier die EntityID der Person, sowie der + Zeitpunkt der letzten Änderung am Personensatz (Person-Entity und abhängige Entities wie Reisedokumente) + geschickt werden. + Der LetzteAenderung-Timestamp muss mit dem LetzteAenderung-Timestamp im Feld ErgebnissatzInfo + aus dem Suchergebnissatz übereinstimmen + + + + + + + + Die ZMR-Zahl der Person muss zur Kontrolle unverändert + mitgeschickt werden. + + + + + + + + + + + + Person-Struktur für Suchergebnisse aus dem ZMR + + + + + + + + + + + + + + + + + + + + + + + Natuerliche Person (Suchergebnis) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Hier befinden sich Referenzan auf Personen, die mit der Person in technischer Beziehung stehen. + - Die Ordnungszahl verweist auf den Personenzatz im Ergänzungsregister, falls die Person vom + vom EGR ins ZMR übernommen wurde. + - KITQuelle, KITZiel, SPLITQuelle, SPLITZiel1 und SPLITZiel2 sind Referenzen auf geKITete + bzw. geSPLITete Quellpersonen- bzw. Zielpersonen und entsprechend befüllt (siehe Beschreibung KIT/SPLIT) + + + + + + + + + + + + + + + + + + Person-Struktur für Personenanlagen im ZMR + + + + + + + + + + + + + + + + + Natuerliche Person (Personenanlage) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Person-Struktur für Personendatenänderungen im ZMR + + + + + + + + + + + + + + Natuerliche Person (Änderung) + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Qualifikationskennzeichen.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Qualifikationskennzeichen.xsd new file mode 100644 index 00000000..044452c6 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Qualifikationskennzeichen.xsd @@ -0,0 +1,75 @@ + + + + + + + + + Qualifikationskennzeichen-Struktur für Suchergebnisse + + + + + + + + + + + + + + + Struktur für Anlagen von Qualifikationskennzeichen + + + + + + + + + + + + Struktur für Änderungen von Qualifikationskennzeichen + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Reisedokument.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Reisedokument.xsd new file mode 100644 index 00000000..edbbcc8c --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Reisedokument.xsd @@ -0,0 +1,82 @@ + + + + + + + + + Reisedokument-Struktur für Suchergebnisse + + + + + + + + + + + + + + + + + Reisedokument-Struktur für Reisedokumentanlagen im ZMR + + + + + + + + + + + + + + + Reisedokument-Struktur für Änderungen von Reisedokumenten im ZMR + + + + + + + + + + + + + + + + + Reisedokument-Struktur für Reisedokumentanlagen im ZMR + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Staatsangehoerigkeit.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Staatsangehoerigkeit.xsd new file mode 100644 index 00000000..2dcdee66 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Staatsangehoerigkeit.xsd @@ -0,0 +1,73 @@ + + + + + + + + + + Staatsangehoerigkeit-Struktur für Suchergebnisse + + + + + + + + + + + + + + + + Staatsangehoerigkeit-Struktur für Anlagen im ZMR + + + + + + + + + + + + Staatsangehoerigkeit-Struktur für Änderungen im ZMR + + + + + + Wenn der Schlüssel (EntityID) der Staatsbürgerschaft nicht bekannt ist, + kann alternativ der ISO-Code geschickt werden. + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Standarddokument.xsd b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Standarddokument.xsd new file mode 100644 index 00000000..5b14bcc4 --- /dev/null +++ b/eidas_modules/authmodule-eIDAS-v2/src/main/resources/wsdl/zmr_client/xsd/zmr/entities/Standarddokument.xsd @@ -0,0 +1,74 @@ + + + + + + + + + Standarddokument-Struktur für Suchergebnisse + + + + + + + + + + + + + + + + + + + Standarddokument-Struktur für Standarddokumentanlagen + + + + + + + + + + + + + + + + + Standarddokument-Struktur für Änderungen von Standarddokumenten + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/SzrClientTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/SzrClientTest.java index d861006e..2d493091 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/SzrClientTest.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/SzrClientTest.java @@ -25,10 +25,10 @@ package at.asitplus.eidas.specific.modules.auth.eidas.v2.test; import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummyConfigMap; import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.szr.SzrClient; 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.SzrCommunicationException; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.szr.SzrClient; import at.gv.egiz.eaaf.core.api.data.EaafConstants; import at.gv.egiz.eaaf.core.api.idp.auth.data.IIdentityLink; import at.gv.egiz.eaaf.core.exceptions.EaafParserException; diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/SzrClientTestProduction.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/SzrClientTestProduction.java index e50044c6..b9cc77b1 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/SzrClientTestProduction.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/SzrClientTestProduction.java @@ -24,10 +24,10 @@ package at.asitplus.eidas.specific.modules.auth.eidas.v2.test; import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.szr.SzrClient; 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.SzrCommunicationException; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.szr.SzrClient; import at.gv.egiz.eaaf.core.api.data.EaafConstants; import at.gv.egiz.eaaf.core.api.idp.IConfiguration; import at.gv.egiz.eaaf.core.api.idp.auth.data.IIdentityLink; diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskTest.java index 643afb90..34bca782 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskTest.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/InitialSearchTaskTest.java @@ -23,20 +23,59 @@ package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.tasks; +import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; +import static org.junit.Assert.assertThrows; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; + +import java.math.BigInteger; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Random; + +import javax.xml.namespace.QName; + +import org.apache.commons.lang3.RandomStringUtils; +import org.jetbrains.annotations.NotNull; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.mock.web.MockHttpServletRequest; +import org.springframework.mock.web.MockHttpServletResponse; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.annotation.DirtiesContext.ClassMode; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.zmr.IZmrClient; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.clients.zmr.ZmrSoapClient.ZmrRegisterResult; 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.ernp.IErnpClient; 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.ManualFixNecessaryException; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.handler.DeSpecificDetailSearchProcessor; +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.auth.eidas.v2.handler.CountrySpecificDetailSearchProcessor; import at.asitplus.eidas.specific.modules.auth.eidas.v2.handler.GenericEidProcessor; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.handler.ItSpecificDetailSearchProcessor; import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.ICcSpecificEidProcessingService; import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService; import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.InitialSearchTask; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.zmr.IZmrClient; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.MatchingTaskUtils; +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; import at.gv.egiz.eaaf.core.exceptions.EaafStorageException; @@ -49,34 +88,6 @@ import eu.eidas.auth.commons.attribute.ImmutableAttributeMap; import eu.eidas.auth.commons.attribute.PersonType; import eu.eidas.auth.commons.light.impl.LightRequest; import eu.eidas.auth.commons.protocol.impl.AuthenticationResponse; -import org.apache.commons.lang3.RandomStringUtils; -import org.jetbrains.annotations.NotNull; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.Mockito; -import org.mockito.MockitoAnnotations; -import org.springframework.mock.web.MockHttpServletRequest; -import org.springframework.mock.web.MockHttpServletResponse; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.annotation.DirtiesContext.ClassMode; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; - -import javax.xml.namespace.QName; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Map; -import java.util.Random; - -import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; -import static org.junit.Assert.assertThrows; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { @@ -86,22 +97,32 @@ import static org.junit.Assert.assertThrows; @DirtiesContext(classMode = ClassMode.BEFORE_CLASS) public class InitialSearchTaskTest { - private static final String DE_ST = "de/st/"; - private static final String IT_ST = "it/st/"; + + private static final String EE = "EE"; + private static final String DE = "DE"; + private static final String IT = "IT"; + + private static final String EE_ST = EE + "/ST/"; + private static final String DE_ST = DE + "/ST/"; + private static final String IT_ST = IT + "/ST/"; - private InitialSearchTask task; @Mock private IZmrClient zmrClient; @Mock private IErnpClient ernpClient; - private final ICcSpecificEidProcessingService eidPostProcessor = createEidPostProcessor(); + + @Autowired private List handlers; private RegisterSearchService registerSearchService; - + + private final ICcSpecificEidProcessingService eidPostProcessor = createEidPostProcessor(); + private InitialSearchTask task; + final ExecutionContext executionContext = new ExecutionContextImpl(); private TestRequestImpl pendingReq; private final String randomBpk = RandomStringUtils.randomNumeric(6); - private final String randomIdentifier = RandomStringUtils.randomNumeric(10); - private final String randomPseudonym = DE_ST + randomIdentifier; + private final String randomPsydonym = RandomStringUtils.randomNumeric(10); + private final String randomPersonalIdentifier_DE = DE_ST + randomPsydonym; + private final String randomPersonalIdentifier_EE = EE_ST + randomPsydonym; private final String randomFamilyName = randomAlphabetic(10); private final String randomGivenName = randomAlphabetic(10); private final String randomPlaceOfBirth = randomAlphabetic(10); @@ -114,8 +135,9 @@ public class InitialSearchTaskTest { @Before public void setUp() throws URISyntaxException, EaafStorageException { MockitoAnnotations.initMocks(this); - registerSearchService = new RegisterSearchService(zmrClient, ernpClient); - task = new InitialSearchTask(new ArrayList<>(), registerSearchService, eidPostProcessor); + + registerSearchService = new RegisterSearchService(handlers, zmrClient, ernpClient); + task = new InitialSearchTask(registerSearchService, eidPostProcessor); MockHttpServletRequest httpReq = new MockHttpServletRequest("POST", "https://localhost/authhandler"); MockHttpServletResponse httpResp = new MockHttpServletResponse(); @@ -153,73 +175,119 @@ public class InitialSearchTaskTest { @DirtiesContext public void testNode100_UserIdentifiedUpdateNecessary_a() throws Exception { String newFirstName = randomAlphabetic(10); - Mockito.when(zmrClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(Collections.singletonList( - new RegisterResult(randomBpk, randomIdentifier, newFirstName, randomFamilyName, randomBirthDate))); - Mockito.when(ernpClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(Collections.emptyList()); - + Mockito.when(zmrClient.searchWithPersonIdentifier(null, randomPersonalIdentifier_DE)).thenReturn( + new ZmrRegisterResult(Collections.singletonList( + RegisterResult.builder() + .bpk(randomBpk) + .pseudonym(Arrays.asList(randomPsydonym)) + .givenName(newFirstName) + .familyName(randomFamilyName) + .dateOfBirth(randomBirthDate) + .build()), + generateRandomProcessId())); task.execute(pendingReq, executionContext); String bPk = readBpkFromSessionData(pendingReq); - Assert.assertEquals("Wrong bpk", bPk, randomBpk); + Assert.assertEquals("Wrong bpk", randomBpk, bPk); } /** * One match, but register update needed + * @throws EidasSAuthenticationException */ @Test @DirtiesContext - public void testNode100_UserIdentifiedUpdateNecessary_b() throws TaskExecutionException { - Mockito.when(zmrClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(Collections.emptyList()); + public void testNode100_UserIdentifiedUpdateNecessary_b() throws TaskExecutionException, EidasSAuthenticationException { + Mockito.when(zmrClient.searchWithPersonIdentifier(null, randomPersonalIdentifier_DE)).thenReturn( + new ZmrRegisterResult(Collections.emptyList(), generateRandomProcessId())); + String newRandomGivenName = randomAlphabetic(10); - Mockito.when(ernpClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(Collections.singletonList( - new RegisterResult(randomBpk, randomIdentifier, newRandomGivenName, randomFamilyName, randomBirthDate))); + Mockito.when(ernpClient.searchWithPersonIdentifier(randomPersonalIdentifier_DE)).thenReturn(Collections.singletonList( + RegisterResult.builder() + .bpk(randomBpk) + .pseudonym(Arrays.asList(randomPsydonym)) + .givenName(newRandomGivenName) + .familyName(randomFamilyName) + .dateOfBirth(randomBirthDate) + .build())); task.execute(pendingReq, executionContext); String bPk = readBpkFromSessionData(pendingReq); - Assert.assertEquals("Wrong bpk", bPk, randomBpk); + Assert.assertEquals("Wrong bpk", randomBpk, bPk); } /** * Two matches found in ZMR + * @throws EidasSAuthenticationException */ @Test @DirtiesContext - public void testNode101_ManualFixNecessary_a() { + public void testNode101_ManualFixNecessary_a() throws EidasSAuthenticationException { ArrayList zmrResult = new ArrayList<>(); - zmrResult.add(new RegisterResult(randomBpk, randomIdentifier, randomGivenName, randomFamilyName, randomBirthDate)); + zmrResult.add( + RegisterResult.builder() + .bpk(randomBpk) + .pseudonym(Arrays.asList(randomPsydonym)) + .givenName(randomGivenName) + .familyName(randomFamilyName) + .dateOfBirth(randomBirthDate) + .build()); String newRandomGivenName = randomGivenName + randomAlphabetic(2); - zmrResult.add(new RegisterResult(randomBpk, randomIdentifier, newRandomGivenName, randomFamilyName, randomBirthDate)); - Mockito.when(zmrClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(zmrResult); - Mockito.when(ernpClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(Collections.emptyList()); + zmrResult.add( + RegisterResult.builder() + .bpk(randomBpk) + .pseudonym(Arrays.asList(randomPsydonym)) + .givenName(newRandomGivenName) + .familyName(randomFamilyName) + .dateOfBirth(randomBirthDate) + .build()); + Mockito.when(zmrClient.searchWithPersonIdentifier(null, randomPersonalIdentifier_DE)).thenReturn( + new ZmrRegisterResult(zmrResult, generateRandomProcessId())); + Mockito.when(ernpClient.searchWithPersonIdentifier(randomPersonalIdentifier_DE)).thenReturn(Collections.emptyList()); TaskExecutionException exception = assertThrows(TaskExecutionException.class, () -> task.execute(pendingReq, executionContext)); Throwable origE = exception.getOriginalException(); - Assert.assertTrue("Wrong exception", (origE instanceof ManualFixNecessaryException)); + Assert.assertTrue("Wrong exception", (origE instanceof WorkflowException)); } /** * Two matches found in ErnP + * @throws EidasSAuthenticationException */ @Test @DirtiesContext - public void testNode101_ManualFixNecessary_b() { - Mockito.when(zmrClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(Collections.emptyList()); + public void testNode101_ManualFixNecessary_b() throws EidasSAuthenticationException { + Mockito.when(zmrClient.searchWithPersonIdentifier(null, randomPersonalIdentifier_DE)).thenReturn( + new ZmrRegisterResult(Collections.emptyList(), generateRandomProcessId())); ArrayList ernpResult = new ArrayList<>(); - ernpResult.add(new RegisterResult(randomBpk, randomPseudonym, randomGivenName, randomFamilyName, randomBirthDate)); + ernpResult.add( + RegisterResult.builder() + .bpk(randomBpk) + .pseudonym(Arrays.asList(randomPsydonym)) + .givenName(randomGivenName) + .familyName(randomFamilyName) + .dateOfBirth(randomBirthDate) + .build()); String newRandomGivenName = randomGivenName + randomAlphabetic(2); ernpResult.add( - new RegisterResult(randomBpk, randomIdentifier, newRandomGivenName, randomFamilyName, randomBirthDate)); - Mockito.when(ernpClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(ernpResult); + RegisterResult.builder() + .bpk(randomBpk) + .pseudonym(Arrays.asList(randomPsydonym)) + .givenName(newRandomGivenName) + .familyName(randomFamilyName) + .dateOfBirth(randomBirthDate) + .build()); + Mockito.when(ernpClient.searchWithPersonIdentifier(randomPersonalIdentifier_DE)).thenReturn(ernpResult); TaskExecutionException exception = assertThrows(TaskExecutionException.class, () -> task.execute(pendingReq, executionContext)); Throwable origE = exception.getOriginalException(); - Assert.assertTrue("Wrong exception", (origE instanceof ManualFixNecessaryException)); + Assert.assertTrue("Wrong exception", (origE instanceof WorkflowException)); } /** @@ -228,13 +296,20 @@ public class InitialSearchTaskTest { @Test @DirtiesContext public void testNode102_UserIdentified_a() throws Exception { - Mockito.when(zmrClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(Collections.emptyList()); - Mockito.when(ernpClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(Collections.singletonList( - new RegisterResult(randomBpk, randomIdentifier, randomGivenName, randomFamilyName, randomBirthDate))); + Mockito.when(zmrClient.searchWithPersonIdentifier(null, randomPersonalIdentifier_DE)).thenReturn( + new ZmrRegisterResult(Collections.emptyList(), generateRandomProcessId())); + Mockito.when(ernpClient.searchWithPersonIdentifier(randomPersonalIdentifier_DE)).thenReturn(Collections.singletonList( + RegisterResult.builder() + .bpk(randomBpk) + .pseudonym(Arrays.asList(randomPsydonym)) + .givenName(randomGivenName) + .familyName(randomFamilyName) + .dateOfBirth(randomBirthDate) + .build())); task.execute(pendingReq, executionContext); String bPk = readBpkFromSessionData(pendingReq); - Assert.assertEquals("Wrong bpk", bPk, randomBpk); + Assert.assertEquals("Wrong bpk", randomBpk, bPk); } /** @@ -243,41 +318,22 @@ public class InitialSearchTaskTest { @Test @DirtiesContext public void testNode102_UserIdentified_b() throws Exception { - Mockito.when(zmrClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(Collections.singletonList( - new RegisterResult(randomBpk, randomIdentifier, randomGivenName, randomFamilyName, randomBirthDate))); - Mockito.when(ernpClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(Collections.emptyList()); + Mockito.when(zmrClient.searchWithPersonIdentifier(null, randomPersonalIdentifier_DE)).thenReturn( + new ZmrRegisterResult(Collections.singletonList( + RegisterResult.builder() + .bpk(randomBpk) + .pseudonym(Arrays.asList(randomPsydonym)) + .givenName(randomGivenName) + .familyName(randomFamilyName) + .dateOfBirth(randomBirthDate) + .build()), + generateRandomProcessId())); + Mockito.when(ernpClient.searchWithPersonIdentifier(randomPersonalIdentifier_DE)).thenReturn(Collections.emptyList()); task.execute(pendingReq, executionContext); String bPk = readBpkFromSessionData(pendingReq); - Assert.assertEquals("Wrong bpk", bPk, randomBpk); - } - - /** - * One match found in ZMR and ErnP with detail search - */ - @Test - @DirtiesContext - public void testNode103_UserIdentified_IT() throws Exception { - String taxNumber = RandomStringUtils.randomNumeric(14); - final AuthenticationResponse response = buildDummyAuthResponseRandomPersonIT_Tax(taxNumber); - TestRequestImpl pendingReq1 = new TestRequestImpl(); - pendingReq1.getSessionData(AuthProcessDataWrapper.class) - .setGenericDataToSession(Constants.DATA_FULL_EIDAS_RESPONSE, response); - Mockito.when(zmrClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(Collections.emptyList()); - String newRandomIdentifier = randomIdentifier + RandomStringUtils.randomNumeric(2); - Mockito.when(zmrClient.searchItSpecific(taxNumber)).thenReturn(Collections.singletonList( - new RegisterResult(randomBpk, newRandomIdentifier, randomGivenName, randomFamilyName, - randomBirthDate, null, null, taxNumber, null))); - Mockito.when(ernpClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(Collections.emptyList()); - task = new InitialSearchTask( - Collections.singletonList(new ItSpecificDetailSearchProcessor(registerSearchService)), - registerSearchService, eidPostProcessor); - - task.execute(pendingReq1, executionContext); - - String bPk = readBpkFromSessionData(pendingReq1); - Assert.assertEquals("Wrong bpk", bPk, randomBpk); + Assert.assertEquals("Wrong bpk", randomBpk, bPk); } /** @@ -285,27 +341,38 @@ public class InitialSearchTaskTest { */ @Test @DirtiesContext - public void testNode103_UserIdentified_DE() throws Exception { + public void testNode103_UserIdentified_DE() throws Exception { final AuthenticationResponse response = buildDummyAuthResponseDE(randomGivenName, randomFamilyName, - randomPseudonym, + randomPersonalIdentifier_DE, randomBirthDate, randomPlaceOfBirth, randomBirthName); - TestRequestImpl pendingReq1 = new TestRequestImpl(); + TestRequestImpl pendingReq1 = new TestRequestImpl(); pendingReq1.getSessionData(AuthProcessDataWrapper.class) .setGenericDataToSession(Constants.DATA_FULL_EIDAS_RESPONSE, response); - Mockito.when(zmrClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(Collections.emptyList()); - Mockito.when(zmrClient.searchDeSpecific(randomGivenName, randomFamilyName, randomBirthDate, randomPlaceOfBirth, - randomBirthName)) - .thenReturn(Collections.singletonList(new RegisterResult(randomBpk, randomIdentifier, randomGivenName, - randomFamilyName, randomBirthDate, randomPlaceOfBirth, randomBirthName, null, null))); - Mockito.when(ernpClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(Collections.emptyList()); - task = new InitialSearchTask( - Collections.singletonList(new DeSpecificDetailSearchProcessor(registerSearchService)), - registerSearchService, eidPostProcessor); - + + BigInteger zmrProcessId = generateRandomProcessId(); + Mockito.when(zmrClient.searchWithPersonIdentifier(null, randomPersonalIdentifier_DE)).thenReturn( + new ZmrRegisterResult(Collections.emptyList(), zmrProcessId)); + Mockito.when(zmrClient.searchCountrySpecific(eq(zmrProcessId), any(PersonSuchenRequest.class), eq(DE))).thenReturn( + new ZmrRegisterResult(Collections.singletonList( + RegisterResult.builder() + .bpk(randomBpk) + .pseudonym(Arrays.asList(randomPsydonym)) + .givenName(randomGivenName) + .familyName(randomFamilyName) + .dateOfBirth(randomBirthDate) + .placeOfBirth(randomPlaceOfBirth) + .birthName(randomBirthName) + .build()) + ,zmrProcessId)); + Mockito.when(ernpClient.searchWithPersonIdentifier(randomPersonalIdentifier_DE)).thenReturn(Collections.emptyList()); + + // execute test task.execute(pendingReq1, executionContext); + // validate state String resultBpk = readBpkFromSessionData(pendingReq1); - Assert.assertEquals("Wrong bpk", resultBpk, randomBpk); + Assert.assertEquals("Wrong bpk", randomBpk, resultBpk); + } /** @@ -314,76 +381,70 @@ public class InitialSearchTaskTest { @Test @DirtiesContext public void testNode104_ManualFixNecessary_DE() throws Exception { - String newRandomPseudonym = randomPseudonym + RandomStringUtils.randomNumeric(2); + String newRandomPseudonym = randomPersonalIdentifier_DE + RandomStringUtils.randomNumeric(2); String newRandomBpk = randomBpk + RandomStringUtils.randomNumeric(6); final AuthenticationResponse response = buildDummyAuthResponseDE(randomGivenName, randomFamilyName, - randomPseudonym, + randomPersonalIdentifier_DE, randomBirthDate, randomPlaceOfBirth, randomBirthName); TestRequestImpl pendingReq1 = new TestRequestImpl(); pendingReq1.getSessionData(AuthProcessDataWrapper.class) .setGenericDataToSession(Constants.DATA_FULL_EIDAS_RESPONSE, response); - Mockito.when(zmrClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(Collections.emptyList()); - ArrayList zmrResultSpecific = new ArrayList<>(); - zmrResultSpecific.add( - new RegisterResult(randomBpk, randomIdentifier, randomGivenName, randomFamilyName, randomBirthDate, - randomPlaceOfBirth, randomBirthName, null, null)); - zmrResultSpecific.add(new RegisterResult(newRandomBpk, newRandomPseudonym, randomGivenName, randomFamilyName, randomBirthDate, - randomPlaceOfBirth, randomBirthName, null, null)); - Mockito.when(zmrClient.searchDeSpecific(randomGivenName, randomFamilyName, randomBirthDate, randomPlaceOfBirth, - randomBirthName)).thenReturn(zmrResultSpecific); - Mockito.when(ernpClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(Collections.emptyList()); - task = new InitialSearchTask( - Collections.singletonList(new DeSpecificDetailSearchProcessor(registerSearchService)), - registerSearchService, eidPostProcessor); - + + BigInteger zmrProcessId = generateRandomProcessId(); + Mockito.when(zmrClient.searchWithPersonIdentifier(null, randomPersonalIdentifier_DE)).thenReturn( + new ZmrRegisterResult(Collections.emptyList(), zmrProcessId)); + Mockito.when(ernpClient.searchWithPersonIdentifier(randomPersonalIdentifier_DE)).thenReturn(Collections.emptyList()); + Mockito.when(zmrClient.searchCountrySpecific(eq(zmrProcessId), any(PersonSuchenRequest.class), eq(DE))).thenReturn( + new ZmrRegisterResult(Arrays.asList( + RegisterResult.builder() + .bpk(randomBpk) + .pseudonym(Arrays.asList(randomPsydonym)) + .givenName(randomGivenName) + .familyName(randomFamilyName) + .dateOfBirth(randomBirthDate) + .placeOfBirth(randomPlaceOfBirth) + .birthName(randomBirthName) + .build(), + RegisterResult.builder() + .bpk(newRandomBpk) + .pseudonym(Arrays.asList(newRandomPseudonym)) + .givenName(randomGivenName) + .familyName(randomFamilyName) + .dateOfBirth(randomBirthDate) + .placeOfBirth(randomPlaceOfBirth) + .birthName(randomBirthName) + .build()) + ,zmrProcessId)); + + + // execute test TaskExecutionException exception = assertThrows(TaskExecutionException.class, () -> task.execute(pendingReq1, executionContext)); + // check error Throwable origE = exception.getOriginalException(); - Assert.assertTrue("Wrong exception", (origE instanceof ManualFixNecessaryException)); - } - - /** - * Multiple matches found in ZMR and ErnP with detail search - */ - @Test - @DirtiesContext - public void testNode104_ManualFixNecessary_IT() throws Exception { - String randomTaxNumber = RandomStringUtils.randomNumeric(14); - final AuthenticationResponse response = buildDummyAuthResponseRandomPersonIT_Tax(randomTaxNumber); - TestRequestImpl pendingReq1 = new TestRequestImpl(); - pendingReq1.getSessionData(AuthProcessDataWrapper.class) - .setGenericDataToSession(Constants.DATA_FULL_EIDAS_RESPONSE, response); - Mockito.when(zmrClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(Collections.emptyList()); - ArrayList zmrResultSpecific = new ArrayList<>(); - String randomPseudonym = IT_ST + randomIdentifier + "4"; - zmrResultSpecific.add(new RegisterResult(randomBpk, randomPseudonym, randomGivenName, - randomFamilyName, randomBirthDate, null, null, randomTaxNumber, null)); - String newRandomPseudonym = IT_ST + randomIdentifier + "5"; - String newRandomBpk = RandomStringUtils.randomNumeric(6); - zmrResultSpecific.add(new RegisterResult(newRandomBpk, newRandomPseudonym, randomGivenName, - randomFamilyName, randomBirthDate, null, null, randomTaxNumber, null)); - Mockito.when(zmrClient.searchItSpecific(randomTaxNumber)).thenReturn(zmrResultSpecific); - Mockito.when(ernpClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(Collections.emptyList()); - task = new InitialSearchTask( - Collections.singletonList(new ItSpecificDetailSearchProcessor(registerSearchService)), - registerSearchService, eidPostProcessor); - - TaskExecutionException exception = assertThrows(TaskExecutionException.class, - () -> task.execute(pendingReq1, executionContext)); - - Throwable origE = exception.getOriginalException(); - Assert.assertTrue("Wrong exception", (origE instanceof ManualFixNecessaryException)); + Assert.assertTrue("Wrong exception", (origE instanceof WorkflowException)); } /** * NO match found in ZMR and ErnP with Initial and MDS search + * @throws EidasSAuthenticationException + * @throws URISyntaxException + * @throws EaafStorageException */ @Test @DirtiesContext - public void testNode505_TransitionToErnbTask() throws TaskExecutionException { - Mockito.when(zmrClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(Collections.emptyList()); - Mockito.when(ernpClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(Collections.emptyList()); + public void testNode505_TransitionToInsertErnbTask() throws TaskExecutionException, EidasSAuthenticationException, URISyntaxException, EaafStorageException { + BigInteger zmrProcessId = generateRandomProcessId(); + pendingReq.getSessionData(AuthProcessDataWrapper.class) + .setGenericDataToSession(Constants.DATA_FULL_EIDAS_RESPONSE, + buildDummyAuthResponse(randomGivenName, randomFamilyName, randomPersonalIdentifier_EE, randomBirthDate)); + Mockito.when(zmrClient.searchWithPersonIdentifier(null, randomPersonalIdentifier_EE)).thenReturn( + new ZmrRegisterResult(Collections.emptyList(), zmrProcessId)); + Mockito.when(zmrClient.searchWithMds(zmrProcessId, randomGivenName, randomFamilyName, randomBirthDate, EE)).thenReturn( + new ZmrRegisterResult(Collections.emptyList(), zmrProcessId)); + + Mockito.when(ernpClient.searchWithPersonIdentifier(randomPersonalIdentifier_EE)).thenReturn(Collections.emptyList()); task.execute(pendingReq, executionContext); @@ -398,21 +459,37 @@ public class InitialSearchTaskTest { /** * NO match found in ZMR and ErnP with Initial search, one match with MDS search in Ernb + * @throws EidasSAuthenticationException + * @throws URISyntaxException + * @throws EaafStorageException */ @Test @DirtiesContext - public void testNode505_TransitionToGUI_Ernb() throws TaskExecutionException { - Mockito.when(zmrClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(Collections.emptyList()); - Mockito.when(ernpClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(Collections.emptyList()); - + public void testNode505_TransitionToGUI_Ernb() throws TaskExecutionException, EidasSAuthenticationException, URISyntaxException, EaafStorageException { + BigInteger zmrProcessId = generateRandomProcessId(); + pendingReq.getSessionData(AuthProcessDataWrapper.class) + .setGenericDataToSession(Constants.DATA_FULL_EIDAS_RESPONSE, + buildDummyAuthResponse(randomGivenName, randomFamilyName, randomPersonalIdentifier_EE, randomBirthDate)); + + Mockito.when(zmrClient.searchWithPersonIdentifier(null, randomPersonalIdentifier_EE)).thenReturn( + new ZmrRegisterResult(Collections.emptyList(), zmrProcessId)); + Mockito.when(zmrClient.searchWithMds(zmrProcessId, randomGivenName, randomFamilyName, randomBirthDate, EE)).thenReturn( + new ZmrRegisterResult(Collections.emptyList(), zmrProcessId)); + + Mockito.when(ernpClient.searchWithPersonIdentifier(randomPersonalIdentifier_EE)).thenReturn(Collections.emptyList()); Mockito.when(ernpClient.searchWithMds(randomGivenName, randomFamilyName, randomBirthDate)).thenReturn( Collections.singletonList( - new RegisterResult(randomBpk, randomIdentifier, randomGivenName, randomFamilyName, randomBirthDate))); + RegisterResult.builder() + .bpk(randomBpk) + .pseudonym(Arrays.asList(randomPsydonym)) + .givenName(randomGivenName) + .familyName(randomFamilyName) + .dateOfBirth(randomBirthDate) + .build())); task.execute(pendingReq, executionContext); - String bPk = readBpkFromSessionData(pendingReq); - Assert.assertNull("Wrong bpk", bPk); + assertThrows(WorkflowException.class, () -> readBpkFromSessionData(pendingReq)); Boolean transitionGUI = (Boolean) executionContext.get(Constants.TRANSITION_TO_GENERATE_OTHER_LOGIN_METHOD_GUI_TASK); Assert.assertTrue("Wrong transition", transitionGUI); Boolean transitionErnb = (Boolean) executionContext.get(Constants.TRANSITION_TO_CREATE_NEW_ERNP_ENTRY_TASK); @@ -421,21 +498,29 @@ public class InitialSearchTaskTest { /** * NO match found in ZMR and ErnP with Initial search, one match with MDS search in ZMR + * @throws EidasSAuthenticationException */ @Test @DirtiesContext - public void testNode505_TransitionToGUI_Zmr() throws TaskExecutionException { - Mockito.when(zmrClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(Collections.emptyList()); - Mockito.when(ernpClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(Collections.emptyList()); - - Mockito.when(zmrClient.searchWithMds(randomGivenName, randomFamilyName, randomBirthDate)).thenReturn( - Collections.singletonList( - new RegisterResult(randomBpk, randomIdentifier, randomGivenName, randomFamilyName, randomBirthDate))); + public void testNode505_TransitionToGUI_Zmr() throws TaskExecutionException, EidasSAuthenticationException { + BigInteger zmrProcessId = generateRandomProcessId(); + Mockito.when(zmrClient.searchWithPersonIdentifier(null, randomPersonalIdentifier_DE)).thenReturn( + new ZmrRegisterResult(Collections.emptyList(), zmrProcessId)); + Mockito.when(ernpClient.searchWithPersonIdentifier(randomPersonalIdentifier_DE)).thenReturn(Collections.emptyList()); + + Mockito.when(zmrClient.searchWithMds(zmrProcessId, randomGivenName, randomFamilyName, randomBirthDate, DE)).thenReturn( + new ZmrRegisterResult(Collections.singletonList(RegisterResult.builder() + .bpk(randomBpk) + .pseudonym(Arrays.asList(randomPsydonym)) + .givenName(randomGivenName) + .familyName(randomFamilyName) + .dateOfBirth(randomBirthDate) + .build()), + zmrProcessId)); task.execute(pendingReq, executionContext); - String bPk = readBpkFromSessionData(pendingReq); - Assert.assertNull("Wrong bpk", bPk); + assertThrows(WorkflowException.class, () -> readBpkFromSessionData(pendingReq)); Boolean transitionGUI = (Boolean) executionContext.get(Constants.TRANSITION_TO_GENERATE_OTHER_LOGIN_METHOD_GUI_TASK); Assert.assertTrue("Wrong transition", transitionGUI); Boolean transitionErnb = (Boolean) executionContext.get(Constants.TRANSITION_TO_CREATE_NEW_ERNP_ENTRY_TASK); @@ -444,23 +529,40 @@ public class InitialSearchTaskTest { /** * NO match found in ZMR and ErnP with Initial search, multiple matches found with MDS search + * @throws EidasSAuthenticationException */ @Test @DirtiesContext - public void testNode505_TransitionToGUI_Ernb_multi() throws TaskExecutionException { - Mockito.when(zmrClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(Collections.emptyList()); - Mockito.when(ernpClient.searchWithPersonIdentifier(randomIdentifier)).thenReturn(Collections.emptyList()); - ArrayList ernbResult = new ArrayList<>(); - ernbResult.add(new RegisterResult(randomBpk, randomIdentifier, randomGivenName, randomFamilyName, - randomBirthDate)); - ernbResult.add(new RegisterResult(randomBpk + "1", randomIdentifier, randomGivenName, randomFamilyName, - randomBirthDate)); - Mockito.when(ernpClient.searchWithMds(randomGivenName, randomFamilyName, randomBirthDate)).thenReturn(ernbResult); + public void testNode505_TransitionToGUI_Ernb_multi() throws TaskExecutionException, EidasSAuthenticationException { + BigInteger zmrProcessId = generateRandomProcessId(); + Mockito.when(zmrClient.searchWithPersonIdentifier(null, randomPersonalIdentifier_DE)).thenReturn( + new ZmrRegisterResult(Collections.emptyList(), zmrProcessId)); + Mockito.when(zmrClient.searchCountrySpecific(eq(zmrProcessId), any(PersonSuchenRequest.class), any(String.class))).thenReturn( + new ZmrRegisterResult(Collections.emptyList(), zmrProcessId)); + Mockito.when(zmrClient.searchWithMds(zmrProcessId, randomGivenName, randomFamilyName, randomBirthDate, DE)).thenReturn( + new ZmrRegisterResult(Collections.emptyList(), zmrProcessId)); + + Mockito.when(ernpClient.searchWithPersonIdentifier(randomPersonalIdentifier_DE)).thenReturn(Collections.emptyList()); + Mockito.when(ernpClient.searchWithMds(randomGivenName, randomFamilyName, randomBirthDate)).thenReturn( + Arrays.asList( + RegisterResult.builder() + .bpk(randomBpk) + .pseudonym(Arrays.asList(randomPsydonym)) + .givenName(randomGivenName) + .familyName(randomFamilyName) + .dateOfBirth(randomBirthDate) + .build(), + RegisterResult.builder() + .bpk(randomBpk + "1") + .pseudonym(Arrays.asList(randomPsydonym)) + .givenName(randomGivenName) + .familyName(randomFamilyName) + .dateOfBirth(randomBirthDate) + .build())); task.execute(pendingReq, executionContext); - String bPk = readBpkFromSessionData(pendingReq); - Assert.assertNull("Wrong bpk", bPk); + assertThrows(WorkflowException.class, () -> readBpkFromSessionData(pendingReq)); Boolean transitionGUI = (Boolean) executionContext.get(Constants.TRANSITION_TO_GENERATE_OTHER_LOGIN_METHOD_GUI_TASK); Assert.assertTrue("Wrong transition", transitionGUI); Boolean transitionErnb = (Boolean) executionContext.get(Constants.TRANSITION_TO_CREATE_NEW_ERNP_ENTRY_TASK); @@ -469,15 +571,14 @@ public class InitialSearchTaskTest { @NotNull private AuthenticationResponse buildDummyAuthResponseRandomPerson() throws URISyntaxException { - return buildDummyAuthResponse(randomGivenName, randomFamilyName, DE_ST + randomIdentifier, randomBirthDate); + return buildDummyAuthResponse(randomGivenName, randomFamilyName, DE_ST + randomPsydonym, randomBirthDate); } - private AuthenticationResponse buildDummyAuthResponseRandomPersonIT_Tax(String taxNumber) - throws URISyntaxException { - return buildDummyAuthResponse(randomGivenName, randomFamilyName, IT_ST + randomIdentifier, randomBirthDate, - taxNumber, null, null); + private BigInteger generateRandomProcessId() { + return new BigInteger(RandomStringUtils.randomNumeric(10)); + } - + @NotNull private AuthenticationResponse buildDummyAuthResponse(String givenName, String familyName, String identifier, String dateOfBirth) throws URISyntaxException { @@ -545,8 +646,10 @@ public class InitialSearchTaskTest { .attributeValueMarshaller(marshaller).build(); } - private String readBpkFromSessionData(TestRequestImpl pendingReq) { - return (String) pendingReq.getSessionData(AuthProcessDataWrapper.class) - .getGenericDataFromSession(Constants.DATA_RESULT_MATCHING_BPK); + private String readBpkFromSessionData(TestRequestImpl pendingReq) throws WorkflowException { + return MatchingTaskUtils.getInitialRegisterResult(pendingReq) != null + ? MatchingTaskUtils.getInitialRegisterResult(pendingReq).getBpk() + : null; + } } diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveAustrianResidenceGuiResponseTaskTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveAustrianResidenceGuiResponseTaskTest.java index d9405251..281be36f 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveAustrianResidenceGuiResponseTaskTest.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveAustrianResidenceGuiResponseTaskTest.java @@ -1,20 +1,20 @@ package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.tasks; -import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummyConfigMap; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.MergedRegisterSearchResult; -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.ManualFixNecessaryException; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.ReceiveAustrianResidenceGuiResponseTask; -import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext; -import at.gv.egiz.eaaf.core.exceptions.EaafStorageException; -import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException; -import at.gv.egiz.eaaf.core.impl.idp.auth.data.AuthProcessDataWrapper; -import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl; -import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl; -import com.google.common.collect.Lists; +import static at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.ReceiveAustrianResidenceGuiResponseTask.PARAM_CITY; +import static at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.ReceiveAustrianResidenceGuiResponseTask.PARAM_FORMER_RESIDENCE_AVAILABLE; +import static at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.ReceiveAustrianResidenceGuiResponseTask.PARAM_STREET; +import static at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.ReceiveAustrianResidenceGuiResponseTask.PARAM_ZIPCODE; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertThrows; +import static org.mockito.ArgumentMatchers.eq; +import static org.springframework.util.Assert.isInstanceOf; + +import java.math.BigInteger; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + import org.apache.commons.lang3.RandomStringUtils; import org.jetbrains.annotations.NotNull; import org.junit.Before; @@ -32,14 +32,25 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; -import java.util.Collections; -import java.util.List; +import com.google.common.collect.Lists; -import static at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.ReceiveAustrianResidenceGuiResponseTask.*; -import static org.junit.Assert.*; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; -import static org.springframework.util.Assert.isInstanceOf; +import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummyConfigMap; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; +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.ManualFixNecessaryException; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService.RegisterOperationStatus; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService.RegisterSearchResult; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.ReceiveAustrianResidenceGuiResponseTask; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.ReceiveAustrianResidenceGuiResponseTask.UserInput; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.MatchingTaskUtils; +import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext; +import at.gv.egiz.eaaf.core.exceptions.EaafStorageException; +import at.gv.egiz.eaaf.core.exceptions.TaskExecutionException; +import at.gv.egiz.eaaf.core.impl.idp.auth.data.AuthProcessDataWrapper; +import at.gv.egiz.eaaf.core.impl.idp.module.test.TestRequestImpl; +import at.gv.egiz.eaaf.core.impl.idp.process.ExecutionContextImpl; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { @@ -50,11 +61,12 @@ public class ReceiveAustrianResidenceGuiResponseTaskTest { @Autowired protected MsConnectorDummyConfigMap authConfig; - @Autowired - private ReceiveAustrianResidenceGuiResponseTask task; + @MockBean private RegisterSearchService registerSearchService; + private ReceiveAustrianResidenceGuiResponseTask task; + private final ExecutionContext executionContext = new ExecutionContextImpl(); private MockHttpServletRequest httpReq; private MockHttpServletResponse httpResp; @@ -69,6 +81,8 @@ public class ReceiveAustrianResidenceGuiResponseTaskTest { public void setUp() throws Exception { MockitoAnnotations.initMocks(this); + task = new ReceiveAustrianResidenceGuiResponseTask(registerSearchService); + httpReq = new MockHttpServletRequest("POST", "https://localhost/ms_connector"); httpResp = new MockHttpServletResponse(); RequestContextHolder.resetRequestAttributes(); @@ -85,9 +99,10 @@ public class ReceiveAustrianResidenceGuiResponseTaskTest { public void noRegisterResult() throws Exception { UserInput userInput = setupUserInput(); SimpleEidasData eidasData = setupEidasData(); - MergedRegisterSearchResult registerSearchResult = buildEmptyResult(); - mockRegisterSearch(userInput, registerSearchResult); - + RegisterSearchResult registerSearchResult = buildEmptyResult(); + mockRegisterSearch(userInput, registerSearchResult, eidasData); + MatchingTaskUtils.storeInitialRegisterResult(pendingReq, registerSearchResult); + task.execute(pendingReq, executionContext); assertEquals("Transition To S9", true, executionContext.get(Constants.TRANSITION_TO_CREATE_NEW_ERNP_ENTRY_TASK)); @@ -97,21 +112,24 @@ public class ReceiveAustrianResidenceGuiResponseTaskTest { public void exactlyOneRegisterResult_Matching() throws Exception { UserInput userInput = setupUserInput(); SimpleEidasData eidasData = setupEidasData(); - MergedRegisterSearchResult registerSearchResult = buildResultWithOneMatch(buildMatchingRegisterResult(eidasData)); - mockRegisterSearch(userInput, registerSearchResult); + RegisterSearchResult registerSearchResult = buildResultWithOneMatch(buildMatchingRegisterResult(eidasData)); + MatchingTaskUtils.storeInitialRegisterResult(pendingReq, registerSearchResult); + mockRegisterSearch(userInput, registerSearchResult, eidasData); task.execute(pendingReq, executionContext); assertNull("Transition To S9", executionContext.get(Constants.TRANSITION_TO_CREATE_NEW_ERNP_ENTRY_TASK)); - Mockito.verify(registerSearchService).step7aKittProcess(any(), eq(registerSearchResult), eq(eidasData), eq(pendingReq)); + Mockito.verify(registerSearchService).step7aKittProcess(eq(registerSearchResult), eq(eidasData)); + } @Test public void exactlyOneRegisterResult_NotMatching() throws Exception { UserInput userInput = setupUserInput(); SimpleEidasData eidasData = setupEidasData(); - MergedRegisterSearchResult registerSearchResult = buildResultWithOneMatch(buildNotMatchingRegisterResult(eidasData)); - mockRegisterSearch(userInput, registerSearchResult); + RegisterSearchResult registerSearchResult = buildResultWithOneMatch(buildNotMatchingRegisterResult(eidasData)); + MatchingTaskUtils.storeInitialRegisterResult(pendingReq, registerSearchResult); + mockRegisterSearch(userInput, registerSearchResult, eidasData); task.execute(pendingReq, executionContext); @@ -122,8 +140,9 @@ public class ReceiveAustrianResidenceGuiResponseTaskTest { public void moreThanOneRegisterResult() throws Exception { UserInput userInput = setupUserInput(); SimpleEidasData eidasData = setupEidasData(); - MergedRegisterSearchResult registerSearchResult = buildResultWithTwoMatches(); - mockRegisterSearch(userInput, registerSearchResult); + RegisterSearchResult registerSearchResult = buildResultWithTwoMatches(); + MatchingTaskUtils.storeInitialRegisterResult(pendingReq, registerSearchResult); + mockRegisterSearch(userInput, registerSearchResult, eidasData); TaskExecutionException e = assertThrows(TaskExecutionException.class, () -> task.execute(pendingReq, executionContext)); @@ -133,37 +152,70 @@ public class ReceiveAustrianResidenceGuiResponseTaskTest { assertNull("Transition To S16", executionContext.get(Constants.TRANSITION_TO_CREATE_NEW_ERNP_ENTRY_TASK)); } - private void mockRegisterSearch(UserInput userInput, MergedRegisterSearchResult registerSearchResult) { - Mockito.when(registerSearchService.searchWithResidence(eq(userInput.getZipcode()), eq(userInput.getCity()), eq(userInput.getStreet()))).thenReturn(registerSearchResult); + private void mockRegisterSearch(UserInput userInput, RegisterSearchResult registerSearchResult, SimpleEidasData eidasData ) { + Mockito.when(registerSearchService.searchWithResidence(eq(registerSearchResult.getOperationStatus()), eq(eidasData), + eq(userInput.getZipcode()), eq(userInput.getCity()), eq(userInput.getStreet()))).thenReturn(registerSearchResult); } @NotNull - private MergedRegisterSearchResult buildEmptyResult() { - return new MergedRegisterSearchResult(Collections.emptyList(), Collections.emptyList()); + private RegisterSearchResult buildEmptyResult() { + return new RegisterSearchResult(new RegisterOperationStatus(generateRandomProcessId()), + Collections.emptyList(), Collections.emptyList()); + } + private BigInteger generateRandomProcessId() { + return new BigInteger(RandomStringUtils.randomNumeric(10)); + + } + @NotNull - private MergedRegisterSearchResult buildResultWithOneMatch(RegisterResult registerResult) { - return new MergedRegisterSearchResult(Collections.singletonList(registerResult), Collections.emptyList()); + private RegisterSearchResult buildResultWithOneMatch(RegisterResult registerResult) { + return new RegisterSearchResult(new RegisterOperationStatus(generateRandomProcessId()), + Collections.singletonList(registerResult), Collections.emptyList()); + } @NotNull - private MergedRegisterSearchResult buildResultWithTwoMatches() { + private RegisterSearchResult buildResultWithTwoMatches() { List results = Lists.newArrayList(buildRandomRegisterResult(), buildRandomRegisterResult()); - return new MergedRegisterSearchResult(results, Collections.emptyList()); + return new RegisterSearchResult(new RegisterOperationStatus(generateRandomProcessId()), + results, Collections.emptyList()); + } @NotNull private RegisterResult buildRandomRegisterResult() { - return new RegisterResult(RandomStringUtils.randomAlphabetic(8), RandomStringUtils.randomAlphabetic(8), RandomStringUtils.randomAlphabetic(8), RandomStringUtils.randomAlphabetic(8), RandomStringUtils.randomAlphabetic(8)); + return RegisterResult.builder() + .pseudonym(Arrays.asList(RandomStringUtils.randomAlphabetic(8))) + .givenName(RandomStringUtils.randomAlphabetic(8)) + .familyName(RandomStringUtils.randomAlphabetic(8)) + .dateOfBirth(RandomStringUtils.randomAlphabetic(8)) + .bpk(RandomStringUtils.randomAlphabetic(8)) + .build(); + } private RegisterResult buildMatchingRegisterResult(SimpleEidasData eidData) { - return new RegisterResult(RandomStringUtils.randomAlphabetic(8), eidData.getPseudonym(), eidData.getGivenName(), eidData.getFamilyName(), eidData.getDateOfBirth()); + return RegisterResult.builder() + .pseudonym(Arrays.asList(eidData.getPseudonym())) + .givenName(eidData.getGivenName()) + .familyName(eidData.getFamilyName()) + .dateOfBirth(eidData.getDateOfBirth()) + .bpk(RandomStringUtils.randomAlphabetic(8)) + .build(); + } private RegisterResult buildNotMatchingRegisterResult(SimpleEidasData eidData) { - return new RegisterResult(RandomStringUtils.randomAlphabetic(8), eidData.getPseudonym() + RandomStringUtils.randomAlphabetic(8), eidData.getGivenName(), eidData.getFamilyName(), eidData.getDateOfBirth()); + return RegisterResult.builder() + .pseudonym(Arrays.asList(eidData.getPseudonym() + RandomStringUtils.randomAlphabetic(8))) + .givenName(eidData.getGivenName()) + .familyName(eidData.getFamilyName()) + .dateOfBirth(eidData.getDateOfBirth()) + .bpk(RandomStringUtils.randomAlphabetic(8)) + .build(); + } private void setHttpParameters(UserInput input) { diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveMobilePhoneSignatureResponseTaskTest.java b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveMobilePhoneSignatureResponseTaskTest.java index 77b87264..8c137bb2 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveMobilePhoneSignatureResponseTaskTest.java +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/java/at/asitplus/eidas/specific/modules/auth/eidas/v2/test/tasks/ReceiveMobilePhoneSignatureResponseTaskTest.java @@ -1,8 +1,50 @@ package at.asitplus.eidas.specific.modules.auth.eidas.v2.test.tasks; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertThrows; +import static org.springframework.util.Assert.isInstanceOf; + +import java.io.IOException; +import java.io.InputStream; +import java.math.BigInteger; +import java.nio.charset.StandardCharsets; +import java.util.Arrays; +import java.util.Base64; +import java.util.Collections; +import java.util.List; +import java.util.Objects; + +import javax.xml.transform.TransformerException; + +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang3.RandomStringUtils; +import org.jetbrains.annotations.NotNull; +import org.joda.time.DateTime; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.MockitoAnnotations; +import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport; +import org.opensaml.core.xml.io.MarshallingException; +import org.opensaml.core.xml.util.XMLObjectSupport; +import org.opensaml.saml.saml2.core.Issuer; +import org.opensaml.saml.saml2.core.Response; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.mock.web.MockHttpServletRequest; +import org.springframework.mock.web.MockHttpServletResponse; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import com.google.common.collect.Lists; + import at.asitplus.eidas.specific.connector.test.config.dummy.MsConnectorDummyConfigMap; import at.asitplus.eidas.specific.modules.auth.eidas.v2.Constants; -import at.asitplus.eidas.specific.modules.auth.eidas.v2.dao.MergedRegisterSearchResult; 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.InvalidUserInputException; @@ -11,9 +53,12 @@ import at.asitplus.eidas.specific.modules.auth.eidas.v2.idaustriaclient.IdAustri import at.asitplus.eidas.specific.modules.auth.eidas.v2.idaustriaclient.provider.IdAustriaClientAuthCredentialProvider; import at.asitplus.eidas.specific.modules.auth.eidas.v2.idaustriaclient.provider.IdAustriaClientAuthMetadataProvider; import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService.RegisterOperationStatus; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.service.RegisterSearchService.RegisterSearchResult; import at.asitplus.eidas.specific.modules.auth.eidas.v2.tasks.ReceiveMobilePhoneSignatureResponseTask; import at.asitplus.eidas.specific.modules.auth.eidas.v2.test.dummy.DummyOA; import at.asitplus.eidas.specific.modules.auth.eidas.v2.test.dummy.DummyPendingRequest; +import at.asitplus.eidas.specific.modules.auth.eidas.v2.utils.MatchingTaskUtils; import at.gv.egiz.eaaf.core.api.data.EaafConstants; import at.gv.egiz.eaaf.core.api.idp.process.ExecutionContext; import at.gv.egiz.eaaf.core.exceptions.EaafException; @@ -26,45 +71,7 @@ import at.gv.egiz.eaaf.modules.pvp2.impl.metadata.PvpMetadataResolverFactory; import at.gv.egiz.eaaf.modules.pvp2.impl.opensaml.initialize.EaafOpenSaml3xInitializer; import at.gv.egiz.eaaf.modules.pvp2.impl.utils.Saml2Utils; import at.gv.egiz.eaaf.modules.pvp2.sp.exception.AuthnResponseValidationException; -import com.google.common.collect.Lists; import net.shibboleth.utilities.java.support.xml.ParserPool; -import org.apache.commons.io.IOUtils; -import org.apache.commons.lang3.RandomStringUtils; -import org.jetbrains.annotations.NotNull; -import org.joda.time.DateTime; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mockito; -import org.mockito.MockitoAnnotations; -import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport; -import org.opensaml.core.xml.io.MarshallingException; -import org.opensaml.core.xml.util.XMLObjectSupport; -import org.opensaml.saml.saml2.core.Issuer; -import org.opensaml.saml.saml2.core.Response; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.mock.web.MockHttpServletRequest; -import org.springframework.mock.web.MockHttpServletResponse; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; - -import javax.xml.transform.TransformerException; -import java.io.IOException; -import java.io.InputStream; -import java.nio.charset.StandardCharsets; -import java.util.Base64; -import java.util.Collections; -import java.util.List; -import java.util.Objects; - -import static org.junit.Assert.*; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; -import static org.springframework.util.Assert.isInstanceOf; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { @@ -278,9 +285,8 @@ public class ReceiveMobilePhoneSignatureResponseTaskTest { task.execute(pendingReq, executionContext); - assertTrue("process not cancelled", executionContext.isProcessCancelled()); - assertTrue("process not stopped by user", pendingReq.isAbortedByUser()); - assertFalse("should not authenticated", pendingReq.isAuthenticated()); + assertEquals("Transition To S16", true, executionContext.get(Constants.TRANSITION_TO_GENERATE_GUI_QUERY_AUSTRIAN_RESIDENCE_TASK)); + } @Test @@ -327,6 +333,8 @@ public class ReceiveMobilePhoneSignatureResponseTaskTest { isInstanceOf(InvalidUserInputException.class, e.getOriginalException().getCause()); } + //TODO: implement new test that this test makes no sense any more + @Ignore @Test public void httpPostValidSignedAssertionEidValid_NoRegisterResult() throws Exception { setupMetadataResolver(); @@ -334,9 +342,10 @@ public class ReceiveMobilePhoneSignatureResponseTaskTest { AuthProcessDataWrapper authProcessData = pendingReq.getSessionData(AuthProcessDataWrapper.class); SimpleEidasData eidData = createEidasDataMatchingToSamlResponse().build(); authProcessData.setGenericDataToSession(Constants.DATA_SIMPLE_EIDAS, eidData); - MergedRegisterSearchResult registerSearchResult = new MergedRegisterSearchResult(Collections.emptyList(), Collections.emptyList()); - Mockito.when(registerSearchService.searchWithBpkZp(eq(BPK_FROM_ID_AUSTRIA))).thenReturn(registerSearchResult); - + RegisterSearchResult registerSearchResult = new RegisterSearchResult(new RegisterOperationStatus(generateRandomProcessId()), + Collections.emptyList(), Collections.emptyList()); + MatchingTaskUtils.storeInitialRegisterResult(pendingReq, registerSearchResult); + task.execute(pendingReq, executionContext); AuthProcessDataWrapper session = pendingReq.getSessionData(AuthProcessDataWrapper.class); @@ -353,8 +362,8 @@ public class ReceiveMobilePhoneSignatureResponseTaskTest { AuthProcessDataWrapper authProcessData = pendingReq.getSessionData(AuthProcessDataWrapper.class); SimpleEidasData eidData = createEidasDataMatchingToSamlResponse().build(); authProcessData.setGenericDataToSession(Constants.DATA_SIMPLE_EIDAS, eidData); - MergedRegisterSearchResult registerSearchResult = buildResultWithOneMatch(); - Mockito.when(registerSearchService.searchWithBpkZp(eq(BPK_FROM_ID_AUSTRIA))).thenReturn(registerSearchResult); + RegisterSearchResult registerSearchResult = buildResultWithOneMatch(); + MatchingTaskUtils.storeInitialRegisterResult(pendingReq, registerSearchResult); task.execute(pendingReq, executionContext); @@ -363,9 +372,13 @@ public class ReceiveMobilePhoneSignatureResponseTaskTest { assertEquals("IssueInstant", "2014-03-05T06:39:51Z", session.getIssueInstantString()); assertNull("Matching BPK", session.getGenericDataFromSession(Constants.DATA_RESULT_MATCHING_BPK)); assertNull("Transition To S16", executionContext.get(Constants.TRANSITION_TO_GENERATE_GUI_QUERY_AUSTRIAN_RESIDENCE_TASK)); - Mockito.verify(registerSearchService).step7aKittProcess(any(), eq(registerSearchResult), eq(eidData), eq(pendingReq)); + + //TODO: update this check because this task selects one result from MDS search result before and creates a new element + //Mockito.verify(registerSearchService).step7aKittProcess(eq(registerSearchResult), eq(eidData)); } + //TODO: implement new test that this test makes no sense any more + @Ignore @Test public void httpPostValidSignedAssertionEidValid_MoreThanOneRegisterResult() throws Exception { setupMetadataResolver(); @@ -373,34 +386,63 @@ public class ReceiveMobilePhoneSignatureResponseTaskTest { AuthProcessDataWrapper authProcessData = pendingReq.getSessionData(AuthProcessDataWrapper.class); SimpleEidasData eidData = createEidasDataMatchingToSamlResponse().build(); authProcessData.setGenericDataToSession(Constants.DATA_SIMPLE_EIDAS, eidData); - MergedRegisterSearchResult registerSearchResult = buildResultWithTwoMatches(); - Mockito.when(registerSearchService.searchWithBpkZp(eq(BPK_FROM_ID_AUSTRIA))).thenReturn(registerSearchResult); - TaskExecutionException e = assertThrows(TaskExecutionException.class, () -> task.execute(pendingReq, executionContext)); + assertEquals(pendingReq.getPendingRequestId(), e.getPendingRequestID()); isInstanceOf(AuthnResponseValidationException.class, e.getOriginalException()); isInstanceOf(ManualFixNecessaryException.class, e.getOriginalException().getCause()); assertEquals("sp.pvp2.12", ((AuthnResponseValidationException) e.getOriginalException()).getErrorId()); - AuthProcessDataWrapper session = pendingReq.getSessionData(AuthProcessDataWrapper.class); + + + AuthProcessDataWrapper session = pendingReq.getSessionData(AuthProcessDataWrapper.class); assertNull("Matching BPK", session.getGenericDataFromSession(Constants.DATA_RESULT_MATCHING_BPK)); assertNull("Transition To S16", executionContext.get(Constants.TRANSITION_TO_GENERATE_GUI_QUERY_AUSTRIAN_RESIDENCE_TASK)); } @NotNull - private MergedRegisterSearchResult buildResultWithOneMatch() { - return new MergedRegisterSearchResult(Collections.singletonList(new RegisterResult(BPK_FROM_ID_AUSTRIA, "bar", "foo", "foo", "bar")), Collections.emptyList()); + private RegisterSearchResult buildResultWithOneMatch() { + return new RegisterSearchResult(new RegisterOperationStatus(generateRandomProcessId()), + Collections.singletonList(RegisterResult.builder() + .bpk(BPK_FROM_ID_AUSTRIA) + .pseudonym(Arrays.asList("bar")) + .givenName("foo") + .familyName("foo") + .dateOfBirth("bar") + .build()), + Collections.emptyList()); + } @NotNull - private MergedRegisterSearchResult buildResultWithTwoMatches() { - List results = Lists.newArrayList(new RegisterResult(BPK_FROM_ID_AUSTRIA, "bar", "foo", "foo", "bar"), - new RegisterResult("bpk", "pseudonym", "givenName", "familyName", "dateOfBirth")); - return new MergedRegisterSearchResult(results, Collections.emptyList()); + private RegisterSearchResult buildResultWithTwoMatches() { + List results = Lists.newArrayList( + RegisterResult.builder() + .bpk(BPK_FROM_ID_AUSTRIA) + .pseudonym(Arrays.asList("bar")) + .givenName("foo") + .familyName("foo") + .dateOfBirth("bar") + .build(), + RegisterResult.builder() + .bpk("bpk") + .pseudonym(Arrays.asList("pseudonym")) + .givenName("givenName") + .familyName("familyName") + .dateOfBirth("dateOfBirth") + .build()); + + return new RegisterSearchResult(new RegisterOperationStatus(generateRandomProcessId()), + results, Collections.emptyList()); } + private BigInteger generateRandomProcessId() { + return new BigInteger(RandomStringUtils.randomNumeric(10)); + + } + private SimpleEidasData.SimpleEidasDataBuilder createEidasDataMatchingToSamlResponse() { // data from "/data/Response_with_EID.xml" return SimpleEidasData.builder() diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_1.properties b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_1.properties index e6741c88..266c78bb 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_1.properties +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_1.properties @@ -93,6 +93,13 @@ eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.4=LegalPerson,tr eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.5=LegalName,true +#### matching###### +# ZMR communication +eidas.ms.auth.eIDAS.zmrclient.endpoint=http://localhost:1234/demoszr +eidas.ms.auth.eIDAS.zmrclient.req.organisation.behoerdennr=jUnit123456 + + + ## PVP2 S-Profile end-point configuration eidas.ms.pvp2.keystore.path=keys/..... eidas.ms.pvp2.keystore.password= diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_1_springboot.properties b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_1_springboot.properties index fc0c7241..640138d8 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_1_springboot.properties +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_1_springboot.properties @@ -24,6 +24,7 @@ eidas.ms.auth.eIDAS.node_v2.forward.endpoint=http://eidas.node/junit eidas.ms.auth.eIDAS.szrclient.useTestService=true eidas.ms.auth.eIDAS.szrclient.endpoint.prod= eidas.ms.auth.eIDAS.szrclient.endpoint.test=http://localhost:1234/demoszr +eidas.ms.auth.eIDAS.szrclient.ssl.keyStore.type=jks eidas.ms.auth.eIDAS.szrclient.ssl.keyStore.path=keys/junit.jks eidas.ms.auth.eIDAS.szrclient.ssl.keyStore.password=password eidas.ms.auth.eIDAS.szrclient.ssl.trustStore.path= @@ -43,6 +44,18 @@ eidas.ms.auth.eIDAS.szrclient.debug.logfullmessages=true eidas.ms.auth.eIDAS.szrclient.debug.useDummySolution=false +#### matching###### +# ZMR communication +eidas.ms.auth.eIDAS.zmrclient.endpoint=http://localhost:1234/demoszr +eidas.ms.auth.eIDAS.zmrclient.ssl.keyStore.type=jks +eidas.ms.auth.eIDAS.zmrclient.ssl.keyStore.path=keys/junit.jks +eidas.ms.auth.eIDAS.zmrclient.ssl.keyStore.password=password +eidas.ms.auth.eIDAS.zmrclient.ssl.trustStore.path= +eidas.ms.auth.eIDAS.zmrclient.ssl.trustStore.password= + +eidas.ms.auth.eIDAS.zmrclient.req.organisation.behoerdennr=jUnit123456 + + ## PVP2 S-Profile end-point configuration eidas.ms.pvp2.keystore.type=jks diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_2.properties b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_2.properties index 7c5e5a40..c3cec434 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_2.properties +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_2.properties @@ -86,6 +86,12 @@ eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.4=LegalPerson,tr eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.5=LegalName,true +#### matching###### +# ZMR communication +eidas.ms.auth.eIDAS.zmrclient.endpoint=http://localhost:1234/demoszr +eidas.ms.auth.eIDAS.zmrclient.req.organisation.behoerdennr=jUnit123456 + + ## PVP2 S-Profile end-point configuration eidas.ms.pvp2.keystore.path=keys/..... eidas.ms.pvp2.keystore.password= diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_3.properties b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_3.properties index c830d447..3cd9fcb4 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_3.properties +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_3.properties @@ -88,6 +88,12 @@ eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.4=LegalPerson,tr eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.5=LegalName,true +#### matching###### +# ZMR communication +eidas.ms.auth.eIDAS.zmrclient.endpoint=http://localhost:1234/demoszr +eidas.ms.auth.eIDAS.zmrclient.req.organisation.behoerdennr=jUnit123456 + + ## PVP2 S-Profile end-point configuration eidas.ms.pvp2.keystore.path=keys/..... eidas.ms.pvp2.keystore.password= diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_4.properties b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_4.properties index 01e72069..82f9a798 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_4.properties +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_4.properties @@ -86,6 +86,12 @@ eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.4=LegalPerson,tr eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.5=LegalName,true +#### matching###### +# ZMR communication +eidas.ms.auth.eIDAS.zmrclient.endpoint=http://localhost:1234/demoszr +eidas.ms.auth.eIDAS.zmrclient.req.organisation.behoerdennr=jUnit123456 + + ## PVP2 S-Profile end-point configuration eidas.ms.pvp2.keystore.path=keys/..... eidas.ms.pvp2.keystore.password= diff --git a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_de_attributes.properties b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_de_attributes.properties index 6b235667..5261aef9 100644 --- a/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_de_attributes.properties +++ b/eidas_modules/authmodule-eIDAS-v2/src/test/resources/config/junit_config_de_attributes.properties @@ -88,6 +88,12 @@ eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.4=LegalPerson,tr eidas.ms.auth.eIDAS.node_v2.attributes.requested.representation.5=LegalName,true +#### matching###### +# ZMR communication +eidas.ms.auth.eIDAS.zmrclient.endpoint=http://localhost:1234/demoszr +eidas.ms.auth.eIDAS.zmrclient.req.organisation.behoerdennr=jUnit123456 + + ## PVP2 S-Profile end-point configuration eidas.ms.pvp2.keystore.path=keys/..... eidas.ms.pvp2.keystore.password= -- cgit v1.2.3