diff options
Diffstat (limited to 'spss.handbook/handbook/usage/usage.html')
-rw-r--r-- | spss.handbook/handbook/usage/usage.html | 48 |
1 files changed, 38 insertions, 10 deletions
diff --git a/spss.handbook/handbook/usage/usage.html b/spss.handbook/handbook/usage/usage.html index d18bf1e7c..01f9c09fd 100644 --- a/spss.handbook/handbook/usage/usage.html +++ b/spss.handbook/handbook/usage/usage.html @@ -103,7 +103,7 @@ </FinalDataMetaInfo> </CreateTransformsInfo> </CreateTransformsInfoProfile></pre> - 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. </p> + 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. <p></p> <h5>Response</h5> <p><code><a href="../../clients/webservice/resources/requests/CreateXMLSignatureRequest.Simple.resp.xml" target="_blank">CreateXMLSignatureRequest.Simple.resp.xml</a></code> ist 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.</p> <p> @@ -118,7 +118,7 @@ ... <dsig:Object Id="signed-data-1-1-1">Diese Daten werden signiert.</dsig:Object> </dsig:Signature><br> </SignatureEnvironment><br></CreateXMLSignatureResponse></pre> - </p> + <p></p> <p><code>CreateXMLSignatureResponse</code> enthält je erzeugter Signatur ein Element <code>SignatureEnvironment</code> (in diesem Fall genau ein Element). <code>SignatureEnvironment</code> enthält die von SS erzeugte XML-Signatur, die im obigen Request spezifiziert wurde. Man erkennt, dass die XML-Signatur genau ein Daten-Objekt unterzeichnet (ein <code>dsig:Reference</code> Element ist enthalten). Das unterzeichnete Datenobjekt ist in der Signaturstruktur selbst enthalten (<code>enveloping</code>), und zwar in einem <code>dsig:Object</code> Element. </p> <h4><a name="webservice_xmlrequests_erstellungxml_daten" id="webservice_xmlrequests_erstellungxml_daten"></a>2.1.1.2 Angabe der zu signierenden Daten </h4> <h5>Request</h5> @@ -780,11 +780,30 @@ O=A-Trust Ges. für Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</dsig </pre> <p>Die Response enthält zunächst in <code>SignerInfo/dsig:X509Data</code> Informationen über den Signator, die aus dem in der XML-Signatur enthaltenen Signatorzertifikat entnommen sind (siehe <a href="#webservice_xmlrequests_pruefungxml_einfach">Einfaches Beispiel</a>).</p> <pre> - <HashInputData> + <HashInputData PartOf="SignedInfo"> <Base64Content>PGRvYzp...hNTERvY3VtZW50Pg==</Base64Content> </HashInputData> </pre> -<p>Wurde im Request - so wie in diesem Beispiel - das Element <code>ReturnHashInputData</code> angegeben, enthält die Response nach <code>SignerInfo</code> für jede <code>dsig:Reference</code> in <code>dsig:SignedInfo</code> der XML-Signatur ein Element <code>HashInputData</code>, wobei die Reihenfolge der <code>HashInputData</code>-Elemente der Reihenfolge der <code>dsig:Reference</code> Element in <code>dsig:SignedInfo</code> der XML-Signatur entspricht. Der Inhalt wird dabei stets mittels <code>Base64Content</code> in base64-kodierter Form geliefert.</p> +<p>Wurde im Request - so wie in diesem Beispiel - das Element <code>ReturnHashInputData</code> angegeben, enthält + die Response nach <code>SignerInfo</code> für jede <code>dsig:Reference</code> in <code>dsig:SignedInfo</code> der + XML-Signatur (bzw. auch für jede <code>dsig:Reference</code> aus einem <code>dsig:Manifest</code>, auf + das mittels des Attributs <code>Type="http://www.w3.org/2000/09/xmldsig#Manifest"</code> in einer <code>dsig:Reference</code> aus <code>dsig:SignedInfo</code> verwiesen + wird; solche Manifeste kommen aber in diesem Beispiel nicht vor) ein Element <code>HashInputData</code>.</p> +<p>Die Reihenfolge der <code>HashInputData</code>-Elemente + entspricht der Reihenfolge der <code>dsig:Reference</code>-Elemente in <code>dsig:SignedInfo</code> der + XML-Signatur (enthält die XML-Signatur auch <code>dsig:Manifest</code>-Elemente, auf die jeweils in einer <code>dsig:Reference</code> aus <code>dsig:SignedInfo</code> verwiesen wird, werden zuerst <code>HashInputData</code>-Elemente für alle <code>dsig:Reference</code>-Elemente + aus <code>dsig:SignedInfo</code> und anschließend <code>HashInputData</code>-Elemente für alle <code>dsig:Reference</code>-Elemente + aus den einzelnen <code>dsig:Manifest</code>-Elementen geliefert). </p> +<p>Das Attribut PartOf weist mit dem Wert SignedInfo darauf hin, dass die <code>dsig:Reference</code>, +für welche die Hasheingangsdaten gelten, Teil von <code>dsig:SignedInfo</code> ist (für eine <code>dsig:Reference</code> aus +einem <code>dsig:SignedInfo</code> würde der gelieferte Wert <code>XMLDSIGManifest</code> lauten; weiters +würde<code> HashInputData</code> in einem solchen Fall ein weiteres Attribut + + +<code>ReferringSigReference</code> aufweisen, dessen Wert die Nummer jener <code>dsig:Reference</code> aus <code>dsig:SignedInfo </code>als +positive Ganzzahl repräsentiert, die auf das beinhaltende <code>dsig:Manifest</code> verweist.). </p> +<p>Der Inhalt wird dabei stets mittels <code>Base64Content</code> in + base64-kodierter Form geliefert.</p> <pre> <SignatureCheck> <Code>0</Code> @@ -1032,7 +1051,7 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> <ul> <li>Überprüfung, ob jede <code>dsig:Reference</code> in <code>dsig:SignedInfo</code> der Signatur eine vorgegebene Transformationskette inkludiert;</li> <li>Überprüfung, ob die in der vorgegebenen Transformationskette ggf. enthaltenen inkludierten Stylesheets (implizite Transformationsparameter) durch ein Signaturmanifest mitsigniert sind.</li> - </ul> +</ul> <p>Damit MOA SP die erste Teilprüfung durchführen kann, muss in <code>SignatureManifestCheckParams</code> je <code>dsig:Reference</code> Element in <code>dsig:SignedInfo</code> der XML-Signatur ein Element <code>ReferenceInfo</code> angeben. Ausgenommen sind <code>dsig:Reference</code>-Elemente, die auf ein Signaturmanifest (Attribut <code>Type</code> ist gesetzt und hat den Wert <code>http://www.buergerkarte.at/specifications/Security-Layer/20020225#SignatureManifest</code>), auf ein XMLDSIG-Manifest (Attribut <code>Type</code> ist gesetzt und hat den Wert <code>http://www.w3.org/2000/09/xmldsig#Manifest</code>) oder auf Signatureigenschaften (Attribut <code>Type</code> ist gesetzt und hat den Wert <code>http://uri.etsi.org/01903/v1.1.1#SignedProperties</code>) verweisen. </p> <p>Das Element <code>ReferenceInfo</code> enthält eine oder mehrere erlaubte Transformationsketten, die jeweils durch ein Element <code>VerifyTransformsInfoProfile/dsig:Transforms</code> repräsentiert werden. Im konkreten Beispiel werden für die einzige zu prüfende <code>dsig:Reference</code> zwei erlaubte Transformationsketten angegeben. Die Transformationen in der <code>dsig:Reference</code> müssen einer dieser beiden Ketten entsprechen; im konkreten Beispiel entsprechen sie der ersten. </p> <p>Nachdem die erste erlaubte Transformationskette eine XSLT-Transformation mit einem inkludierten Stylesheet enthält, muss MOA SP auch überprüfen, ob dieser inkludierte Stylesheet korrekt durch ein Signaturmanifest mitunterschrieben wurde. Nachdem wichtig ist, dass nicht irgendein beliebiger Stylesheet verwendet und mitunterschrieben wurde, sondern genau jener, den die Anwendung bei der Signaturerstellung vorgegeben hat, muss die Anwendung MOA SP mitteilen, welcher Stylesheet das sein muss. Die Anwendung verwendet dazu das Element <code>VerifyTransformsInfoProfile/TransformParameter</code>. Das Attribut <code>TransformParameter/@URI</code> enthält die Referenz auf den Stylesheet genau so, wie er im Stylesheet-Parameter der zu prüfenden Signatur verwendet wird (<code>dsig:Transform/xsl:stylesheet/xsl:inlcude/@href</code>). Für den Inhalt dieses Elements hat die Anwendung drei Möglichkeiten: </p> @@ -1040,7 +1059,7 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> <li>Die Anwendung lässt den Inhalt leer. Dies wird sie dann machen, wenn sie darauf vertrauen kann, dass die Auflösung der in <code>TransformParameter/@URI</code> angegebenen Referenz bei der Signaturprüfung zum gleichen Resultat führt wie seinerzeit beim Erstellen der Signatur (z.B. weil die Referenz auf einen Webserver unter Kontrolle der Anwendung zeigt);</li> <li>Die Anwendung gibt im Element <code>TransformParameter/Base64Content</code> explizit den inkludierten Stylesheet an. MOA SP verwendet dann diesen Stylesheet, um den Hashwert der <code>dsig:Reference</code> im Signaturmanifest zu kontrollieren;</li> <li>Die Anwendung gibt im Element <code>TransformParameter/Hash </code>den Hashwert des inkludierten Stylesheets an. MOA SP löst dann die Referenz in <code>dsig:Transform/xsl:stylesheet/xsl:inlcude/@href</code> auf und stellt sicher, dass der über das Auflösungsergebnis gebildete Hashwert jenem in <code>TransformParameter/Hash </code>entspricht. Diese Möglichkeit wird die Anwendung dann verwenden, wenn es sich um einen sehr umfangreichen Stylesheet handelt, der nicht im Request mitübertragen werden soll.</li> - </ul> +</ul> <h5>Response</h5> <p><code><a href="../../clients/webservice/resources/requests/VerifyXMLSignatureRequest.SigManifest.resp.xml" target="_blank">VerifyXMLSignatureRequest.SigManifest.resp.xml</a></code> ist eine typische Response des SP 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. </p> <pre> @@ -1051,20 +1070,20 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> </pre> <p>Die Response enthält zunächst in <code>SignerInfo/dsig:X509Data</code> Informationen über den Signator, die aus dem in der XML-Signatur enthaltenen Signatorzertifikat entnommen sind (siehe <a href="#webservice_xmlrequests_pruefungxml_einfach">Einfaches Beispiel</a>). </p> <pre> - <ReferenceInputData> + <ReferenceInputData PartOf="SignedInfo"> <XMLContent xml:space="preserve"> <doc:Paragraph ParaId="Para2" xmlns:doc="urn:document" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">...</doc:Paragraph> </XMLContent> </ReferenceInputData> - <ReferenceInputData> + <ReferenceInputData PartOf="SignedInfo"> <XMLContent xml:space="preserve"> <dsig:Manifest Id="manifest-1-1" xmlns:doc="urn:document" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> ... </dsig:Manifest> </XMLContent> </ReferenceInputData> - <ReferenceInputData> + <ReferenceInputData PartOf="SignedInfo"> <XMLContent xml:space="preserve"> <etsi:SignedProperties xmlns:doc="urn:document" xmlns:etsi="http://uri.etsi.org/01903/v1.1.1#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> @@ -1073,7 +1092,16 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> </XMLContent> </ReferenceInputData> </pre> -<p>Nachdem im Request spezifiziert wurde, dass in der Response die Referenzeingangsdaten für alle <code>dsig:Reference</code>-Elemente von <code>dsig:SignedInfo</code> der geprüften XML-Signatur übermittelt werden sollen, enthält die Response nach <code>SignerInfo</code> drei <code>ReferenceInputData</code>-Elemente. Das erste <code>ReferenceInputData</code>-Element enthält das zuvor besprochene <code>doc:Paragraph</code> Element, das zweite das Signaturmanifest, das dritte die Signatureigenschaften.</p> +<p>Nachdem im Request spezifiziert wurde, dass in der Response die Referenzeingangsdaten für alle <code>dsig:Reference</code>-Elemente + von <code>dsig:SignedInfo</code> (bzw. auch für jede <code>dsig:Reference</code> aus einem <code>dsig:Manifest</code>, + auf das mittels des Attributs <code>Type="http://www.w3.org/2000/09/xmldsig#Manifest"</code> in einer <code>dsig:Reference</code> aus <code>dsig:SignedInfo</code> verwiesen + wird; solche Manifeste kommen aber in diesem Beispiel nicht vor) der geprüften + XML-Signatur übermittelt + werden sollen, enthält + die Response nach <code>SignerInfo</code> drei <code>ReferenceInputData</code>-Elemente. Das erste <code>ReferenceInputData</code>-Element + enthält das zuvor besprochene <code>doc:Paragraph</code> Element, das zweite das Signaturmanifest, das + dritte die Signatureigenschaften. Das Attribut <code>PartOf</code> jedes Elements weist mit dem Wert <code>SignedInfo</code> darauf hin, + dass die <code>dsig:Reference</code>, für welche die Referenzeingangsdaten gelten, Teil von <code>dsig:SignedInfo</code> ist. </p> <pre> <SignatureCheck> <Code>0</Code> |