From b1c951bd4c125f52123d4a6947f459b505f8beb1 Mon Sep 17 00:00:00 2001 From: pdanner Date: Thu, 27 Mar 2008 07:36:10 +0000 Subject: Added trace logs, resolved link issues in documentation git-svn-id: https://joinup.ec.europa.eu/svn/moa-idspss/trunk@1062 d688527b-c9ab-4aba-bd8d-4036d912da1d --- .../clients/webservice/conf/http.properties | 4 +- spss/handbook/handbook/usage/usage.html | 126 ++++++++++----------- spss/server/history.txt | 11 +- .../moa/spss/server/service/AxisHandler.java | 7 +- .../.settings/org.eclipse.wst.common.component | 6 + 5 files changed, 86 insertions(+), 68 deletions(-) (limited to 'spss') diff --git a/spss/handbook/clients/webservice/conf/http.properties b/spss/handbook/clients/webservice/conf/http.properties index e61785a81..22f2d2cda 100644 --- a/spss/handbook/clients/webservice/conf/http.properties +++ b/spss/handbook/clients/webservice/conf/http.properties @@ -16,10 +16,10 @@ signServiceEndPoint = http://localhost:8080/moa-spss/services/SignatureCreation # Name des zu sendenden Signaturerstellungsrequests (entweder absolute # oder relative Pfadangabe; eine relative Pfadangabe wird relativ zum # Arbeitsverzeichnis der Java VM interpretiert) -#signRequest = resources/requests/CreateXMLSignatureRequest.Simple.xml +signRequest = resources/requests/CreateXMLSignatureRequest.Simple.xml #signRequest=resources/requests/CreateXMLSignatureRequest.Refs.xml #signRequest=resources/requests/CreateXMLSignatureRequest.Transforms.xml -signRequest=resources/requests/CreateXMLSignatureRequest.Supplements.xml +#signRequest=resources/requests/CreateXMLSignatureRequest.Supplements.xml # diff --git a/spss/handbook/handbook/usage/usage.html b/spss/handbook/handbook/usage/usage.html index e117297e7..ea7302fcb 100644 --- a/spss/handbook/handbook/usage/usage.html +++ b/spss/handbook/handbook/usage/usage.html @@ -14,9 +14,9 @@ Logo MOA -
-

MOA: Serversignatur (SS) und Signaturprüfung (SP), V 1.4

-

Anwendung

+
+

MOA: Serversignatur (SS) und Signaturprüfung (SP), V 1.4

+

Anwendung


Inhalt

    @@ -68,7 +68,7 @@
