diff options
author | Thomas <> | 2021-03-16 10:14:26 +0100 |
---|---|---|
committer | Thomas <> | 2021-03-16 10:14:26 +0100 |
commit | 6bf6f4b99ed3829768fe67c3cd13fdedfc2663c6 (patch) | |
tree | f0574db39226c52adbcab76d17f0bccec62352cc | |
parent | 2c64f2887cab5bbf0f9d7d0ea1ff21645c064fb7 (diff) | |
download | moa-sig-6bf6f4b99ed3829768fe67c3cd13fdedfc2663c6.tar.gz moa-sig-6bf6f4b99ed3829768fe67c3cd13fdedfc2663c6.tar.bz2 moa-sig-6bf6f4b99ed3829768fe67c3cd13fdedfc2663c6.zip |
fix problem with ZUSE v2 XML schemes
-rw-r--r-- | moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Constants.java | 12 | ||||
-rw-r--r-- | moaSig/common/src/main/resources/resources/schemas/zuse_mypersondata_en_p2.xsd | 369 |
2 files changed, 377 insertions, 4 deletions
diff --git a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Constants.java b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Constants.java index 7c29ea1..54caf3e 100644 --- a/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Constants.java +++ b/moaSig/common/src/main/java/at/gv/egovernment/moaspss/util/Constants.java @@ -406,10 +406,14 @@ public interface Constants { public static final String SAML2_eIDAS_EXTENSIONS = "http://eidas.europa.eu/saml-extensions"; public static final String SAML2_eIDAS_EXTENSIONS_SCHEMA_LOCATION = SCHEMA_ROOT + "eIDAS_saml_extensions.xsd"; - public static final String eDELIVERY20_PREFIX = "eidas"; + public static final String eDELIVERY20_PREFIX = "zu"; public static final String eDELIVERY20 = "http://reference.e-government.gv.at/namespace/zustellung/msg/phase2/20181206#"; public static final String eDELIVERY20_SCHEMA_LOCATION = SCHEMA_ROOT + "zuse_p2.xsd"; + public static final String eDELIVERY_PERSON_20_PREFIX = "zup"; + public static final String eDELIVERY_PERSON_20 = "http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#"; + public static final String eDELIVERY_PERSON_20_SCHEMA_LOCATION = SCHEMA_ROOT + "zuse_mypersondata_en_p2.xsd"; + public static final String ONLY_MOASIG_SCHEMA_LOCATIONS = (MOA_NS_URI + " " + MOA_SCHEMA_LOCATION + " ") @@ -442,8 +446,7 @@ public interface Constants { + (XENC_NS_URI + " " + XENC_SCHEMA_LOCATION + " ") + (SAML2_METADATA_URI + " " + SAML2_METADATA_SCHEMA_LOCATION + " ") + (ASIC_URI + " " + ASIC_SCHEMA_LOCATION + " ") - + (SAML2_eIDAS_EXTENSIONS + " " + SAML2_eIDAS_EXTENSIONS_SCHEMA_LOCATION + " ") - + (eDELIVERY20 + " " + eDELIVERY20_SCHEMA_LOCATION); + + (SAML2_eIDAS_EXTENSIONS + " " + SAML2_eIDAS_EXTENSIONS_SCHEMA_LOCATION); /** * Contains all namespaces and local schema locations for XML schema @@ -481,7 +484,8 @@ public interface Constants { + (SAML2_METADATA_URI + " " + SAML2_METADATA_SCHEMA_LOCATION + " ") + (ASIC_URI + " " + ASIC_SCHEMA_LOCATION + " ") + (SAML2_eIDAS_EXTENSIONS + " " + SAML2_eIDAS_EXTENSIONS_SCHEMA_LOCATION + " ") - + (eDELIVERY20 + " " + eDELIVERY20_SCHEMA_LOCATION); + + (eDELIVERY20 + " " + eDELIVERY20_SCHEMA_LOCATION + " ") + + (eDELIVERY_PERSON_20 + " " + eDELIVERY_PERSON_20_SCHEMA_LOCATION); /** URN prefix for bPK and wbPK. */ public static final String URN_PREFIX = "urn:publicid:gv.at"; diff --git a/moaSig/common/src/main/resources/resources/schemas/zuse_mypersondata_en_p2.xsd b/moaSig/common/src/main/resources/resources/schemas/zuse_mypersondata_en_p2.xsd new file mode 100644 index 0000000..f23ee96 --- /dev/null +++ b/moaSig/common/src/main/resources/resources/schemas/zuse_mypersondata_en_p2.xsd @@ -0,0 +1,369 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Mit XMLSpy v2016 (http://www.altova.com) von Arne Tauber (TU Graz) bearbeitet --> +<xs:schema xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:p="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" targetNamespace="http://reference.e-government.gv.at/namespace/persondata/phase2/20181206#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.2.006"> + <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="W3C-XMLDSig.xsd"/> + <xs:annotation> + <xs:documentation>This version of person deploys only global elements. All types derived from abstract types have been replaced by substitution groups</xs:documentation> + </xs:annotation> + <!-- ### structure for person data ### --> + <xs:element name="Person" type="p:AbstractPersonType" abstract="true"/> + <!-- ### structure of a person with Identification ### --> + <xs:element name="PersonAndIdentification" type="p:PersonAndIdentificationType"> + <xs:annotation> + <xs:documentation>element of person details type</xs:documentation> + </xs:annotation> + </xs:element> + <!-- ### structure of a person with address### --> + <xs:element name="PersonAndAddress" type="p:PersonAndAddressType"> + <xs:annotation> + <xs:documentation>element of signed person datastructure type</xs:documentation> + </xs:annotation> + </xs:element> + <!-- ### physical person, corporate body and authority ### --> + <xs:element name="PhysicalPerson" type="p:PhysicalPersonType" substitutionGroup="p:Person"> + <xs:annotation> + <xs:documentation>element of physical person type, dreived from Person </xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="CorporateBody" type="p:CorporateBodyType" substitutionGroup="p:Person"> + <xs:annotation> + <xs:documentation>element of corporate body type, derived from Person</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Name" type="p:PersonNameType"> + <xs:annotation> + <xs:documentation>data related to the person's name</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="FullName" type="xs:token"> + <xs:annotation> + <xs:documentation>name of corporate body (whole name), compare VollerName</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Organization" type="xs:token"> + <xs:annotation> + <xs:documentation>part of an organisation, see also X.500 ou (eg departement, section, branch, ...) , compare Organisation</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Target" type="xs:anyURI"> + <xs:annotation> + <xs:documentation>Beinhaltet die Bereichskennung und entweder das VKZ oder den Service-Identifier der Zielorganisation für die das vbPK-ZU umzuschlüsseln ist. Das Target ist in der Form "urn:publicid:gv.at:ecdid+«VKZ od. Service-ID»+«Bereich»" zu liefern. (vgl. SZR 3.0 Anwendungsdokumentation)</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="DateOfBirth" type="xs:date"> + <xs:annotation> + <xs:documentation>date of birth, compare Geburtsdatum</xs:documentation> + </xs:annotation> + </xs:element> + <!-- ### adress data for various types of communications ### --> + <xs:element name="Address" type="p:AbstractAddressType" abstract="true"/> + <xs:element name="PostalAddress" type="p:PostalAddressType" substitutionGroup="p:Address"> + <xs:annotation> + <xs:documentation>Postal or ZMR Address, compare PostAdresse</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="InternetAddress" type="p:InternetAddressType" substitutionGroup="p:Address"> + <xs:annotation> + <xs:documentation>element of internet address type</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="TelephoneAddress" type="p:TelephoneAddressType" substitutionGroup="p:Address"> + <xs:annotation> + <xs:documentation>element of TelephoneAddressType, compare TelefonAdresse</xs:documentation> + </xs:annotation> + </xs:element> + <!-- ### Identification elements ###--> + <xs:element name="Identification" type="p:IdentificationType"> + <xs:annotation> + <xs:documentation>unique identifier</xs:documentation> + </xs:annotation> + </xs:element> + <xs:complexType name="IdentificationType"> + <xs:annotation> + <xs:documentation>unique identifier</xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element name="Value"> + <xs:annotation> + <xs:documentation>actual value of the identifier.</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="Id" type="xs:ID" use="optional"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element name="Type" type="xs:anyURI"> + <xs:annotation> + <xs:documentation>type of value (eg 'ZMR', 'SV-Nummer', 'Martrikelnummer', database identification, ...)</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + <xs:attribute name="Id" type="xs:ID" use="optional"/> + </xs:complexType> + <!--### Complex types ###--> + <xs:complexType name="PersonAndIdentificationType"> + <xs:annotation> + <xs:documentation>person datastructure. The first Identification elements (from the base type) denote the record as such (e.g. database key for this record) - not to be mistaken for identifiers of the person or of an address (they have their own Identification elements).</xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element ref="p:Identification"/> + <xs:element ref="p:Person"/> + </xs:sequence> + <xs:attribute name="Id" type="xs:ID" use="optional"/> + </xs:complexType> + <xs:complexType name="PersonAndAddressType"> + <xs:annotation> + <xs:documentation>signed person datastructure. The first Identification elements (from the base type) denote the record as such (e.g. database key for this record) - not to be mistaken for identifiers of the person or of an address (they have their own Identification elements).</xs:documentation> + </xs:annotation> + <xs:sequence> + <xs:element ref="p:Identification"/> + <xs:element ref="p:Person"/> + <xs:element ref="p:Address" minOccurs="0" maxOccurs="unbounded"/> + </xs:sequence> + <xs:attribute name="Id" type="xs:ID" use="optional"/> + </xs:complexType> + <xs:complexType name="AbstractPersonType" abstract="true"> + <xs:annotation> + <xs:documentation>main structure of person data</xs:documentation> + </xs:annotation> + <xs:attribute name="Id" type="xs:ID" use="optional"/> + </xs:complexType> + <xs:complexType name="PhysicalPersonType"> + <xs:annotation> + <xs:documentation>physical person</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:extension base="p:AbstractPersonType"> + <xs:sequence> + <xs:element ref="p:Name"/> + <xs:element ref="p:DateOfBirth" minOccurs="0"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="PersonNameType"> + <xs:sequence> + <xs:element name="GivenName" type="xs:string"/> + <xs:element name="FamilyName"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="primary" default="undefined"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="true"/> + <xs:enumeration value="false"/> + <xs:enumeration value="undefined"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="prefix" type="xs:string"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element name="Affix" minOccurs="0" maxOccurs="unbounded"> + <xs:annotation> + <xs:documentation>Inlcudes all Information that is not exactly a name: academic or aristocratic titles, ... the new position attribute can contain a suffx or prefix value</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="type" use="required"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="academicGrade"/> + <xs:enumeration value="aristocraticPrefix"/> + <xs:enumeration value="aristocraticTitle"/> + <xs:enumeration value="familyNamePrefix"/> + <xs:enumeration value="familyNameSuffix"/> + <xs:enumeration value="formOfAddress"/> + <xs:enumeration value="generation"/> + <xs:enumeration value="qualification"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="position" use="optional"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="prefix"/> + <xs:enumeration value="suffix"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:complexType name="AuthorityType"> + <xs:annotation> + <xs:documentation>public authority</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:extension base="p:AbstractPersonType"> + <xs:sequence> + <xs:element ref="p:FullName"/> + <xs:element ref="p:Organization" minOccurs="0"/> + <xs:element ref="p:Target" minOccurs="0"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="CorporateBodyType"> + <xs:annotation> + <xs:documentation>juridical person, organisation</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:extension base="p:AbstractPersonType"> + <xs:sequence> + <xs:element ref="p:FullName"/> + <xs:element ref="p:Organization" minOccurs="0"/> + <xs:element ref="p:Target" minOccurs="0"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="AbstractAddressType"> + <xs:annotation> + <xs:documentation>main structure of address data </xs:documentation> + </xs:annotation> + <xs:attribute name="Id" type="xs:ID" use="optional"/> + </xs:complexType> + <xs:complexType name="PostalAddressType"> + <xs:complexContent> + <xs:extension base="p:AbstractAddressType"> + <xs:sequence> + <xs:element name="CountryCode" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:documentation>Code for the country, use ISO or internatinal Postalstandard, compare Staatscode</xs:documentation> + </xs:annotation> + <!-- xs:simpleType> + <xs:restriction base="xs:string"> + <xs:pattern value="[A-Z]{2}"/> + </xs:restriction> + </xs:simpleType --> + </xs:element> + <xs:element name="PostalCode" type="xs:string"> + <xs:annotation> + <xs:documentation>ZIP, compare Postleitzahl</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Municipality" type="xs:string"> + <xs:annotation> + <xs:documentation>compare Gemeinde</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="MunicipalityNumber" type="xs:string" minOccurs="0"> + <xs:annotation> + <xs:documentation>compare Gemeindekennzahl</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="DeliveryAddress"> + <xs:complexType> + <xs:sequence> + <xs:element name="StreetName" type="xs:string"/> + <xs:element name="BuildingNumber" type="xs:string"/> + <xs:element name="Unit" type="xs:string" minOccurs="0"/> + <xs:element name="DoorNumber" type="xs:string" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="type" default="undefined"> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="postOfficeBoxAddress"/> + <xs:enumeration value="streetAddress"/> + <xs:enumeration value="militaryAddress"/> + <xs:enumeration value="undefined"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="InternetAddressType"> + <xs:annotation> + <xs:documentation>internet based communication</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:extension base="p:AbstractAddressType"> + <xs:sequence> + <xs:element name="Address" type="xs:anyURI"> + <xs:annotation> + <xs:documentation>URI: email-Address, Web, FTP, LDAP, ..., comapre Adress</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="TelephoneAddressType"> + <xs:annotation> + <xs:documentation>phone numbers</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:extension base="p:AbstractAddressType"> + <xs:sequence> + <xs:element name="Number" type="xs:token"> + <xs:annotation> + <xs:documentation>phonenumber</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + <xs:attribute name="MessengerService" type="xs:token" use="optional" default="SMS"> + <xs:annotation> + <xs:documentation>SMS, WhatsApp, etc.</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <!-- ### strings of defined maximum lenght for use with ZMR address #### --> + <xs:simpleType name="string3"> + <xs:restriction base="xs:string"> + <xs:maxLength value="3"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="string4"> + <xs:restriction base="xs:string"> + <xs:maxLength value="4"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="string7"> + <xs:restriction base="xs:string"> + <xs:maxLength value="7"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="string20"> + <xs:restriction base="xs:string"> + <xs:maxLength value="20"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="string30"> + <xs:restriction base="xs:string"> + <xs:maxLength value="30"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="string50"> + <xs:restriction base="xs:string"> + <xs:maxLength value="50"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="string100"> + <xs:restriction base="xs:string"> + <xs:maxLength value="100"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="integer5"> + <xs:restriction base="xs:integer"> + <xs:minInclusive value="10000"/> + <xs:maxInclusive value="99999"/> + </xs:restriction> + </xs:simpleType> +</xs:schema> |