From 1d918b4e05d06ed39f6215fd70ce375a38a300b8 Mon Sep 17 00:00:00 2001
From: Klaus Stranacher MOA: Serversignatur (SS) und Signaturprüfung (SP), V 1.5 MOA: Serversignatur (SS) und Signaturprüfung (SP) Konfiguration Dieses Handbuch beschreibt detailliert die Konfigurationsmöglichkeiten für MOA SP/SS. Wenn nicht anders angegeben, beziehen sich die Erläuterungen sowohl auf die Konfiguration des Webservices als auch auf die Konfiguration von MOA SP/SS für den Einsatz als Klassenbibliothek. Folgende Namenraum-Präfixe werden in diesem Handbuch zur Kennzeichnung der Namenräume
von XML-Elementen verwendet: Die Konfiguration von MOA SP/SS erfolgt zentral über eine einzige Konfigurationsdatei. Das Format der Konfigurationsdatei ist XML und muss dem Schema MOA-SPSS-config-1.5.2.xsd entsprechen. Abschnitt 2 erläutert die Konfigurationsmöglichkeiten im Einzelnen. Mit dem Wechsel auf Version 1.3 verwendet MOA SP/SS ein neues, übersichtlicheres Format für die
XML-Konfigurationsdatei.
-
- ![]()
Open Source
-
- für das E-Government
+ 
+ ![]()
Dokumentation
+ 
-
Inhalt
- 1 Übersicht
+ 1 Übersicht
1.1 Allgemeines
- 1.1.1 Namenskonventionen
+ 1.1 Allgemeines
+ 1.1.1 Namenskonventionen
@@ -143,9 +142,9 @@
- http://www.w3.org/2001/XMLSchema1.2 Zentrale Konfigurationsdatei
+ 1.2 Zentrale Konfigurationsdatei
1.2.1
+
1.2.1
Aktualisierung auf das Format von MOA SP/SS 1.3
Die zentrale Konfigurationsdatei von MOA SP/SS wird der Java Virtual Machine, in der MOA SP/SS läuft, durch eine System Property mitgeteilt (wird beim Starten der Java Virtual Machine in der Form -D<name>=<wert> gemacht). Der Name der System Property lautet moa.spss.server.configuration; als Wert der System Property ist der Pfad sowie der Name der Konfigurationsdatei im Dateisystem anzugeben, z.B.
moa.spss.server.configuration=C:/Programme/apache/tomcat-4.1.30/conf/moa-spss/moa-spss.config.xml
Weitere Informationen zum Bekanntmachen der zentralen Konfigurationsdatei für MOA SP/SS erhalten Sie in Abschnitt 2.1.2.3 des Installationshandbuchs.
-Wird MOA SP/SS als Webservice eingesetzt, kann durch Aufrufen einer speziellen URL des Webservice ein erneutes Einlesen der Konfigurationsdatei erzwungen werden. Damit ist es möglich, Änderungen an der Konfigurationsdatei vorzunehmen, und diese Änderungen ohne Neustart des zu Grunde liegenden Servlet Containers in den Betrieb zu übernehmen.
Weitere Informationen zum erneuten Einlesen der Konfigurationsdatei im Webservice-Betrieb erhalten Sie in Abschnitt 2.1.2.5 des Installationshandbuchs.
-MOA SP/SS verwendet als Framework für Logging-Information die Open Source Software log4j. Die Konfiguration der Logging-Information erfolgt nicht direkt durch MOA SP/SS, sondern über eine eigene Konfigurationsdatei, die der Java Virtual Machine durch eine System Property mitgeteilt wird. Der Name der System Property lautet log4j.configuration; als Wert der System Property ist eine URL anzugeben, die auf die log4j-Konfigurationsdatei verweist, z.B.
-
log4j.configuration=file:/C:/Programme/apache/tomcat-4.1.30/conf/moa-spss/log4j.properties+
MOA SP/SS verwendet als Framework für Logging-Information die Open Source Software log4j. Die Konfiguration der Logging-Information erfolgt nicht direkt durch MOA SP/SS, sondern über eine eigene Konfigurationsdatei, die der Java Virtual Machine durch eine System Property mitgeteilt wird. Der Name der System Property lautet log4j.configuration; als Wert der System Property ist eine URL anzugeben, die auf die log4j-Konfigurationsdatei verweist, z.B.
log4j.configuration=file:/C:/Programme/apache/tomcat-4.1.30/conf/moa-spss/log4j.propertiesWeitere Informationen zur Konfiguration des Loggings erhalten Sie in Abschnitt 2.1.3 des Installationshandbuchs.
Standardmäßig ist das Auflösen von externen URIs (inkl. localhost) deaktiviert (d.h. keines der nachfolgenden Konfigurationselement cfg:PermitExternalUris bzw. cfg:ForbidExternalUris existiert). Es gibt jedoch zwei Möglichkeiten das Auflösen zu aktivieren bzw. zu
Standardmäßig ist das Auflösen von externen URIs (inkl. localhost) deaktiviert (d.h. keines der nachfolgenden Konfigurationselement cfg:PermitExternalUris bzw. cfg:ForbidExternalUris existiert). Es gibt jedoch zwei Möglichkeiten das Auflösen zu aktivieren:
| Open Source - für das E-Government |
- ![]() |
+ Dokumentation | +![]() |
MOA: Serversignatur (SS) und Signaturprüfung (SP), V 1.5
+MOA: Serversignatur (SS) und Signaturprüfung (SP)
FAQ
| Open Source - für das E-Government |
- ![]() |
+ Dokumentation | +![]() |
| Open Source - für das E-Government |
- ![]() |
+ Dokumentation | +![]() |
MOA: Serversignatur (SS) und Signaturprüfung (SP), V 1.5
+MOA: Serversignatur (SS) und Signaturprüfung (SP)
Installation
| Open Source - für das E-Government |
- ![]() |
+ Dokumentation | +![]() |
MOA: Serversignatur (SS) und Signaturprüfung (SP), V 1.5
+MOA: Serversignatur (SS) und Signaturprüfung (SP)
Einführung
| Open Source - für das E-Government |
- ![]() |
+ Dokumentation | +![]() |
MOA: Serversignatur (SS) und Signaturprüfung (SP), V 1.5
+MOA: Serversignatur (SS) und Signaturprüfung (SP)
Anwendung
KG_allgemein bezeichnet eine Schlüsselgruppe, aus der SS einen Signaturschlüssel selektieren soll und muss einer in der SP/SS-Konfigurationsdatei definierten Schlüsselgruppe entsprechen.
<SingleSignatureInfo SecurityLayerConformity="true">
Für jedes SingleSignatureInfoElement wird eine eigene CMS/CAdES-Signatur erzeugt. Wird das Attribut SecurityLayerConformity auf true gesetzt, dann wird eine CAdES-Signatur gemäß Security-Layer Spezifikation V1.2x TODO erzeugt; d.h. es werden signierte Properties (Zeitpunkt der Signaturerstellung, das für die Signaturüberprüfung zu verwendende Zertifikat, Metainformationen zu den signierten Datenobjekten).
<DataObjectInfo Structure="enveloping"> - <DataObject> - <MetaInfo> - <MimeType>text/plain</MimeType> - </MetaInfo> - <Content> - <Base64Content>RGllc2UgRGF0ZW4gc2luZCByZWluZXIgVGV4dC4=</Base64Content> - </Content> - </DataObject> - </DataObjectInfo> +<DataObjectInfo Structure="enveloping"> + <DataObject> + <MetaInfo> + <MimeType>text/plain</MimeType> + </MetaInfo> + <Content> + <Base64Content>RGllc2UgRGF0ZW4gc2luZCByZWluZXIgVGV4dC4=</Base64Content> + </Content> + </DataObject> + </DataObjectInfo>Das zu signierende Daten-Objekt muss in einem
DataObjectInfoElement spezifiziert werden. Das AttributStructuregibt an, ob die Daten in die Signatur integriert werden sollen (Structure="enveloping") oder nicht (Structure="detached").Im nachfolgenden
@@ -113,8 +112,8 @@DataObjectElement muss entweder das AttributReference(enthält eine URL, von der SS die Daten beziehen soll) gesetzt sein, oder aber die zu signierenden Daten werden explizit im ElementBase64Content(enthält Daten in Base64 kodierter Form) spezifiziert sein. Die Angabe der zu signierenden Daten über das AttributReferenceund gleichzeitig im ElementBase64Contentist nicht erlaubt. Zusätzlich muss im ElementMimeType(unter dem ElementMetaInfo) der MIME-Type der zu signierenden Daten spezifiziert werden.Response
TODO: Neue Signatur erzeugen (da CAdES - d.h. noch auf neues iaik-moa warten)
-
CreateCMSSignatureRequest.Base64Content.resp.xmlist eine typische Response des SS Webservices auf den obigen Request. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass die dargestellte Response zur bessernen Lesbarkeit eingerückt und gekürzt wurde.<CreateCMSSignatureResponse - xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#"+
xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
<CMSSignature>MIAGCSqGSI...p92gh6wAAAAAAAA=</CMSSignature>
</CreateCMSSignatureResponse><CreateCMSSignatureResponse + xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#"
xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
<CMSSignature>MIAGCSqGSI...p92gh6wAAAAAAAA=</CMSSignature>
</CreateCMSSignatureResponse>
CreateCMSSignatureResponseenthält je erzeugter Signatur ein ElementCMSSignature(in diesem Fall genau ein Element).CMSSignatureenthält die von SS erzeugte CAdES-Signatur (daSecurityLayerConformity="true"im Request angegeben wurde) als Base64-codierten Wert. Das unterzeichnete Datenobjekt ist in der Signaturstruktur selbst enthalten (enveloping).2.1.1.2 Beispiel (Datenobjekt als Referenz)
@@ -124,22 +123,22 @@
KG_allgemeinbezeichnet eine Schlüsselgruppe, aus der SS einen Signaturschlüssel selektieren soll und muss einer in der SP/SS-Konfigurationsdatei definierten Schlüsselgruppe entsprechen.<SingleSignatureInfo SecurityLayerConformity="false">Für jedes
-SingleSignatureInfoElement wird eine eigene CMS/CAdES-Signatur erzeugt. Wird das AttributSecurityLayerConformityauftruegesetzt, dann wird eine CAdES-Signatur gemäß Security-Layer Spezifikation V1.2x TODO erzeugt; d.h. es werden signierte Properties (Zeitpunkt der Signaturerstellung, das für die Signaturüberprüfung zu verwendende Zertifikat, Metainformationen zu den signierten Datenobjekten).<DataObjectInfo Structure="detached"> - <DataObject> - <MetaInfo> - <MimeType>text/plain</MimeType> - </MetaInfo> - <Content Reference="http://localhost:8080/moa-spss-handbook-referencedData/Text.txt"/> - </DataObject> - </DataObjectInfo> +<DataObjectInfo Structure="detached"> + <DataObject> + <MetaInfo> + <MimeType>text/plain</MimeType> + </MetaInfo> + <Content Reference="http://localhost:8080/moa-spss-handbook-referencedData/Text.txt"/> + </DataObject> + </DataObjectInfo>Das zu signierende Daten-Objekt muss in einem
DataObjectInfoElement spezifiziert werden. Das AttributStructuregibt an, ob die Daten in die Signatur integriert werden sollen (Structure="enveloping") oder nicht (Structure="detached").Im nachfolgenden
DataObjectElement muss entweder das AttributReference(enthält eine URL, von der SS die Daten beziehen soll) gesetzt sein, oder aber die zu signierenden Daten werden explizit im ElementBase64Content(enthält Daten in Base64 kodierter Form) spezifiziert sein. Die Angabe der zu signierenden Daten über das AttributReferenceund gleichzeitig im ElementBase64Contentist nicht erlaubt. Zusätzlich muss im ElementMimeType(unter dem ElementMetaInfo) der MIME-Type der zu signierenden Daten spezifiziert werden.Im konkreten Beispiel sollen die Daten nicht in die Signatur integriert werden (
Structure="detached"). Die Daten werden in diesem Beispiel mittels der AttributsRefernceangegeben und SS muss es von dieser URL laden. Der MIME-Type wird mittext/plainangegeben.Response
-
CreateCMSSignatureRequest.Reference.resp.xmlist eine typische Response des SS Webservices auf den obigen Request. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass die dargestellte Response zur bessernen Lesbarkeit eingerückt und gekürzt wurde.<CreateCMSSignatureResponse - xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#"+
xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
<CMSSignature>MIAGCSqGSI...SwxhbA9pAAAAAAAA</CMSSignature>
</CreateCMSSignatureResponse><CreateCMSSignatureResponse + xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#"
xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
<CMSSignature>MIAGCSqGSI...SwxhbA9pAAAAAAAA</CMSSignature>
</CreateCMSSignatureResponse>
CreateCMSSignatureResponseenthält je erzeugter Signatur ein ElementCMSSignature(in diesem Fall genau ein Element).CMSSignatureenthält die von SS erzeugte CMS-Signatur (daSecurityLayerConformity="false"im Request angegeben wurde) als Base64-codierten Wert. Das unterzeichnete Datenobjekt ist in der Signaturstruktur nicht enthalten (detached).2.1.2 Erstellung einer XML bzw. XAdES-Signatur
MOA-SS ermöglicht die Erstellung einer herkömmlichen XML-Signatur und einer XAdES-Signatur gemäß der Security-Layer Spezifikation V1.2x TODO. Die Auswahl ob eine herkömmliche XML oder eine Security-Layer konforme XAdES-Signatur erstellt wird, erfolgt durch das Attribute
@@ -151,216 +150,216 @@SecurityLayerConformityim Signaturerstelltungs-Request (siehe auch folgende Beispiele).
KG_allgemeinbezeichnet eine Schlüsselgruppe, aus der SS einen Signaturschlüssel selektieren soll und muss einer in der SP/SS-Konfigurationsdatei definierten Schlüsselgruppe entsprechen.<SingleSignatureInfo SecurityLayerConformity="false">Für jedes
-SingleSignatureInfoElement wird eine eigene XML-Signatur erzeugt. Wird das AttributSecurityLayerConformityauftruegesetzt, dann wird eine XML-Signatur gemäß Security-Layer Spezifikation V1.2x TODO erzeugt; d.h. es werden signierte Properties (Zeitpunkt der Signaturerstellung, das für die Signaturüberprüfung zu verwendende Zertifikat, Metainformationen zu den signierten Datenobjekten) und ein Manifest, das alle implizite Transformationsparameter enthält, zur Signatur hinzugefügt (=eine XAdES Signatur).<DataObjectInfo Structure="enveloping"> - <DataObject> - <XMLContent>Diese Daten werden signiert.<XMLContent> - </DataObject>+<DataObjectInfo Structure="enveloping"> + <DataObject> + <XMLContent>Diese Daten werden signiert.<XMLContent> + </DataObject>
Für jedes Daten-Objekt, das in die XML-Signatur als
dsig:Referenceaufgenommen werden soll, muss einDataObjectInfoElement spezifiziert werden. Das AttributStructuregibt an, ob die Daten in die Signatur in eindsig:ObjectElement integriert werden sollen (Structure="enveloping"), oder über einen URL referenziert werden sollen (Structure="detached").Im Fall von
Structure="enveloping"muss im nachfolgendenDataObjectElement entweder das AttributReference(enthält eine URL, von der SS die Daten beziehen soll) gesetzt sein, oder aber die zu signierenden Daten werden explizit in einem der ElementeBase64Content(enthält Daten in Base64 kodierter Form) oderXMLContent(enthält Daten als beliebiges XML-Fragment) oderLocRefContent(enthält eine URL, von der SS die Daten beziehen soll; in diesem Fall also gleichwertig wie ein gesetztes AttributReference) spezifiziert sein. Die Angabe der zu signierenden Daten über das AttributReferenceund gleichzeitig einem der ElementeBase64ContentoderXMLContentoderLocRefContentist nicht erlaubt.Im Fall von
Structure="detached"muss das AttributReferenceim nachfolgendenDataObjectElement gesetzt sein. Es enthält jene URL, die zur Referenzierung der Daten als Wert vondsig:Reference/@URIin die XML-Signatur aufgenommen wird. Die Angabe eines der ElementBase64ContentoderXMLContentoderLocRefContentist optional. Unterbleibt die Angabe, bezieht SS die Daten von der URL im AttributReference. Wird eines der Elemente verwendet, bezieht SS die Daten durch Analyse des angegebenen Elements (siehe obiger Absatz).Im konkreten Beispiel sollen die Daten in ein
dsig:ObjectElement integriert werden (Structure="enveloping"). Die Daten werden mittelsXMLContentals XML-Fragment (ein einfacher Textknoten) angegeben.-
<CreateTransformsInfoProfile>+
<CreateTransformsInfo> - <FinalDataMetaInfo> - <MimeType>text/plain<MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile><CreateTransformsInfoProfile>Zu jedem Daten-Objekt können optional Transformationen (z.B. XPath, XSLT, Base64-Decodierung, etc.) angegeben werden. Werden - wie hier im Beispiel - keine Transformationen angegeben, so muss zumindest der MIME-Type der zu signierenden Daten spezifiziert werden.
<CreateTransformsInfo> + <FinalDataMetaInfo> + <MimeType>text/plain<MimeType> + </FinalDataMetaInfo> + </CreateTransformsInfo> + </CreateTransformsInfoProfile>Response
--
CreateXMLSignatureRequest.Simple.resp.xmlist eine typische Response des SS Webservices auf den obigen Request. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass die dargestellte Response zur bessernen Lesbarkeit eingerückt und gekürzt wurde.-
<CreateXMLSignatureResponse - xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#"+
xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
<SignatureEnvironment>
<dsig:Signature Id="signature-1-1" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
<dsig:SignedInfo> - ... - <dsig:Reference Id="reference-1-1" URI="#xpointer(id('signed-data-1-1-1')/node())"> ++
CreateXMLSignatureRequest.Simple.resp.xmlist eine typische Response des SS Webservices auf den obigen Request. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass die dargestellte Response zur bessernen Lesbarkeit eingerückt und gekürzt wurde.<CreateXMLSignatureResponse + xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#"- + <dsig:Object Id="signed-data-1-1-1">Diese Daten werden signiert.</dsig:Object> + </dsig:Signature>
xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
<SignatureEnvironment>
<dsig:Signature Id="signature-1-1" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
<dsig:SignedInfo> ... - </dsig:Reference> + <dsig:Reference Id="reference-1-1" URI="#xpointer(id('signed-data-1-1-1')/node())"> + ... + </dsig:Reference> + ... + </dsig:SignedInfo> ... - </dsig:SignedInfo> - ... - <dsig:Object Id="signed-data-1-1-1">Diese Daten werden signiert.</dsig:Object> - </dsig:Signature>
</SignatureEnvironment>
</CreateXMLSignatureResponse>
</SignatureEnvironment>
</CreateXMLSignatureResponse>
CreateXMLSignatureResponseenthält je erzeugter Signatur ein ElementSignatureEnvironment(in diesem Fall genau ein Element).SignatureEnvironmententhält die von SS erzeugte XML-Signatur, die im obigen Request spezifiziert wurde. Man erkennt, dass die XML-Signatur genau ein Daten-Objekt unterzeichnet (eindsig:ReferenceElement ist enthalten). Das unterzeichnete Datenobjekt ist in der Signaturstruktur selbst enthalten (enveloping), und zwar in einemdsig:ObjectElement.2.1.2.2 Angabe der zu signierenden Daten
Request
Dieses Beispiel stellt die vielfältigen Möglichkeiten vor, wie MOA SS mitgeteilt werden kann, welche Daten signiert (wenn keine Transformationen angegeben werden) bzw. als Eingangsdaten für die Berechnung der Transformationen verwendet werden sollen (wenn Transformationen angegeben werden).
Mit
-CreateXMLSignatureRequest.Refs.xmlsollen insgesamt neun Datenobjekte signiert werden:<CreateXMLSignatureRequest - xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" - xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">+
<KeyIdentifier>KG_allgemein</KeyIdentifier>
<SingleSignatureInfo SecurityLayerConformity="false"><CreateXMLSignatureRequest + xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" + xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
<KeyIdentifier>KG_allgemein</KeyIdentifier>
<SingleSignatureInfo SecurityLayerConformity="false">Die Signatur soll mit dem Schlüssel
-KG_allgemeinerstellt werden; jene Elemente, die speziell für eine Security-Layer V1.1 konforme Signatur notwendig sind (vergleiche Einfaches Beispiel), brauchen nicht erstellt zu werden (SecurityLayerConformity="false").<DataObjectInfo Structure="enveloping" ChildOfManifest="true"> - <DataObject> - <Base64Content>RGllc2UgRGF0ZW4gd2FyZW4gYmFzZTY0IGtvZGllcnQu</Base64Content> - </DataObject> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <FinalDataMetaInfo> - <MimeType>text/plain</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo>+<DataObjectInfo Structure="enveloping" ChildOfManifest="true"> + <DataObject> + <Base64Content>RGllc2UgRGF0ZW4gd2FyZW4gYmFzZTY0IGtvZGllcnQu</Base64Content> + </DataObject> + <CreateTransformsInfoProfile> + <CreateTransformsInfo> + <FinalDataMetaInfo> + <MimeType>text/plain</MimeType> + </FinalDataMetaInfo> + </CreateTransformsInfo> + </CreateTransformsInfoProfile> + </DataObjectInfo>Die Daten sollen in der Enveloping Form in die Signatur integriert werden, d. h. die Daten werden in einem
dsig:Objectals Teil der XML-Struktur der Signatur aufgenommen (Structure="enveloping"). Weiters sollen die Daten nicht über über einedsig:Referenceindsig:SignedInfo, sondern über einedsig:Referencein einem eigenendsig:Manifestaufgenommen werden (ChildOfManifest="true").Die Daten selbst werden explizit in base64 kodierter Form als Inhalt des Elements
Base64Contentangegeben. Das AttributDataObject/@Referencedarf nicht angegeben werden, da die Daten in der Enveloping Form integriert werden sollen, undBase64Contentverwendet wird.Es werden - wie in allen übrigen Fällen dieses Beispiels - keine Transformationen angegeben. Der Mime-Type der zu signierenden Daten wird als
text/plainangegeben, da der Inhalt vonBase64Contentdie base64-Kodierung des TextsDiese Daten waren base64 kodiert.ist.- <DataObjectInfo Structure="enveloping" ChildOfManifest="false"> - <DataObject> - <XMLContent><doc:XMLDocument xmlns:doc="urn:document"> - <doc:Paragraph>Ich bin der erste Absatz in diesem Dokument.</doc:Paragraph> - <doc:Paragraph ParaId="Para2">Und ich bin der zweite Absatz in diesem Dokument. -Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> -</doc:XMLDocument></XMLContent> - </DataObject> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <FinalDataMetaInfo> - <MimeType>application/xml</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> + <DataObjectInfo Structure="enveloping" ChildOfManifest="false"> + <DataObject> + <XMLContent><doc:XMLDocument xmlns:doc="urn:document"> + <doc:Paragraph>Ich bin der erste Absatz in diesem Dokument.</doc:Paragraph> + <doc:Paragraph ParaId="Para2">Und ich bin der zweite Absatz in diesem Dokument. + Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> + </doc:XMLDocument></XMLContent> + </DataObject> + <CreateTransformsInfoProfile> + <CreateTransformsInfo> + <FinalDataMetaInfo> + <MimeType>application/xml</MimeType> + </FinalDataMetaInfo> + </CreateTransformsInfo> + </CreateTransformsInfoProfile> + </DataObjectInfo>Die Daten sollen in der Enveloping Form in die Signatur integriert werden, d. h. die Daten werden in einem
dsig:Objectals Teil der XML-Struktur der Signatur aufgenommen (Structure="enveloping"). Diesmal sollen die Daten direkt über einedsig:Referenceindsig:SignedInfoaufgenommen werden (ChildOfManifest="false").Die Daten selbst werden explizit als XML-Fragment als Inhalt des Elements
XMLContentangegeben. Das AttributDataObject/@Referencedarf nicht angegeben werden, da die Daten in der Enveloping Form integriert werden sollen, undXMLContentverwendet wird.Der Mime-Type der zu signierenden Daten wird als
application/xmlangegeben.- <DataObjectInfo Structure="enveloping" ChildOfManifest="false"> - <DataObject Reference="http://localhost:8080/referencedData/Text.txt"/> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <FinalDataMetaInfo> - <MimeType>text/plain</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> + <DataObjectInfo Structure="enveloping" ChildOfManifest="false"> + <DataObject Reference="http://localhost:8080/referencedData/Text.txt"/> + <CreateTransformsInfoProfile> + <CreateTransformsInfo> + <FinalDataMetaInfo> + <MimeType>text/plain</MimeType> + </FinalDataMetaInfo> + </CreateTransformsInfo> + </CreateTransformsInfoProfile> + </DataObjectInfo>Die Daten sollen in der Enveloping Form in die Signatur integriert werden, d. h. die Daten werden in einem
dsig:Objectals Teil der XML-Struktur der Signatur aufgenommen (Structure="enveloping"). Wiederum sollen die Daten direkt über einedsig:Referenceindsig:SignedInfoaufgenommen werden (ChildOfManifest="false").Die Daten werden diesmal nicht explizit angegeben, sondern mittels der URL in
DataObject/@Referencereferenziert. MOA SS versucht diese URL aufzulösen, um zu den zu signierenden Daten zu gelangen.Base64ContentoderXMLContentoderLocRefContentdürfen nicht verwendet werden, da die Daten in der Enveloping Form integriert werden sollen, und bereitsDataObject/@Referenceeingesetzt wird.Der Mime-Type der zu signierenden Daten wird als
text/plainangegeben.- <DataObjectInfo Structure="enveloping" ChildOfManifest="false"> - <DataObject> - <LocRefContent>http://localhost:8080/referencedData/Text.txt</LocRefContent> - </DataObject> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <FinalDataMetaInfo> - <MimeType>text/plain</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> + <DataObjectInfo Structure="enveloping" ChildOfManifest="false"> + <DataObject> + <LocRefContent>http://localhost:8080/referencedData/Text.txt</LocRefContent> + </DataObject> + <CreateTransformsInfoProfile> + <CreateTransformsInfo> + <FinalDataMetaInfo> + <MimeType>text/plain</MimeType> + </FinalDataMetaInfo> + </CreateTransformsInfo> + </CreateTransformsInfoProfile> + </DataObjectInfo>Die Daten sollen wiederum in der Enveloping Form in die Signatur integriert werden, d. h. die Daten werden in einem
dsig:Objectals Teil der XML-Struktur der Signatur aufgenommen (Structure="enveloping"). Wiederum sollen die Daten direkt über einedsig:Referenceindsig:SignedInfoaufgenommen werden (ChildOfManifest="false").Die Daten werden wie im vorhergehenden Fall nicht explizit angegeben, sondern referenziert. Diesmal wird die URL jedoch nicht
DataObject/@Referenceverwendet, sondern als Textinhalt des ElementsLocRefContent(LocRefsteht für Location Reference).DataObject/@Referencedarf in diesem Fall nicht verwendet werden. Diese Methode ist semantisch völlig ident mit dem vorhergehenden Fall.Der Mime-Type der zu signierenden Daten wird als
text/plainangegeben.- <DataObjectInfo Structure="detached" ChildOfManifest="true"> - <DataObject Reference="http://localhost:8080/referencedData/Text.b64"> - <Base64Content>RGllc2UgRGF0ZW4gd2FyZW4gYmFzZTY0IGtvZGllcnQu</Base64Content> - </DataObject> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <FinalDataMetaInfo> - <MimeType>text/plain</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> + <DataObjectInfo Structure="detached" ChildOfManifest="true"> + <DataObject Reference="http://localhost:8080/referencedData/Text.b64"> + <Base64Content>RGllc2UgRGF0ZW4gd2FyZW4gYmFzZTY0IGtvZGllcnQu</Base64Content> + </DataObject> + <CreateTransformsInfoProfile> + <CreateTransformsInfo> + <FinalDataMetaInfo> + <MimeType>text/plain</MimeType> + </FinalDataMetaInfo> + </CreateTransformsInfo> + </CreateTransformsInfoProfile> + </DataObjectInfo>Die Daten sollen diesmal in der Detached Form in die Signatur aufgenommen werden, d. h. die Daten werden nicht direkt in die Signaturstruktur integriert, sondern lediglich mittels URI im Attribut
URIder anzufertigendendsig:Referencereferenziert (Structure="detached"). Die Daten sollen indirekt über einedsig:Referenceeinesdsig:Manifests aufgenommen werden (ChildOfManifest="true").Die URI in
DataObject/@Referenceenthält dabei die URI, die zur Referenzierung indsig:Reference/@URIaufgenommen werden soll. Die Daten selbst hingegen werden im diesem Beispiel explizit in base64 kodierter Form als Inhalt des ElementsBase64Contentangegeben. MOA SS löst also keine URL zur Erlangung der Daten auf, sondern verwendet den Inhalt vonBase64Content.Der Mime-Type der zu signierenden Daten wird als
text/plainangegeben.- <DataObjectInfo Structure="detached" ChildOfManifest="false"> - <DataObject Reference="NichtAufloesbareReferenz1"> - <XMLContent><doc:XMLDocument xmlns:doc="urn:document"> - <doc:Paragraph>Ich bin der erste Absatz in diesem Dokument.</doc:Paragraph> - <doc:Paragraph ParaId="Para2">Und ich bin der zweite Absatz in diesem Dokument. -Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> -</doc:XMLDocument></XMLContent> - </DataObject> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <FinalDataMetaInfo> - <MimeType>application/xml</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> + <DataObjectInfo Structure="detached" ChildOfManifest="false"> + <DataObject Reference="NichtAufloesbareReferenz1"> + <XMLContent><doc:XMLDocument xmlns:doc="urn:document"> + <doc:Paragraph>Ich bin der erste Absatz in diesem Dokument.</doc:Paragraph> + <doc:Paragraph ParaId="Para2">Und ich bin der zweite Absatz in diesem Dokument. + Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> + </doc:XMLDocument> + </XMLContent> + </DataObject> + <CreateTransformsInfoProfile> + <CreateTransformsInfo> + <FinalDataMetaInfo> + <MimeType>application/xml</MimeType> + </FinalDataMetaInfo> + </CreateTransformsInfo> + </CreateTransformsInfoProfile> + </DataObjectInfo>Die Daten sollen auch diesmal in der Detached Form in die Signatur aufgenommen werden, d. h. die Daten werden nicht direkt in die Signaturstruktur integriert, sondern lediglich mittels URI im Attribut
URIder anzufertigendendsig:Referencereferenziert (Structure="detached"). Diesmal sollen die Daten direkt über einedsig:Referenceindsig:SignedInfoaufgenommen werden (ChildOfManifest="false").Die URI in
DataObject/@Referenceenthält dabei die URI, die zur Referenzierung indsig:Reference/@URIaufgenommen werden soll. Die Daten selbst hingegen werden im diesem Beispiel explizit als XML-Fragment inXMLContentangegeben. MOA SS löst auch hier keine URL zur Erlangung der Daten auf, sondern verwendet den Inhalt vonXMLContent. Zur Verdeutlichung dieses Umstandes wurde die URI inDataObject/@Referenceauf einen Wert gesetzt, der von MOA SS ganz sicher nicht aufgelöst werden kann (NichtAufloesbareReferenz1).Der Mime-Type der zu signierenden Daten wird als
application/xmlangegeben.- <DataObjectInfo Structure="detached" ChildOfManifest="false"> - <DataObject Reference="http://localhost:8080/referencedData/Text.txt"> - </DataObject> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <FinalDataMetaInfo> - <MimeType>text/plain</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> + <DataObjectInfo Structure="detached" ChildOfManifest="false"> + <DataObject Reference="http://localhost:8080/referencedData/Text.txt"> + </DataObject> + <CreateTransformsInfoProfile> + <CreateTransformsInfo> + <FinalDataMetaInfo> + <MimeType>text/plain</MimeType> + </FinalDataMetaInfo> + </CreateTransformsInfo> + </CreateTransformsInfoProfile> + </DataObjectInfo>Wiederum sollen die Daten in der Detached Form in die Signatur aufgenommen werden (
Structure="detached"). Wie zuvor sollen die Daten direkt über einedsig:Referenceindsig:SignedInfoaufgenommen werden (ChildOfManifest="false").Die URI in
DataObject/@Referenceenthält dabei die URI, die zur Referenzierung indsig:Reference/@URIaufgenommen werden soll. Nachdem eine explizite Angabe der Daten mittelsBase64Content,XMLContentoderLocRefContentunterbleibt, wird MOA SS versuchen, die URI indsig:Reference/@URIals URL aufzulösen, um so zu den zu signierenden Daten zu gelangen.Der Mime-Type der zu signierenden Daten wird als
text/plainangegeben.- <DataObjectInfo Structure="detached" ChildOfManifest="false"> - <DataObject Reference="NichtAufloesbareReferenz2"> - <LocRefContent>http://localhost:8080/referencedData/Text.txt</LocRefContent> - </DataObject> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <FinalDataMetaInfo> - <MimeType>text/plain</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> + <DataObjectInfo Structure="detached" ChildOfManifest="false"> + <DataObject Reference="NichtAufloesbareReferenz2"> + <LocRefContent>http://localhost:8080/referencedData/Text.txt</LocRefContent> + </DataObject> + <CreateTransformsInfoProfile> + <CreateTransformsInfo> + <FinalDataMetaInfo> + <MimeType>text/plain</MimeType> + </FinalDataMetaInfo> + </CreateTransformsInfo> + </CreateTransformsInfoProfile> + </DataObjectInfo>Wiederum sollen die Daten in der Detached Form in die Signatur aufgenommen werden (
Structure="detached"). Wie zuvor sollen die Daten direkt über einedsig:Referenceindsig:SignedInfoaufgenommen werden (ChildOfManifest="false").Die URI in
DataObject/@Referenceenthält dabei die URI, die zur Referenzierung indsig:Reference/@URIaufgenommen werden soll. Den Hinweis, wie MOA SS zu den zu signierenden Daten gelangen soll, ist jedoch in LocRefContent enthalten. MOA SS wird also versuchen, die dort enthaltene URL aufzulösen, um zu den zu signierenden Daten zu gelangen. Zur Verdeutlichung dieses Umstandes wurde die URI inDataObject/@Referenceauf einen Wert gesetzt, der von MOA SS ganz sicher nicht aufgelöst werden kann (NichtAufloesbareReferenz2). Diese Art der Datenangabe kann eingesetzt werden, wenn die Daten zum Zeitpunkt der Signaturerstellung von einem anderen Ort bezogen werden müssen, als später dann bei der Signaturprüfung.Der Mime-Type der zu signierenden Daten wird als
text/plainangegeben.- <DataObjectInfo Structure="detached" ChildOfManifest="false"> - <DataObject Reference=""/> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <dsig:Transforms> - <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> - </dsig:Transforms> - <FinalDataMetaInfo> - <MimeType>application/xml</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> + <DataObjectInfo Structure="detached" ChildOfManifest="false"> + <DataObject Reference=""/> + <CreateTransformsInfoProfile> + <CreateTransformsInfo> + <dsig:Transforms> + <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> + </dsig:Transforms> + <FinalDataMetaInfo> + <MimeType>application/xml</MimeType> + </FinalDataMetaInfo> + </CreateTransformsInfo> + </CreateTransformsInfoProfile> + </DataObjectInfo>Im letzten Fall schließlich sollen wiederum Daten in der Detached Form in die Signatur aufgenommen werden (
Structure="detached"). Wie zuvor sollen die Daten direkt über einedsig:Referenceindsig:SignedInfoaufgenommen werden (ChildOfManifest="false").Die Referenz auf die zu signierenden Daten ist wiederum in
DataObject/@Referenceenthalten; sie verweist diesmal jedoch nicht auf ein externes Dokument, sondern auf das gesamte (XML-)Dokument, in das die zu erstellende Signatur integriert werden soll, und zwar, indemDataObject/@Referenceden leeren String ("") enthält. Nachdem dadurch zwangsläufig auch die Signatur in den zu signierenden Daten enthalten wäre, wird die Signatur durch die Angabe einer Enveloped Signature Transform aus den zu signierenden Daten herausgenommen, bevor darüber der Hashwert berechnet wird (dsig:Transform).Offen bleibt die Frage, wie MOA SS nun weiß, in welches (XML-)Dokument es die die Signatur integrieren soll. Siehe dazu die Erläuterungen zum nächsten Ausschnitts des Requests.
Der Mime-Type der zu signierenden Daten wird als
application/xmlangegeben.- <CreateSignatureInfo> - <CreateSignatureEnvironment> - <LocRefContent>http://localhost:8080/referencedData/XMLDocument.xml</LocRefContent> - </CreateSignatureEnvironment> - <CreateSignatureEnvironmentProfile> - <CreateSignatureLocation Index="4" xmlns:doc="urn:document">/doc:XMLDocument</CreateSignatureLocation> - </CreateSignatureEnvironmentProfile> - </CreateSignatureInfo> + <CreateSignatureInfo> + <CreateSignatureEnvironment> + <LocRefContent>http://localhost:8080/referencedData/XMLDocument.xml</LocRefContent> + </CreateSignatureEnvironment> + <CreateSignatureEnvironmentProfile> + <CreateSignatureLocation Index="4" xmlns:doc="urn:document">/doc:XMLDocument</CreateSignatureLocation> + </CreateSignatureEnvironmentProfile> + </CreateSignatureInfo>Das Element
CreateSignatureInfoist grundsätzlich optional, und muss nur angegeben werden, wenn die zu erstellende Signatur von MOA SS in ein bestehendes XML-Dokument integriert werden soll (was in diesem Beispiel ja der Fall ist).@@ -368,118 +367,118 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
CreateSignatureEnvironmententhält das XML-Dokument, in das die zu erstellende Signatur integriert werden soll. In diesem Beispiel wird dieses Dokument mit Hilfe vonLocRefContentreferenziert, d. h. MOA SS wird versuchen, die darin enthaltene URL aufzulösen, um das XML-Dokument zu erhalten. Alternativ könnte auchBase64Content(explizite Angabe des XML-Dokuments in base64 kodierter Form) oderXMLContent(direkte Angabe des XML-Dokuments im Request) verwendet werden.Response
CreateXMLSignatureRequest.Refs.resp.xmlist eine typische Response des SS Webservices auf den obigen Request. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass die dargestellte Response zur bessernen Lesbarkeit eingerückt und gekürzt wurde.-<CreateXMLSignatureResponse - xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" - xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <SignatureEnvironment> - <doc:XMLDocument xmlns:doc="urn:document"> - <doc:Paragraph>Ich bin der erste Absatz in diesem Dokument.</doc:Paragraph> - <doc:Paragraph ParaId="Para2">Und ich bin der zweite Absatz in diesem Dokument. -Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph><dsig:Signature Id="signature-1-1" - xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <dsig:SignedInfo> - <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> - <dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"/> + <CreateXMLSignatureResponse + xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" + xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> + <SignatureEnvironment> + <doc:XMLDocument xmlns:doc="urn:document"> + <doc:Paragraph>Ich bin der erste Absatz in diesem Dokument.</doc:Paragraph> + <doc:Paragraph ParaId="Para2">Und ich bin der zweite Absatz in diesem Dokument. + Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> + <dsig:Signature Id="signature-1-1" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> + <dsig:SignedInfo> + <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> + <dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"/>Die Antwort enthält in
SignatureEnvironmentdas Ergebnis der Signaturerstellung. Nachdem die Signatur in ein bestehendes XML-Dokument integriert werden sollte, enthältSignatureEnvironmentdas Dokument-Element dieses XML-Dokuments (doc:XMLDocument). Man erkennt auch gut, dass die XML-Signatur als fünfter Kindknoten (Offset4) vondoc:XMLDocumenteingefügt wurde.- <dsig:Reference Id="reference-1-2" URI="#xpointer(id('signed-data-1-2-1')/node())"> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> - <dsig:DigestValue>A8ml6/aZKCmj1hONwvLItIwGHoc=</dsig:DigestValue> - </dsig:Reference> + <dsig:Reference Id="reference-1-2" URI="#xpointer(id('signed-data-1-2-1')/node())"> + <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> + <dsig:DigestValue>A8ml6/aZKCmj1hONwvLItIwGHoc=</dsig:DigestValue> + </dsig:Reference>Diese
dsig:Referencewurde auf Grund des zweitenDataObjectInfoElements im Request erstellt. Man erkennt gut den Verweis indsig:Reference/@URIauf dasdsig:Object, das die signierten Daten enthält (der XPointer verweist auf sämtliche Kindknoten jenes Elements, das ein ID-Attribut mit dem Wertsigned-data-1-2-1aufweist, des ersten vorkommendendsig:Objects der Signatur).- <dsig:Reference Id="reference-1-3" URI="#xpointer(id('signed-data-1-3-1')/node())"> - <dsig:Transforms> - <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64"/> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> - <dsig:DigestValue>0P878Dsmtxv5goj+6KgNmj6S/EE=</dsig:DigestValue> - </dsig:Reference> + <dsig:Reference Id="reference-1-3" URI="#xpointer(id('signed-data-1-3-1')/node())"> + <dsig:Transforms> + <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64"/> + </dsig:Transforms> + <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> + <dsig:DigestValue>0P878Dsmtxv5goj+6KgNmj6S/EE=</dsig:DigestValue> + </dsig:Reference>Diese
dsig:Referencewurde auf Grund des drittenDataObjectInfoElements im Request erstellt. Die Text-Daten wurden von der angegebenen URL (http://localhost:8080/referencedData/Text.txt) aufgelöst und in dasdsig:Objectmit dem ID-Attributsigned-data-1-3-1gesteckt. Um Probleme mit nicht in XML darstellbare Zeichen zu vermeiden, wurde der Text nicht direkt signiert, sondern in base64 kodierter Form in dasdsig:Objectintegriert, und eine Transformation zur base64 Dekodierung spezifiziert.- <dsig:Reference Id="reference-1-4" URI="#xpointer(id('signed-data-1-4-1')/node())"> - <dsig:Transforms> - <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64"/> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> - <dsig:DigestValue>0P878Dsmtxv5goj+6KgNmj6S/EE=</dsig:DigestValue> - </dsig:Reference> + <dsig:Reference Id="reference-1-4" URI="#xpointer(id('signed-data-1-4-1')/node())"> + <dsig:Transforms> + <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64"/> + </dsig:Transforms> + <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> + <dsig:DigestValue>0P878Dsmtxv5goj+6KgNmj6S/EE=</dsig:DigestValue> + </dsig:Reference>Diese
dsig:Referencewurde auf Grund des viertenDataObjectInfoElements im Request erstellt. Wie schon bei der Beschreibung des Requests angeführt, ist die erstelltedsig:Referencesemantisch genau gleich wie die vorhergehende.- <dsig:Reference Id="reference-1-6" URI="NichtAufloesbareReferenz1"> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> - <dsig:DigestValue>2b83+NbXDFijHzz+sH0T7fM36sA=</dsig:DigestValue> - </dsig:Reference> + <dsig:Reference Id="reference-1-6" URI="NichtAufloesbareReferenz1"> + <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> + <dsig:DigestValue>2b83+NbXDFijHzz+sH0T7fM36sA=</dsig:DigestValue> + </dsig:Reference>Diese
dsig:Referencewurde auf Grund des sechstenDataObjectInfoElements im Request erstellt. Die zu signierenden Daten wurden aus demXMLContentdes Requests entnommen, als Wert vondsig:Reference/@URIwurde der Wert vonDataObjectInfo/@Referenceübernommen.- <dsig:Reference Id="reference-1-7" URI="http://localhost:8080/referencedData/Text.txt"> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> - <dsig:DigestValue>0P878Dsmtxv5goj+6KgNmj6S/EE=</dsig:DigestValue> - </dsig:Reference> + <dsig:Reference Id="reference-1-7" URI="http://localhost:8080/referencedData/Text.txt"> + <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> + <dsig:DigestValue>0P878Dsmtxv5goj+6KgNmj6S/EE=</dsig:DigestValue> + </dsig:Reference>Diese
dsig:Referencewurde auf Grund des siebentenDataObjectInfoElements im Request erstellt. Um zu den zu signierenden Daten zu gelangen, wurde von MOA SS die URL inDataObjectInfo/@Referenceaufgelöst. Gleichermaßen wurde die URL indsig:Reference/@URIübernommen.- <dsig:Reference Id="reference-1-8" URI="NichtAufloesbareReferenz2"> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> - <dsig:DigestValue>0P878Dsmtxv5goj+6KgNmj6S/EE=</dsig:DigestValue> - </dsig:Reference> + <dsig:Reference Id="reference-1-8" URI="NichtAufloesbareReferenz2"> + <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> + <dsig:DigestValue>0P878Dsmtxv5goj+6KgNmj6S/EE=</dsig:DigestValue> + </dsig:Reference>Diese
dsig:Referencewurde auf Grund des achtenDataObjectInfoElements im Request erstellt. Um zu den zu signierenden Daten zu gelangen, wurde von MOA SS die URL in LocRefContent aufgelöst. Indsig:Reference/@URIwurde der Wert ausDataObjectInfo/@Referenceübernommen.- <dsig:Reference Id="reference-1-9" URI=""> - <dsig:Transforms> - <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> - <dsig:DigestValue>2b83+NbXDFijHzz+sH0T7fM36sA=</dsig:DigestValue> - </dsig:Reference> + <dsig:Reference Id="reference-1-9" URI=""> + <dsig:Transforms> + <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> + </dsig:Transforms> + <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> + <dsig:DigestValue>2b83+NbXDFijHzz+sH0T7fM36sA=</dsig:DigestValue> + </dsig:Reference>Diese
dsig:Referencewurde auf Grund des neuntenDataObjectInfoElements im Request erstellt. Als zu signierende Daten wurde das XML-Dokument ausgewählt, in das die XML-Signatur integriert werden solle. Vor der Berechnung des Hashwerts wurde eine Enveloped Signature Transformation zwischengeschaltet, welche die XML-Struktur der Signatur selbst aus den Hash-Eingangsdaten herausschneidet.- <dsig:Reference Type="http://www.w3.org/2000/09/xmldsig#Manifest" URI="#dsig-manifest-1-1"> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> - <dsig:DigestValue>mNsxUkFoF46XZVBivBo4aasFCTQ=</dsig:DigestValue> - </dsig:Reference> + <dsig:Reference Type="http://www.w3.org/2000/09/xmldsig#Manifest" URI="#dsig-manifest-1-1"> + <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> + <dsig:DigestValue>mNsxUkFoF46XZVBivBo4aasFCTQ=</dsig:DigestValue> + </dsig:Reference>Diese
dsig:Referenceverweist auf dasdsig:Manifestweiter unten in der XML-Struktur der Signatur. Dasdsig:Manifestwurde angelegt, weil bei zweiDataObjectInfos im Request das AttributChildOfManifestauf den Werttruegesetzt wurde.- </dsig:SignedInfo> - <dsig:SignatureValue>...</dsig:SignatureValue> - <dsig:KeyInfo>...</dsig:KeyInfo> - <dsig:Object Id="signed-data-1-2-1"> - <doc:XMLDocument xmlns:doc="urn:document"> - <doc:Paragraph>Ich bin der erste Absatz in diesem Dokument.</doc:Paragraph> - <doc:Paragraph ParaId="Para2">Und ich bin der zweite Absatz in diesem Dokument. -Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> - </doc:XMLDocument> - </dsig:Object> - <dsig:Object Id="signed-data-1-3-1">RGllc2UgRGF0ZW4gc2luZCByZWluZXIgVGV4dC4=</dsig:Object> - <dsig:Object Id="signed-data-1-4-1">RGllc2UgRGF0ZW4gc2luZCByZWluZXIgVGV4dC4=</dsig:Object> - <dsig:Object Id="signed-data-1-1-1">RGllc2UgRGF0ZW4gd2FyZW4gYmFzZTY0IGtvZGllcnQu</dsig:Object> + </dsig:SignedInfo> + <dsig:SignatureValue>...</dsig:SignatureValue> + <dsig:KeyInfo>...</dsig:KeyInfo> + <dsig:Object Id="signed-data-1-2-1"> + <doc:XMLDocument xmlns:doc="urn:document"> + <doc:Paragraph>Ich bin der erste Absatz in diesem Dokument.</doc:Paragraph> + <doc:Paragraph ParaId="Para2">Und ich bin der zweite Absatz in diesem Dokument. + Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> + </doc:XMLDocument> + </dsig:Object> + <dsig:Object Id="signed-data-1-3-1">RGllc2UgRGF0ZW4gc2luZCByZWluZXIgVGV4dC4=</dsig:Object> + <dsig:Object Id="signed-data-1-4-1">RGllc2UgRGF0ZW4gc2luZCByZWluZXIgVGV4dC4=</dsig:Object> + <dsig:Object Id="signed-data-1-1-1">RGllc2UgRGF0ZW4gd2FyZW4gYmFzZTY0IGtvZGllcnQu</dsig:Object>
SignatureValueundKeyInfowerden an dieser Stelle nicht näher betrachtet.Das erste
dsig:Objectenthält die Daten aus dem zweitenDataObjectInfo; das zweitedsig:Objectjene aus dem drittenDataObjectInfo; das drittedsig:Objectjene aus dem viertenDataObjectInfo; das viertedsig:Objectschließlich jene aus dem erstenDataObjectInfo.- <dsig:Object> - <dsig:Manifest Id="dsig-manifest-1-1"> - <dsig:Reference Id="reference-1-1" URI="#xpointer(id('signed-data-1-1-1')/node())"> - <dsig:Transforms> - <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64"/> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> - <dsig:DigestValue>a53jOsL7KbyltpByAK87FoMZphI=</dsig:DigestValue> - </dsig:Reference> - <dsig:Reference Id="reference-1-5" URI="http://localhost:8080/referencedData/Text.b64"> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> - <dsig:DigestValue>a53jOsL7KbyltpByAK87FoMZphI=</dsig:DigestValue> - </dsig:Reference> - </dsig:Manifest> - </dsig:Object> + <dsig:Object> + <dsig:Manifest Id="dsig-manifest-1-1"> + <dsig:Reference Id="reference-1-1" URI="#xpointer(id('signed-data-1-1-1')/node())"> + <dsig:Transforms> + <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#base64"/> + </dsig:Transforms> + <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> + <dsig:DigestValue>a53jOsL7KbyltpByAK87FoMZphI=</dsig:DigestValue> + </dsig:Reference> + <dsig:Reference Id="reference-1-5" URI="http://localhost:8080/referencedData/Text.b64"> + <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> + <dsig:DigestValue>a53jOsL7KbyltpByAK87FoMZphI=</dsig:DigestValue> + </dsig:Reference> + </dsig:Manifest> + </dsig:Object>Das fünfte
dsig:Objectenthält dasdsig:Manifest, das von MOA SS auf Grund des ersten bzw. fünftenDataObjectInfodes Requests erstellt wurde. Darin enthalten sind die zum ersten und füntenDataObjectInfokorrespondierendendsig:ReferenceElemente. Die Daten für die erste imdsig:Manifestenthaltenedsig:Referencewurden aus demBase64ContentElement des erstenDataObjectInfoentnommen, jene für die zweitedsig:Referenceaus demBase64ContentElement des fünftenDataObjectInfo. Der Wert desURIAttributs der zweitendsig:Referencewurde aus demDataObject/@Referencedes fünftenDataObjectInfoübernommen.2.1.2.3 Transformationen
diff --git a/spss/server/serverws/.classpath b/spss/server/serverws/.classpath index a0edd58fe..767a2a2de 100644 --- a/spss/server/serverws/.classpath +++ b/spss/server/serverws/.classpath @@ -6,7 +6,6 @@- diff --git a/spss/server/serverws/.settings/org.eclipse.wst.common.component b/spss/server/serverws/.settings/org.eclipse.wst.common.component index 82f65bee6..1b3789e29 100644 --- a/spss/server/serverws/.settings/org.eclipse.wst.common.component +++ b/spss/server/serverws/.settings/org.eclipse.wst.common.component @@ -6,12 +6,11 @@ - uses - - - - + + + + -- cgit v1.2.3