-
    +
    1. Referenzierte Software

    @@ -96,13 +96,13 @@

    Im Fall von Structure="enveloping" muss im nachfolgenden DataObject Element entweder das Attribut Reference (enthält eine URL, von der SS die Daten beziehen soll) gesetzt sein, oder aber die zu signierenden Daten werden explizit in einem der Elemente Base64Content (enthält Daten in Base64 kodierter Form) oder XMLContent (enthält Daten als beliebiges XML-Fragment) oder LocRefContent (enthält eine URL, von der SS die Daten beziehen soll; in diesem Fall also gleichwertig wie ein gesetztes Attribut Reference) spezifiziert sein. Die Angabe der zu signierenden Daten über das Attribut Reference und gleichzeitig einem der Elemente Base64Content oder XMLContent oder LocRefContent ist nicht erlaubt.

    Im Fall von Structure="detached" muss das Attribut Reference im nachfolgenden DataObject Element gesetzt sein. Es enthält jene URL, die zur Referenzierung der Daten als Wert von dsig:Reference/@URI in die XML-Signatur aufgenommen wird. Die Angabe eines der Element Base64Content oder XMLContent oder LocRefContent ist optional. Unterbleibt die Angabe, bezieht SS die Daten von der URL im Attribut Reference. 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:Object Element integriert werden (Structure="enveloping"). Die Daten werden mittels XMLContent als 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.

    Response

    CreateXMLSignatureRequest.Simple.resp.xml 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.

    @@ -124,8 +124,8 @@
    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.xml sollen insgesamt neun Datenobjekte signiert werden:

    -
    <CreateXMLSignatureRequest 
    -  xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" 
    +  
    <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_allgemein erstellt 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">
    @@ -219,7 +219,7 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
           <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. 
    +  <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>
    @@ -304,14 +304,14 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
     
    Response

    CreateXMLSignatureRequest.Refs.resp.xml 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.

    -<CreateXMLSignatureResponse 
    -  xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" 
    +<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" 
    +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"/>
    @@ -421,8 +421,8 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
     

    2.1.1.3 Transformationen

    Request

    Dieses Beispiel (CreateXMLSignatureRequest.Transforms.xml) stellt die wichtigsten Transformationen vor, die von MOA SS bei der Erstellung einer Signatur verwendet werden können. Eine Transformation bzw. eine Kette mehrerer hintereinandergeschalteter Transformationen werden auf die Referenz-Eingangsdaten (also jene Daten, die in DataObjectInfo/DataObject angegeben werden) angewendet; das Ergebnis fließt dann in die Hashwert-Berechnung ein.

    -
    <CreateXMLSignatureRequest 
    -  xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" 
    +
    <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_allgemein erstellt 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").

    @@ -439,7 +439,7 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
             </CreateTransformsInfo>
           </CreateTransformsInfoProfile>
         </DataObjectInfo>
    -
    +

    Für das erste zu signierende Datenobjekt werden die Referenz-Eingangsdaten mittels DataObject/@Reference referenziert, d. h. MOA SS löst die darin enthaltene URL auf, um zu den Daten zu gelangen. Es handelt sich dabei um einen base64 kodierten Text.

    Unterschrieben werden soll nun aber nicht dieser base64 kodierte Text, sondern der entsprechend dekodierte Text. Dies lässt sich elegant durch die Angabe einer Base64 Decoding Transformation bewerkstelligen. Dazu wird als erstes Kindelement von CreateTransformsInfo ein dsig:Transforms Element im Request angegeben. Dieses dsig:Transforms Element nimmt ein oderer mehrere dsig:Transform Elemente auf, wobei jedes dsig:Transform Element für eine Transformation steht. In unserem Fall wird nur eine einzige Transformation benötigt; die Angabe, um welche Transformation es sich handelt, wird durch das Attribut dsig:Transform/@Algorithm angegeben. Für die Base64 Decoding Transformation muss der Wert auf http://www.w3.org/2000/09/xmldsig#base64 gesetzt werden. Sie ist eine parameterlose Transformation, d. h. dsig:Transform hat keine Kindelemente.

    Der Mime-Type der zu signierenden Daten wird als text/plain angegeben, da ja tatsächlich nach der durchgeführten Transformation dekodierter Text vorliegt, über den dann der Hashwert berechnet wird.

    @@ -450,13 +450,13 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> <CreateTransformsInfo> <dsig:Transforms> <dsig:Transform Algorithm="http://www.w3.org/2002/06/xmldsig-filter2"> - <xp2:XPath - xmlns:xp2="http://www.w3.org/2002/06/xmldsig-filter2" - xmlns:doc="urn:document" + <xp2:XPath + xmlns:xp2="http://www.w3.org/2002/06/xmldsig-filter2" + xmlns:doc="urn:document" Filter="subtract">/doc:XMLDocument/doc:Paragraph[2]</xp2:XPath> </dsig:Transform> <dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116"> - <xsl:stylesheet version="1.0" + <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="urn:document"> <xsl:output encoding="UTF-8" method="xml" indent="yes"/> <xsl:template match="/doc:XMLDocument"> @@ -491,8 +491,8 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
    Response

    CreateXMLSignatureRequest.Transforms.resp.xml 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.

    -<CreateXMLSignatureResponse 
    -  xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" 
    +<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#">
    @@ -515,13 +515,13 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
             <dsig:Reference Id="reference-1-2" URI="http://localhost:8080/referencedData/XMLDocument.xml">
               <dsig:Transforms>
                 <dsig:Transform Algorithm="http://www.w3.org/2002/06/xmldsig-filter2">
    -              <xp2:XPath Filter="subtract" xmlns:doc="urn:document" 
    -                xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" 
    -                xmlns:xf2="http://www.w3.org/2002/06/xmldsig-filter2" 
    +              <xp2:XPath Filter="subtract" xmlns:doc="urn:document"
    +                xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"
    +                xmlns:xf2="http://www.w3.org/2002/06/xmldsig-filter2"
                     xmlns:xp2="http://www.w3.org/2002/06/xmldsig-filter2">/doc:XMLDocument/doc:Paragraph[2]</xp2:XPath>
                 </dsig:Transform>
                 <dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116">
    -              <xsl:stylesheet version="1.0" 
    +              <xsl:stylesheet version="1.0"
                     xmlns:doc="urn:document" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
                     <xsl:output encoding="UTF-8" indent="yes" method="xml"/>
                     <xsl:template match="/doc:XMLDocument">...</xsl:template>
    @@ -538,8 +538,8 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
     
    Request

    Dieses Beispiel (CreateXMLSignatureRequest.Supplements.xml) stellt die Verwendung von Ergänzungsobjekten vor. Ein Ergänzungsobjekt betrifft entweder ein zu signierendes Datum (Zusammenhang mit einem DataObject) oder jenes Dokument, in das eine zu erzeugende Signatur eingefügt werden soll (Zusammenhang mit CreateSignatureEnvironment). Es muss dann angegeben werden, wenn in einem zu signierenden Datum bzw. im Einfügedokument auf Daten per Referenz verwiesen wird, diese referenzierten Daten aber von MOA SS nicht aufgelöst werden können. Das Ergänzungsobjekt enthält dann genau diese Daten, die nicht von MOA SS aufgelöst werden können.

    -<CreateXMLSignatureRequest 
    -  xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" 
    +<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">
    @@ -557,7 +557,7 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
                 <dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116">
                   <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
       <xsl:include href="XMLDocument.Para.xsl"/>
    -</xsl:stylesheet>              
    +</xsl:stylesheet>
                 </dsig:Transform>
                 <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
               </dsig:Transforms>
    @@ -579,10 +579,10 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
     

    Ein Ergänzungsobjekt für zu signierende Daten wird im entsprechenden DataObjectInfo Element angegeben, und zwar als Inhalt des Elements CreateTransformsInfoProfile/Supplement. Das verpflichtend zu verwendende Attribut Content/@Reference enthält dabei die Referenz auf das Ergänzungsobjekt in exakt jener Schreibweise, wie sie in der xsl:include Direktive vorkommt, hier also XMLDocument.Para.xsl. Das Element Content beinhaltet das Ergänzungsobjekt so, wie es MOA SS verwenden soll (Elemente Base64Content oder XMLContent, vergleiche Einfaches Beispiel), bzw. enthält eine von MOA SS auflösbare Referenz auf das Ergänzungsobjekt (Element LocRefContent, vergleiche Einfaches Beispiel). Im konkreten Beispiel wird LocRefContent verwendet.

         <CreateSignatureInfo>
    -      <CreateSignatureEnvironment 
    +      <CreateSignatureEnvironment
             Reference="http://localhost:8080/referencedData/XMLDocument.withSchemaHint.xml"/>
           <CreateSignatureEnvironmentProfile>
    -        <CreateSignatureLocation 
    +        <CreateSignatureLocation
               Index="4" xmlns:doc="urn:document">/doc:XMLDocument</CreateSignatureLocation>
     

    Eingefügt werden soll die zu erzeugende Signatur in ein bestehendes Dokument, das MOA SS durch Auflösen der in CreateSignatureEnvironment/@Reference angegebenen URL erhält. Eingefügt werden soll die Signatur als fünfter Kindknoten des Wurzelelements doc:XMLDocument. Beachten Sie wiederum die Hinweise zur Zählweise für das Attribut Index bzw. zur Deklaration der im XPath-Ausdruck verwendeten Namespace-Deklarationen (hier doc).

    @@ -605,7 +605,7 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
    Request

    Dieses Beispiel (VerifyCMSSignatureRequest.Simple.xml) ist ein einfacher Request zur Prüfung einer CMS-Signatur. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass der nachfolgende Ausschnitt aus dem Request aus Gründen der Übersichtlichkeit gekürzt wurde.

    -<VerifyCMSSignatureRequest 
    +<VerifyCMSSignatureRequest
       xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#">
       <CMSSignature>MIIHsAYJKo...4sLL6kpOPJaLg==</CMSSignature>
       <TrustProfileID>Test-Signaturdienste</TrustProfileID>
    @@ -616,8 +616,8 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
     
    Response

    VerifyCMSSignatureRequest.Simple.resp.xml 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.

    -<VerifyCMSSignatureResponse 
    -  xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" 
    +<VerifyCMSSignatureResponse
    +  xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#"
       xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
       <SignerInfo>
         <dsig:X509Data>
    @@ -652,8 +652,8 @@ O=A-Trust Ges. f
     
    Request

    Dieses erweiterte Beispiel zur Prüfung einer CMS-Signatur (VerifyCMSSignatureRequest.Extended.xml) demonstriert die Prüfung mehrerer Signatoren einer CMS-Signatur, die Angabe des Prüfzeitpunkts sowie die Prüfung einer Detached Signature, d. h. einer Signatur, in der die signierten Daten nicht enthalten sind und daher extra angegeben werden müssen.

    -<VerifyCMSSignatureRequest 
    -  xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" 
    +<VerifyCMSSignatureRequest
    +  xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#"
       Signatories="1">
       <DateTime>2004-08-17T08:00:00+02:00</DateTime>
       <CMSSignature>MIIHiwYJKoZI...kfiwsvqSk48lou</CMSSignature>
    @@ -682,7 +682,7 @@ O=A-Trust Ges. f
             <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 
    +            <dsig:SignatureMethod
                   Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"/>
                 <dsig:Reference Id="reference-1-1" URI="#xpointer(id('signed-data-1-1-1')/node())">
                   <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
    @@ -713,7 +713,7 @@ O=A-Trust Ges. f
     

    VerifyXMLSignatureRequest.Simple.resp.xml 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.

     <VerifyXMLSignatureResponse
    -  xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" 
    +  xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#"
       xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
       <SignerInfo>
         <dsig:X509Data>
    @@ -771,8 +771,8 @@ O=A-Trust Ges. f
     
    Response

    VerifyXMLSignatureRequest.Enveloped.resp.xml 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.

    -<VerifyXMLSignatureResponse 
    -  xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" 
    +<VerifyXMLSignatureResponse
    +  xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#"
       xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
       <SignerInfo>
         <dsig:X509Data>...</dsig:X509Data>
    @@ -797,7 +797,7 @@ O=A-Trust Ges. f
     

    Das Attribut PartOf weist mit dem Wert SignedInfo darauf hin, dass die dsig:Reference, für welche die Hasheingangsdaten gelten, Teil von dsig:SignedInfo ist (für eine dsig:Reference aus einem dsig:SignedInfo würde der gelieferte Wert XMLDSIGManifest lauten; weiters -würde HashInputData in einem solchen Fall ein weiteres Attribut +würde HashInputData in einem solchen Fall ein weiteres Attribut ReferringSigReference aufweisen, dessen Wert die Nummer jener dsig:Reference aus dsig:SignedInfo als @@ -819,7 +819,7 @@ positive Ganzzahl repräsentiert, die auf das beinhaltende dsig:Manife

    Dieses Beispiel zur Prüfung einer XML-Signatur (VerifyXMLSignatureRequest.XMLDSigManifest.xml) demonstriert die Prüfung eines in der XML-Signatur vorhandenden Manifests nach XMLDSig. Bitte beachten Sie, dass der dargestellte Request zur bessernen Lesbarkeit eingerückt und gekürzt wurde.

     <VerifyXMLSignatureRequest
    -  xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" 
    +  xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#"
       xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
       <VerifySignatureInfo>
         <VerifySignatureEnvironment>
    @@ -827,7 +827,7 @@ positive Ganzzahl repräsentiert, die auf das beinhaltende dsig:Manife
             <dsig:Signature xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" Id="signature-1-1">
               <dsig:SignedInfo>
                 <dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
    -            <dsig:SignatureMethod 
    +            <dsig:SignatureMethod
                   Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"/>
                 <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"/>
    @@ -861,8 +861,8 @@ positive Ganzzahl repräsentiert, die auf das beinhaltende dsig:Manife
     
    Response

    VerifyXMLSignatureRequest.XMLDSigManifest.resp.xml 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.

    -<VerifyXMLSignatureResponse 
    -  xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" 
    +<VerifyXMLSignatureResponse
    +  xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#"
       xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
       <SignerInfo>
         <dsig:X509Data>...</dsig:X509Data>
    @@ -928,7 +928,7 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
     

    Man erkennt, dass das Attribut dsig:Reference/@URI das Element doc:Paragraph mit dem auf den Wert Para2 gesetzten ID-Attribut ParaId referenziert. MOA kann jedoch den Umstand, dass es sich bei doc:Paragraph/@ParaId um ein ID-Attribut handelt, nur dann erkennen, wenn es das XML-Dokument validierend parst. Der dazu nötige Verweis auf das passende XML-Schema ist zwar mit dem Attribut xsi:schemaLocation vorhanden, jedoch handelt es sich dabei mit urn:XMLDocument.xsd um eine nicht auflösbare Referenz. Deshalb wird im Request ein passendes Ergänzungsobjekt benötigt (siehe unten).

    Weiters erkennt man, dass dsig:Reference ein XSLT-Transformation enthält. Im darin kodierten Stylesheet-Parameter (dsig:Transform/xsl:stylesheet) wird ein weiterer Stylesheet inkludiert (XMLDocument.Para.xsl). Diese Referenz ist aber wiederum für MOA SP nicht auflösbar. Auch hier wird also ein passendes Ergänzungsobjekt benötigt (siehe unten).

    -    <VerifySignatureLocation xmlns:doc="urn:document" 
    +    <VerifySignatureLocation xmlns:doc="urn:document"
           xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">/doc:XMLDocument/dsig:Signature</VerifySignatureLocation>
       </VerifySignatureInfo>
     
    @@ -945,7 +945,7 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> <SupplementProfile> <Content Reference="urn:XMLDocument.xsd"> <XMLContent> - <xs:schema targetNamespace="urn:document" xmlns:xs="http://www.w3.org/2001/XMLSchema" + <xs:schema targetNamespace="urn:document" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="urn:document" elementFormDefault="qualified" attributeFormDefault="unqualified"> ... </xs:schema> @@ -962,8 +962,8 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
    Request

    Dieses Beispiel zur Prüfung einer XML-Signatur (VerifyXMLSignatureRequest.SigManifest.xml) demonstriert die Überprüfung des Zusammenhangs zwischen den Referenz-Eingangsdaten und den Hash-Eingangsdaten für die dsig:Reference-Elemente einer XML-Signatur. Mit Hilfe dieser Prüfung kann eine Anwendung feststellen, ob bei der Erstellung einer XML-Signatur jene Transformationen bzw. auch jene inkludierten Stylesheets (vgl. Implizite Transformationsparameter) einer XSLT-Transformation angewendet wurden, welche die Anwendung vorgegeben hat. Bei erfolgreicher Prüfung dieses Zusammenhangs kann die Anwendung die Referenz-Eingangsdaten einer dsig:Reference als gesichert ansehen, obwohl eigentlich die Hash-Eingangsdaten durch die Signatur gesichert sind. Dies ist jenen Fällen sinnvoll, in denen die Anwendung grundsätzlich mit XML-Daten arbeitet, diese Daten jedoch für das Signieren durch eine Person in ein für diese Person verständliches Format wie z.B. HTML umgewandelt werden sollen.

    -<VerifyXMLSignatureRequest 
    -  xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" 
    +<VerifyXMLSignatureRequest
    +  xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#"
       xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
       <VerifySignatureInfo>
         <VerifySignatureEnvironment>
    @@ -987,8 +987,8 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
                     </dsig:Transforms>
                     ...
                   </dsig:Reference>
    -              <dsig:Reference 
    -                Type="http://www.buergerkarte.at/specifications/Security-Layer/20020225#SignatureManifest" 
    +              <dsig:Reference
    +                Type="http://www.buergerkarte.at/specifications/Security-Layer/20020225#SignatureManifest"
                     URI="#manifest-1-1">
                     ...
                   </dsig:Reference>
    @@ -1063,8 +1063,8 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
     
    Response

    VerifyXMLSignatureRequest.SigManifest.resp.xml 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.

    -<VerifyXMLSignatureResponse 
    -  xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" 
    +<VerifyXMLSignatureResponse
    +  xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#"
       xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
       <SignerInfo>...</SignerInfo>
     
    @@ -1072,7 +1072,7 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
       <ReferenceInputData PartOf="SignedInfo">
         <XMLContent xml:space="preserve">
    -      <doc:Paragraph ParaId="Para2" xmlns:doc="urn:document" 
    +      <doc:Paragraph ParaId="Para2" xmlns:doc="urn:document"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">...</doc:Paragraph>
         </XMLContent>
       </ReferenceInputData>
    @@ -1085,7 +1085,7 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
       </ReferenceInputData>
       <ReferenceInputData PartOf="SignedInfo">
         <XMLContent xml:space="preserve">
    -      <etsi:SignedProperties xmlns:doc="urn:document" 
    +      <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">
             ...
           </etsi:SignedProperties>
    @@ -1126,9 +1126,9 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
     

    2.2.1 Übersicht

    Der Webservice-Client existiert in drei Varianten, wobei jede Variante in einer eigenen Java-Klasse implementiert ist:

      -
    • Der einfache Client (HTTP.java) arbeitet ohne Authentifikation. Er prüft weder die Authentizität des verwendeten MOA-Webservices, noch identifiziert er sich selbst gegenüber dem MOA-Webservice.
    • -
    • Der Client mit Server-Authentisierung (HTTPSServerAuth.java) prüft die Authentizität des verwendeten MOA-Websservices an Hand dessen SSL-Serverzertifikats, identifiziert sich selbst jedoch nicht gegenüber dem MOA-Webservice.
    • -
    • Der Client mit Client- und Server-Authentisierung (HTTPSClientAuth.java) prüft einerseits die Authentizität des verwendeten MOA-Websservices an Hand dessen SSL-Serverzertifikats; andererseits weist er sich selbst mittels eines SSL-Client-Zertifikats gegenüber dem MOA-Webservice aus.
    • +
    • Der einfache Client (HTTP.java) arbeitet ohne Authentifikation. Er prüft weder die Authentizität des verwendeten MOA-Webservices, noch identifiziert er sich selbst gegenüber dem MOA-Webservice.
    • +
    • Der Client mit Server-Authentisierung (HTTPSServerAuth.java) prüft die Authentizität des verwendeten MOA-Websservices an Hand dessen SSL-Serverzertifikats, identifiziert sich selbst jedoch nicht gegenüber dem MOA-Webservice.
    • +
    • Der Client mit Client- und Server-Authentisierung (HTTPSClientAuth.java) prüft einerseits die Authentizität des verwendeten MOA-Websservices an Hand dessen SSL-Serverzertifikats; andererseits weist er sich selbst mittels eines SSL-Client-Zertifikats gegenüber dem MOA-Webservice aus.

    Welcher der drei Varianten des Webservice-Clients zum Einsatz kommen soll, hängt von der Art ab, wie das MOA-Webservice betrieben wird, d.h. ob es Server- bzw. Client-Authentisierung unterstützt bzw. verlangt. Befinden sich sowohl MOA-Webservice als auch der Webservice-Client im gleichen, abgeschotteten Netzwerk, kann auch eine Kommunikation ohne Authenifikation in Betracht gezogen werden. Ansonsten wird der Standardfall wohl der Betrieb mit Server-Authentisierung (Verwendung von MOA SP) bzw. mit Server- und Client-Authentisierung (Verwendung von MOA SS) sein.

    Hinweis: Das Wurzelverzeichnis dieses Handbuchs stellt ein komplettes und sofort verwendbares Eclipse Projekt dar.

    @@ -1173,18 +1173,18 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>

2.2.3 Besonderheiten von HTTPSServerAuth.java

Diese Variante des Webservice-Clients verwendet JSSE, um im Schritt 3 des Kernablaufs aus Abschnitt 2.2.2 eine SSL-Verbindung mit Server-Authentifizierung zum MOA SP/SS Server aufzubauen. In dieser SSL-Verbindung sendet der Webservice-Client dann den erstellten SOAP-Request über HTTPS.

-

Die Konfiguration von JSSE (Speicher für die vertrauenswürdigen Serverzertifikate, Typ dieses Speichers, Passwort für diesen Speicher) wird mittels zusätzlicher Parameter in der in Abschnitt 2.2.2 besprochenen Java-Properties-Datei vorgenommen. Genaue Infos zu diesen Konfigurationsparametern entnehmen Sie bitte der Quellcodedokumentation von HTTPSServerAuth.java. http.properties enthält eine auf dieses Handbuch abgestimmte Konfiguration.

-

Falls Sie Probleme beim SSL-Verbindungsaufbau zwischen Webservice-Client und MOA SP/SS Webservice haben, empfiehlt sich die Aktivierung des JSSE Loggings. Das Setzen der dafür notwendigen Java System Property ist im Quellcode von HTTPSServerAuth.java bereits enthalten, jedoch auskommentiert. Suchen Sie einfach nach dem String javax.net.debug, um zur entsprechenden Stelle im Quellcode zu gelangen.

+

Die Konfiguration von JSSE (Speicher für die vertrauenswürdigen Serverzertifikate, Typ dieses Speichers, Passwort für diesen Speicher) wird mittels zusätzlicher Parameter in der in Abschnitt 2.2.2 besprochenen Java-Properties-Datei vorgenommen. Genaue Infos zu diesen Konfigurationsparametern entnehmen Sie bitte der Quellcodedokumentation von HTTPSServerAuth.java. http.properties enthält eine auf dieses Handbuch abgestimmte Konfiguration.

+

Falls Sie Probleme beim SSL-Verbindungsaufbau zwischen Webservice-Client und MOA SP/SS Webservice haben, empfiehlt sich die Aktivierung des JSSE Loggings. Das Setzen der dafür notwendigen Java System Property ist im Quellcode von HTTPSServerAuth.java bereits enthalten, jedoch auskommentiert. Suchen Sie einfach nach dem String javax.net.debug, um zur entsprechenden Stelle im Quellcode zu gelangen.

2.2.4 Besonderheiten von HTTPSClientAuth.java

Diese Variante des Webservice-Clients verwendet JSSE, um im Schritt 3 des Kernablaufs aus Abschnitt 2.2.2 eine SSL-Verbindung mit Server- und Client-Authentifizierung zum MOA SP/SS Server aufzubauen. In dieser SSL-Verbindung sendet der Webservice-Client dann den erstellten SOAP-Request über HTTPS.

-

Die gegenüber Abschnitt 2.2.3 zusätzlich notwendige Konfiguration von JSSE (Speicher für das SSL-Client-Zertifikat sowie den dazugehörigen privaten Schlüssel, Typ dieses Speichers, Passwort für diesen Speicher) wird mittels zusätzlicher Parameter in der in Abschnitt 2.2.2 besprochenen Java-Properties-Datei vorgenommen. Genaue Infos zu diesen Konfigurationsparametern entnehmen Sie bitte der Quellcodedokumentation von HTTPSClientAuth.java. http.properties enthält eine auf dieses Handbuch abgestimmte Konfiguration.

+

Die gegenüber Abschnitt 2.2.3 zusätzlich notwendige Konfiguration von JSSE (Speicher für das SSL-Client-Zertifikat sowie den dazugehörigen privaten Schlüssel, Typ dieses Speichers, Passwort für diesen Speicher) wird mittels zusätzlicher Parameter in der in Abschnitt 2.2.2 besprochenen Java-Properties-Datei vorgenommen. Genaue Infos zu diesen Konfigurationsparametern entnehmen Sie bitte der Quellcodedokumentation von HTTPSClientAuth.java. http.properties enthält eine auf dieses Handbuch abgestimmte Konfiguration.

Beachten Sie bitte auch den Hinweis zum JSSE Logging aus Abschnitt 2.2.3.

3 Verwendung der Klassenbibliothek

Neben dem Betrieb von MOA SP/SS als Webservice ist als Alternative auch die Verwendung von MOA SP/SS als Klassenbibliothek möglich, also die direkte Einbindung in ein Java-Programm unter Verwendung des Application Programmers Interface (API) von MOA SP/SS.

3.1 Vorbereitung

-

Um das API von MOA SP/SS verwenden zu können, müssen einerseits die MOA-Bibliotheken selbst, andererseits eine Reihe von unterstützenden Bibliotheken in den Klassenpfad aufgenommen werden. Eine Übersicht dazu finden Sie im Installationshandbuch im Abschnitt 3. +

Um das API von MOA SP/SS verwenden zu können, müssen einerseits die MOA-Bibliotheken selbst, andererseits eine Reihe von unterstützenden Bibliotheken in den Klassenpfad aufgenommen werden. Eine Übersicht dazu finden Sie im Installationshandbuch im Abschnitt 3.

3.2 Allgemeines

-

Der strukturelle Aufbau der API entspricht weitgehend der Struktur eines MOA-XML-Requests. Es werden daher in diesem Abschnitt nur zwei grundlegende Beispiele gebracht; für komplexere Aufgaben können die XML-Beispiele aus Abschnitt 2.1 als Vorlage verwendet und einfach in die "API-Welt" übertragen werden. +

Der strukturelle Aufbau der API entspricht weitgehend der Struktur eines MOA-XML-Requests. Es werden daher in diesem Abschnitt nur zwei grundlegende Beispiele gebracht; für komplexere Aufgaben können die XML-Beispiele aus Abschnitt 2.1 als Vorlage verwendet und einfach in die "API-Welt" übertragen werden.

3.3 Beispiele

Dieses Handbuch enthält zwei Beispiele für die Verwendung der API von MOA SP/SS:

    @@ -1195,7 +1195,7 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> Die Auswahl der zu prüfenden Signatur erfolgt ebenfalls per Kommandozeilenparameter. Detaillierte Informationen dazu finden Sie ebenfalls in der Quellcodedokumentation des Beispiels.

3.4 API-Dokumentation

-

Für die vollständige Dokumentation des API von MOA SP/SS sei auf die Java Doc der API verwiesen. +

Für die vollständige Dokumentation des API von MOA SP/SS sei auf die Java Doc der API verwiesen.

A Referenzierte Software

Auf folgende Software-Pakete wird in diesem Handbuch verwiesen:

diff --git a/spss/server/history.txt b/spss/server/history.txt index de661156b..18647a12b 100644 --- a/spss/server/history.txt +++ b/spss/server/history.txt @@ -1,3 +1,12 @@ +############## +1.4.3 +############## + +- Das Herauslösen des Verarbeitungsrequests aus dem SOAP-Request endete in einer + ClassCastException, wenn zwischen dem Body-Element des SOAP-Envelopes und dem + Request white spaces vorhanden sind bzw. dieses Element nicht unmittelbar nach + dem Body-Element steht. Das Herauslösen ist nun gegen white spaces robust. + ############## 1.4.2 ############## @@ -31,7 +40,7 @@ 1.4.0 ############## -- Unterstützung von SOAP with Attachments. LocRefContent kann nun auch über SOAP +- Unterstützung von SOAP with Attachments. LocRefContent kann nun auch über SOAP attachments übergeben werden. Dadurch können alle notwendigen Teile für einen Request platzsparend in einem Schritt übermittelt werden. diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/service/AxisHandler.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/service/AxisHandler.java index 3a7f13c48..b079667b0 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/service/AxisHandler.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/service/AxisHandler.java @@ -204,7 +204,7 @@ public class AxisHandler extends BasicHandler { } else { info("handler.03", null); } - if (Logger.isDebugEnabled()) { + if (Logger.isTraceEnabled()) { // OutputFormat format = new OutputFormat((Document) xmlRequest.getOwnerDocument()); // format.setLineSeparator("\n"); // format.setIndenting(false); @@ -218,7 +218,7 @@ public class AxisHandler extends BasicHandler { String msg = soapMessage.getSOAPPartAsString(); - Logger.debug(new LogMsg(msg)); + Logger.trace(new LogMsg(msg)); } } catch (MOASystemException e) { MOASystemException se = new MOASystemException("2900", null, e); @@ -270,6 +270,9 @@ public class AxisHandler extends BasicHandler { serializedBytes.close(); xmlResponseString = serializedBytes.toString("UTF-8"); */ + if (Logger.isTraceEnabled()) { + Logger.trace(new LogMsg(xmlResponseString)); + } soapResponseString = SOAP_PART_PRE + xmlResponseString + SOAP_PART_POST; //override axis response-message msgContext.setResponseMessage(new Message(soapResponseString)); diff --git a/spss/server/serverws/.settings/org.eclipse.wst.common.component b/spss/server/serverws/.settings/org.eclipse.wst.common.component index 06aa22f01..7ac34c6c2 100644 --- a/spss/server/serverws/.settings/org.eclipse.wst.common.component +++ b/spss/server/serverws/.settings/org.eclipse.wst.common.component @@ -2,6 +2,12 @@ + + uses + + + uses + -- cgit v1.2.3