<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v5 rel. 4 U (http://www.xmlspy.com) by Rudolf Schamberger (Stabsstelle IKT-Strategie) (Bundesrechenzentrum GmbH) -->
<xsd:schema targetNamespace="http://www.buergerkarte.at/namespaces/moaconfig#" xmlns:sl10="http://www.buergerkarte.at/namespaces/securitylayer/20020225#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.buergerkarte.at/namespaces/moaconfig#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.1.1">
	<xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"/>
	<xsd:import namespace="http://www.buergerkarte.at/namespaces/securitylayer/20020225#" schemaLocation="http://www.buergerkarte.at/konzept/securitylayer/spezifikation/20020831/core/Core.20020225.xsd"/>
	<xsd:element name="Configuration">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="LoginType" type="LoginType" default="stateful"/>
				<xsd:choice>
					<xsd:element ref="ParamAuth"/>
					<xsd:element ref="BasicAuth"/>
					<xsd:element ref="HeaderAuth"/>
				</xsd:choice>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:simpleType name="LoginType">
		<xsd:restriction base="xsd:token">
			<xsd:enumeration value="stateless"/>
			<xsd:enumeration value="stateful"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:element name="ParamAuth">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="Parameter" maxOccurs="unbounded"/>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Parameter">
		<xsd:complexType>
			<xsd:attribute name="Name" type="xsd:token" use="required"/>
			<xsd:attribute name="Value" type="MOAAuthDataType" use="required"/>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="BasicAuth">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="UserID" type="MOAAuthDataType"/>
				<xsd:element name="Password" type="MOAAuthDataType"/>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="HeaderAuth">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="Header" maxOccurs="unbounded"/>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name="Header">
		<xsd:complexType>
			<xsd:attribute name="Name" type="xsd:token" use="required"/>
			<xsd:attribute name="Value" type="MOAAuthDataType" use="required"/>
		</xsd:complexType>
	</xsd:element>
	<xsd:simpleType name="MOAAuthDataType">
		<xsd:restriction base="xsd:token">
			<xsd:enumeration value="MOAGivenName"/>
			<xsd:enumeration value="MOAFamilyName"/>
			<xsd:enumeration value="MOADateOfBirth"/>
			<xsd:enumeration value="MOABPK"/>
			<xsd:enumeration value="MOAPublicAuthority"/>
			<xsd:enumeration value="MOABKZ"/>
			<xsd:enumeration value="MOAQualifiedCertificate"/>
			<xsd:enumeration value="MOAStammzahl"/>
			<xsd:enumeration value="MOAIdentificationValueType"/>
			<xsd:enumeration value="MOAIPAddress"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="MOAKeyBoxSelector">
		<xsd:restriction base="xsd:token">
			<xsd:enumeration value="SecureSignatureKeypair"/>
			<xsd:enumeration value="CertifiedKeypair"/>
		</xsd:restriction>
	</xsd:simpleType>
	<!--Konfiguration für Authentisierungs- und Proxy-Komponente und Online-Applikation-->
	<xsd:element name="MOA-IDConfiguration">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="AuthComponent" type="AuthComponentType" minOccurs="0">
					<xsd:annotation>
						<xsd:documentation>enthält Parameter der 
							Authentisierungs-Komponente</xsd:documentation>
					</xsd:annotation>
				</xsd:element>
				<xsd:element name="ProxyComponent" minOccurs="0">
					<xsd:annotation>
						<xsd:documentation>enthält Konfigurationsparameter der 
							Proxy-Komponente</xsd:documentation>
					</xsd:annotation>
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="AuthComponent">
								<xsd:annotation>
									<xsd:documentation>enthält Parameter für die Kommunikation zw. 
										Proxykomponente und Authenttisierungskomponente</xsd:documentation>
								</xsd:annotation>
								<xsd:complexType>
									<xsd:sequence>
										<xsd:element name="ConnectionParameter" type="ConnectionParameterClientAuthType" minOccurs="0">
											<xsd:annotation>
												<xsd:documentation>enthält Parameter für die SOAP-Verbindung von der 
													Proxy-Komponente zur Auth-Komponente (vgl. 
													AuthComponent/MOA-SP/ConnectionParameter)</xsd:documentation>
											</xsd:annotation>
										</xsd:element>
									</xsd:sequence>
								</xsd:complexType>
							</xsd:element>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="OnlineApplication" maxOccurs="unbounded">
					<xsd:annotation>
						<xsd:documentation>enthält Parameter für die OA</xsd:documentation>
					</xsd:annotation>
					<xsd:complexType>
						<xsd:complexContent>
							<xsd:extension base="OnlineApplicationType">
								<xsd:attribute name="publicURLPrefix" type="xsd:anyURI" use="required"/>
								<xsd:attribute name="keyBoxIdentifier" type="MOAKeyBoxSelector" use="optional" default="SecureSignatureKeypair"/>
							</xsd:extension>
						</xsd:complexContent>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="ChainingModes" minOccurs="0">
					<xsd:annotation>
						<xsd:documentation>spezifiziert den Algorithmus ("pkix" oder "chaining") für die 
							Zertifikatspfadvalidierung</xsd:documentation>
					</xsd:annotation>
					<xsd:complexType>
						<xsd:sequence minOccurs="0" maxOccurs="unbounded">
							<xsd:element name="TrustAnchor">
								<xsd:annotation>
									<xsd:documentation>ein vom SystemDefaultMode abweichender ChiningMode kann 
										für jeden TrustAnchor gesetzt werden</xsd:documentation>
								</xsd:annotation>
								<xsd:complexType>
									<xsd:complexContent>
										<xsd:extension base="dsig:X509IssuerSerialType">
											<xsd:attribute name="mode" type="ChainingModeType" use="required"/>
										</xsd:extension>
									</xsd:complexContent>
								</xsd:complexType>
							</xsd:element>
						</xsd:sequence>
						<xsd:attribute name="systemDefaultMode" type="ChainingModeType" use="optional" default="pkix"/>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="TrustedCACertificates" type="xsd:anyURI" minOccurs="0">
					<xsd:annotation>
						<xsd:documentation>verweist auf ein Verzeichnis, das vertrauenswürdige CA 
							(Zwischen-CA, Wurzel-CA) Zertifikate enthält.</xsd:documentation>
					</xsd:annotation>
				</xsd:element>
				<xsd:element name="GenericConfiguration" minOccurs="0" maxOccurs="unbounded">
					<xsd:complexType>
						<xsd:attribute name="name" type="xsd:string" use="required"/>
						<xsd:attribute name="value" type="xsd:string" use="required"/>
					</xsd:complexType>
				</xsd:element>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:complexType name="AuthComponentType">
		<xsd:sequence>
			<xsd:element name="BKUSelection" minOccurs="0">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="ConnectionParameter" type="ConnectionParameterServerAuthType"/>
					</xsd:sequence>
					<xsd:attribute name="BKUSelectionAlternative" type="BKUSelectionType" use="optional" default="HTMLComplete"/>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="SecurityLayer">
				<xsd:annotation>
					<xsd:documentation>enthält Parameter für die Kommunikation mit dem 
						Security-Layer</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="TransformsInfo" maxOccurs="unbounded">
							<xsd:annotation>
								<xsd:documentation>das Attribut filename verweist auf eine Datei mit globalem 
									Element TransformsInfo vom Typ sl10:TransformsInfo; diese TransformsInfo 
									werden in den CreateXMLSignatureRequest für die Signatur des AUTH-Blocks 
									inkludiert</xsd:documentation>
							</xsd:annotation>
							<xsd:complexType>
								<xsd:attribute name="filename" type="xsd:anyURI" use="required"/>
							</xsd:complexType>
						</xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="MOA-SP">
				<xsd:annotation>
					<xsd:documentation>enthält Konfiguratiosnparameter für die Kommunikation mit dem MOA 
						SP Modul</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="ConnectionParameter" type="ConnectionParameterClientAuthType" minOccurs="0">
							<xsd:annotation>
								<xsd:documentation>enthält Parameter für die SOAP-Verbindung von der 
									AUTH-Komponente zu MOA-SP; das Attribut URL enthält den Endpunkt des Server; 
									wird das Schema "https" verwendet müssen die Kind-Elemente angegeben werden; 
									wird das Schema "http" verwendet dürfen keine Kind-Elemente angegeben 
									werden; wird das Element nicht verwendet dann wird MOA-SP über das API 
									aufgerufen</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
						<xsd:element name="VerifyIdentityLink">
							<xsd:annotation>
								<xsd:documentation>enthält Parameter für die Überprüfung der 
									Personenbindung</xsd:documentation>
							</xsd:annotation>
							<xsd:complexType>
								<xsd:sequence>
									<xsd:element ref="TrustProfileID"/>
								</xsd:sequence>
							</xsd:complexType>
						</xsd:element>
						<xsd:element name="VerifyAuthBlock">
							<xsd:annotation>
								<xsd:documentation>enthält Parameter für die Überprüfung des 
									AUTH-Blocks</xsd:documentation>
							</xsd:annotation>
							<xsd:complexType>
								<xsd:sequence>
									<xsd:element ref="TrustProfileID"/>
									<xsd:element name="VerifyTransformsInfoProfileID" type="xsd:string" maxOccurs="unbounded"/>
								</xsd:sequence>
							</xsd:complexType>
						</xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="IdentityLinkSigners">
				<xsd:annotation>
					<xsd:documentation>enthält Informationen über akzeptierte Signers des 
						IdentityLinks</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="X509SubjectName" type="xsd:string" maxOccurs="unbounded">
							<xsd:annotation>
								<xsd:documentation>akzeptierte Signer des IdentityLinks werden per 
									X509SubjectName (Kodierung nach RFC 2253) identifiziert</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="ProxyComponentType"/>
	<xsd:complexType name="OnlineApplicationType">
		<xsd:sequence>
			<xsd:element name="AuthComponent" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>enthält Parameter über die OA, die die 
						Authentisierungs-Komponente betreffen</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:attribute name="provideStammzahl" type="xsd:boolean" use="optional" default="false"/>
					<xsd:attribute name="provideAUTHBlock" type="xsd:boolean" use="optional" default="false"/>
					<xsd:attribute name="provideIdentityLink" type="xsd:boolean" use="optional" default="false"/>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="ProxyComponent" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>enthält Parameter über die OA, die die Proxy-Komponente 
						betreffen</xsd:documentation>
				</xsd:annotation>
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element name="ConnectionParameter" type="ConnectionParameterClientAuthType">
							<xsd:annotation>
								<xsd:documentation>enthält Parameter über die OA, die die Proxy-Komponente 
									betreffen</xsd:documentation>
							</xsd:annotation>
						</xsd:element>
					</xsd:sequence>
					<xsd:attribute name="configFileURL" type="xsd:anyURI" use="optional"/>
					<xsd:attribute name="sessionTimeOut" type="xsd:int" use="optional"/>
					<xsd:attribute name="loginParameterResolverImpl" type="xsd:string" use="optional"/>
					<xsd:attribute name="loginParameterResolverConfiguration" type="xsd:string" use="optional"/>
					<xsd:attribute name="connectionBuilderImpl" type="xsd:string" use="optional"/>
				</xsd:complexType>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="ConnectionParameterServerAuthType">
		<xsd:sequence>
			<xsd:element name="AcceptedServerCertificates" type="xsd:anyURI" minOccurs="0">
				<xsd:annotation>
					<xsd:documentation>URL zu einem Verzeichnis, das akzeptierte Server-Zertifikate der 
						TLS-Verbindung enthält (keine CA-Zertifikate)</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
		<xsd:attribute name="URL" type="xsd:anyURI" use="required"/>
	</xsd:complexType>
	<xsd:complexType name="ConnectionParameterClientAuthType">
		<xsd:complexContent>
			<xsd:extension base="ConnectionParameterServerAuthType">
				<xsd:sequence>
					<xsd:element name="ClientKeyStore" minOccurs="0">
						<xsd:annotation>
							<xsd:documentation>URL zu einem KeyStore, der den privaten Schlüssel, der für 
								die TLS-Client-Authentisierung verwendetwird, enthält</xsd:documentation>
						</xsd:annotation>
						<xsd:complexType>
							<xsd:simpleContent>
								<xsd:extension base="xsd:anyURI">
									<xsd:attribute name="password" type="xsd:string" use="optional"/>
								</xsd:extension>
							</xsd:simpleContent>
						</xsd:complexType>
					</xsd:element>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:element name="TrustProfileID" type="xsd:string"/>
	<xsd:simpleType name="ChainingModeType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="chaining"/>
			<xsd:enumeration value="pkix"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="BKUSelectionType">
		<xsd:restriction base="xsd:token">
			<xsd:enumeration value="HTMLComplete"/>
			<xsd:enumeration value="HTMLSelect"/>
		</xsd:restriction>
	</xsd:simpleType>
</xsd:schema>