diff options
8 files changed, 107 insertions, 73 deletions
diff --git a/common/.settings/org.eclipse.jdt.core.prefs b/common/.settings/org.eclipse.jdt.core.prefs index 88a20b6aa..af8eeb2ca 100644 --- a/common/.settings/org.eclipse.jdt.core.prefs +++ b/common/.settings/org.eclipse.jdt.core.prefs @@ -1,7 +1,7 @@ -#Fri Nov 16 14:43:51 CET 2007
+#Wed Jan 16 15:02:15 CET 2008
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.4
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.4
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
@@ -9,4 +9,4 @@ org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.source=1.3
+org.eclipse.jdt.core.compiler.source=1.4
diff --git a/id/server/auth/.classpath b/id/server/auth/.classpath index 8cd9e4eb8..d6e7fdeb6 100644 --- a/id/server/auth/.classpath +++ b/id/server/auth/.classpath @@ -1,8 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v5.0"/>
+ <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER/modules"/>
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
- <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/AuthenticationServer.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/AuthenticationServer.java index 5cd03cb18..c49cc41c6 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/AuthenticationServer.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/AuthenticationServer.java @@ -19,6 +19,7 @@ import java.util.Vector; import javax.xml.transform.TransformerException; +import org.apache.axis.AxisFault; import org.w3c.dom.Element; import at.gv.egovernment.moa.id.AuthenticationException; @@ -72,7 +73,9 @@ import at.gv.egovernment.moa.id.util.HTTPUtils; import at.gv.egovernment.moa.id.util.MOAIDMessageProvider; import at.gv.egovernment.moa.id.util.Random; import at.gv.egovernment.moa.id.util.SSLUtils; +import at.gv.egovernment.moa.logging.LogMsg; import at.gv.egovernment.moa.logging.Logger; +import at.gv.egovernment.moa.spss.MOASystemException; import at.gv.egovernment.moa.util.Base64Utils; import at.gv.egovernment.moa.util.BoolUtils; import at.gv.egovernment.moa.util.Constants; @@ -863,6 +866,20 @@ public class AuthenticationServer implements MOAIDAuthConstants { // parses the <VerifyXMLSignatureResponse> VerifyXMLSignatureResponse vsresp = new VerifyXMLSignatureResponseParser(domVsresp).parseData(); + + if (Logger.isTraceEnabled()) { + if (domVsresp!=null) { + try { + String xmlVerifyXMLSignatureResponse = DOMUtils.serializeNode(domVsresp, true); + Logger.trace(new LogMsg(xmlCreateXMLSignatureReadResponse)); + Logger.trace(new LogMsg(xmlVerifyXMLSignatureResponse)); + } catch (Throwable t) { + t.printStackTrace(); + Logger.info(new LogMsg(t.getStackTrace())); + } + } + } + // validates the <VerifyXMLSignatureResponse> VerifyXMLSignatureResponseValidator.getInstance().validate( vsresp, 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 @@ <td align="center" class="logoTitle" width="123"><img src="../common/LogoMoa4c.jpg" alt="Logo MOA" width="123" height="138" align="right"></td> </tr> </table> - <hr/> - <p class="title"><a href="../index.html">MOA: Serversignatur (SS) und Signaturprüfung (SP), V 1.4</a></p> - <p class="subtitle">Anwendung</p> + <hr/> + <p class="title"><a href="../index.html">MOA: Serversignatur (SS) und Signaturprüfung (SP), V 1.4</a></p> + <p class="subtitle">Anwendung</p> <hr/> <h1>Inhalt</h1> <ol> @@ -68,7 +68,7 @@ </ol> </li> </ol> - <ol type="A"> + <ol type="A"> <li><a href="#referenzierte_software">Referenzierte Software</a></li> </ol> <hr/> @@ -96,13 +96,13 @@ <p> Im Fall von <code>Structure="enveloping"</code> muss im nachfolgenden <code>DataObject</code> Element entweder das Attribut <code>Reference</code> (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 <code>Base64Content</code> (enthält Daten in Base64 kodierter Form) oder <code>XMLContent</code> (enthält Daten als beliebiges XML-Fragment) oder <code>LocRefContent</code> (enthält eine URL, von der SS die Daten beziehen soll; in diesem Fall also gleichwertig wie ein gesetztes Attribut <code>Reference</code>) spezifiziert sein. Die Angabe der zu signierenden Daten über das Attribut <code>Reference</code> und gleichzeitig einem der Elemente <code>Base64Content</code> oder <code>XMLContent</code> oder <code>LocRefContent</code> ist nicht erlaubt.</p> <p>Im Fall von <code>Structure="detached"</code> muss das Attribut <code>Reference</code> im nachfolgenden <code>DataObject</code> Element gesetzt sein. Es enthält jene URL, die zur Referenzierung der Daten als Wert von <code>dsig:Reference/@URI</code> in die XML-Signatur aufgenommen wird. Die Angabe eines der Element <code>Base64Content</code> oder <code>XMLContent</code> oder <code>LocRefContent</code> ist optional. Unterbleibt die Angabe, bezieht SS die Daten von der URL im Attribut <code>Reference</code>. Wird eines der Elemente verwendet, bezieht SS die Daten durch Analyse des angegebenen Elements (siehe obiger Absatz). </p> <p>Im konkreten Beispiel sollen die Daten in ein <code>dsig:Object</code> Element integriert werden (<code>Structure="enveloping"</code>). Die Daten werden mittels <code>XMLContent</code> als XML-Fragment (ein einfacher Textknoten) angegeben.</p> - <p> + <p> <pre> <CreateTransformsInfoProfile><br> <CreateTransformsInfo> <FinalDataMetaInfo> <MimeType>text/plain<MimeType> </FinalDataMetaInfo> </CreateTransformsInfo> - </CreateTransformsInfoProfile></pre> + </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></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> @@ -124,8 +124,8 @@ <h5>Request</h5> <p>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).</p> <p>Mit <a href="../../clients/webservice/resources/requests/CreateXMLSignatureRequest.Refs.xml" target="_blank"><code>CreateXMLSignatureRequest.Refs.xml</code></a> sollen insgesamt neun Datenobjekte signiert werden:</p> - <pre><CreateXMLSignatureRequest - xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" + <pre><CreateXMLSignatureRequest + xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><br> <KeyIdentifier>KG_allgemein</KeyIdentifier><br> <SingleSignatureInfo SecurityLayerConformity="false"></pre> <p>Die Signatur soll mit dem Schlüssel <code>KG_allgemein</code> erstellt werden; jene Elemente, die speziell für eine Security-Layer V1.1 konforme Signatur notwendig sind (vergleiche <a href="#webservice_xmlrequests_erstellungxml_simple" class="term">Einfaches Beispiel</a>), brauchen nicht erstellt zu werden (<code>SecurityLayerConformity="false"</code>).</p> <pre> <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> <h5>Response</h5> <p><code><a href="../../clients/webservice/resources/requests/CreateXMLSignatureRequest.Refs.resp.xml" target="_blank">CreateXMLSignatureRequest.Refs.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> <pre> -<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> <h4><a name="webservice_xmlrequests_erstellungxml_transformationen" id="webservice_xmlrequests_erstellungxml_transformationen"></a>2.1.1.3 Transformationen</h4> <h5>Request</h5> <p>Dieses Beispiel (<a href="../../clients/webservice/resources/requests/CreateXMLSignatureRequest.Transforms.xml" target="_blank"><code>CreateXMLSignatureRequest.Transforms.xml</code></a>) 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. </p> -<pre><CreateXMLSignatureRequest - xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" +<pre><CreateXMLSignatureRequest + xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><br> <KeyIdentifier>KG_allgemein</KeyIdentifier><br> <SingleSignatureInfo SecurityLayerConformity="false"></pre> <p>Die Signatur soll mit dem Schlüssel <code>KG_allgemein</code> erstellt werden; jene Elemente, die speziell für eine Security-Layer V1.1 konforme Signatur notwendig sind (vergleiche <a href="#webservice_xmlrequests_erstellungxml_simple" class="term">Einfaches Beispiel</a>), brauchen nicht erstellt zu werden (<code>SecurityLayerConformity="false"</code>).</p> <pre> @@ -439,7 +439,7 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> </CreateTransformsInfo> </CreateTransformsInfoProfile> </DataObjectInfo> -</pre> +</pre> <p>Für das erste zu signierende Datenobjekt werden die Referenz-Eingangsdaten mittels <code>DataObject/@Reference</code> referenziert, d. h. MOA SS löst die darin enthaltene URL auf, um zu den Daten zu gelangen. Es handelt sich dabei um einen <a href="../../clients/common/referencedData/Text.b64" target="_blank">base64 kodierten Text</a>.</p> <p>Unterschrieben werden soll nun aber nicht dieser base64 kodierte Text, sondern der entsprechend dekodierte Text. Dies lässt sich elegant durch die Angabe einer <span class="term"><a href="http://www.w3.org/TR/xmldsig-core/#sec-Base-64" target="_blank">Base64 Decoding</a></span><a href="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/#sec-Base-64" target="_blank"> Transformation</a> bewerkstelligen. Dazu wird als erstes Kindelement von <code>CreateTransformsInfo</code> ein <code>dsig:Transforms</code> Element im Request angegeben. Dieses <code>dsig:Transforms</code> Element nimmt ein oderer mehrere <code>dsig:Transform</code> Elemente auf, wobei jedes <code>dsig:Transform</code> 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 <code>dsig:Transform/@Algorithm</code> angegeben. Für die <span class="term">Base64 Decoding</span> Transformation muss der Wert auf <code>http://www.w3.org/2000/09/xmldsig#base64</code> gesetzt werden. Sie ist eine parameterlose Transformation, d. h. <code>dsig:Transform</code> hat keine Kindelemente.</p> <p>Der Mime-Type der zu signierenden Daten wird als <code>text/plain</code> angegeben, da ja tatsächlich nach der durchgeführten Transformation dekodierter Text vorliegt, über den dann der Hashwert berechnet wird. </p> @@ -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> <h5>Response</h5> <p><code><a href="../../clients/webservice/resources/requests/CreateXMLSignatureRequest.Transforms.resp.xml" target="_blank">CreateXMLSignatureRequest.Transforms.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> <pre> -<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> <h5>Request</h5> <p>Dieses Beispiel (<a href="../../clients/webservice/resources/requests/CreateXMLSignatureRequest.Supplements.xml" target="_blank"><code>CreateXMLSignatureRequest.Supplements.xml</code></a>) stellt die Verwendung von Ergänzungsobjekten vor. Ein Ergänzungsobjekt betrifft entweder ein zu signierendes Datum (Zusammenhang mit einem <code>DataObject</code>) oder jenes Dokument, in das eine zu erzeugende Signatur eingefügt werden soll (Zusammenhang mit <code>CreateSignatureEnvironment</code>). 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.</p> <pre> -<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> <p>Ein Ergänzungsobjekt für zu signierende Daten wird im entsprechenden <code>DataObjectInfo</code> Element angegeben, und zwar als Inhalt des Elements <code>CreateTransformsInfoProfile/Supplement</code>. Das verpflichtend zu verwendende Attribut <code>Content/@Reference</code> enthält dabei die Referenz auf das Ergänzungsobjekt in exakt jener Schreibweise, wie sie in der <code>xsl:include</code> Direktive vorkommt, hier also <code>XMLDocument.Para.xsl</code>. Das Element <code>Content</code> beinhaltet das Ergänzungsobjekt so, wie es MOA SS verwenden soll (Elemente <code>Base64Content</code> oder <code>XMLContent</code>, vergleiche <a href="#webservice_xmlrequests_erstellungxml_simple"><span class="term">Einfaches Beispiel</span></a>), bzw. enthält eine von MOA SS auflösbare Referenz auf das Ergänzungsobjekt (Element <code>LocRefContent</code>, vergleiche <a href="#webservice_xmlrequests_erstellungxml_simple"><span class="term">Einfaches Beispiel</span></a>). Im konkreten Beispiel wird <code>LocRefContent</code> verwendet. </p> <pre> <CreateSignatureInfo> - <CreateSignatureEnvironment + <CreateSignatureEnvironment Reference="http://localhost:8080/referencedData/XMLDocument.withSchemaHint.xml"/> <CreateSignatureEnvironmentProfile> - <CreateSignatureLocation + <CreateSignatureLocation Index="4" xmlns:doc="urn:document">/doc:XMLDocument</CreateSignatureLocation> </pre> <p>Eingefügt werden soll die zu erzeugende Signatur in ein <a href="../../clients/common/referencedData/XMLDocument.withSchemaHint.xml" target="_blank">bestehendes Dokument</a>, das MOA SS durch Auflösen der in <code>CreateSignatureEnvironment/@Reference</code> angegebenen URL erhält. Eingefügt werden soll die Signatur als fünfter Kindknoten des Wurzelelements <code>doc:XMLDocument</code>. Beachten Sie wiederum die <a href="#webservice_xmlrequests_erstellungxml_daten_hinweisCreateSignatureLocation">Hinweise</a> zur Zählweise für das Attribut <code>Index</code> bzw. zur Deklaration der im XPath-Ausdruck verwendeten Namespace-Deklarationen (hier <code>doc</code>). </p> @@ -605,7 +605,7 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> <h5>Request</h5> <p>Dieses Beispiel (<a href="../../clients/webservice/resources/requests/VerifyCMSSignatureRequest.Simple.xml" target="_blank"><code>VerifyCMSSignatureRequest.Simple.xml</code></a>) 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.</p> <pre> -<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> <h5>Response</h5> <p><code><a href="../../clients/webservice/resources/requests/VerifyCMSSignatureRequest.Simple.resp.xml" target="_blank">VerifyCMSSignatureRequest.Simple.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> -<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ür Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</dsig <h5>Request</h5> <p>Dieses erweiterte Beispiel zur Prüfung einer CMS-Signatur (<a href="../../clients/webservice/resources/requests/VerifyCMSSignatureRequest.Extended.xml" target="_blank"><code>VerifyCMSSignatureRequest.Extended.xml</code></a>) demonstriert die Prüfung mehrerer Signatoren einer CMS-Signatur, die Angabe des Prüfzeitpunkts sowie die Prüfung einer <span class="term">Detached Signature</span>, d. h. einer Signatur, in der die signierten Daten nicht enthalten sind und daher extra angegeben werden müssen. </p> <pre> -<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ür Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</dsig <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ür Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</dsig <p><code><a href="../../clients/webservice/resources/requests/VerifyXMLSignatureRequest.Simple.resp.xml" target="_blank">VerifyXMLSignatureRequest.Simple.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> <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ür Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</dsig <h5>Response</h5> <p><code><a href="../../clients/webservice/resources/requests/VerifyXMLSignatureRequest.Enveloped.resp.xml" target="_blank">VerifyXMLSignatureRequest.Enveloped.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> -<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ür Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</dsig <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 +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 @@ -819,7 +819,7 @@ positive Ganzzahl repräsentiert, die auf das beinhaltende <code>dsig:Manife <p>Dieses Beispiel zur Prüfung einer XML-Signatur (<a href="../../clients/webservice/resources/requests/VerifyXMLSignatureRequest.XMLDSigManifest.xml" target="_blank"><code>VerifyXMLSignatureRequest.XMLDSigManifest.xml</code></a>) demonstriert die Prüfung eines in der XML-Signatur vorhandenden <a href="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/#sec-Manifest" target="_blank">Manifests nach XMLDSig</a>. Bitte beachten Sie, dass der dargestellte Request zur bessernen Lesbarkeit eingerückt und gekürzt wurde.</p> <pre> <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 <code>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 <code>dsig:Manife <h5>Response</h5> <p><code><a href="../../clients/webservice/resources/requests/VerifyXMLSignatureRequest.XMLDSigManifest.resp.xml" target="_blank">VerifyXMLSignatureRequest.XMLDSigManifest.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> -<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> <p>Man erkennt, dass das Attribut <code>dsig:Reference/@URI</code> das Element<code> doc:Paragraph</code> mit dem auf den Wert <code>Para2</code> gesetzten ID-Attribut <code>ParaId</code> referenziert. MOA kann jedoch den Umstand, dass es sich bei <code>doc:Paragraph/@ParaId</code> 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 <code>xsi:schemaLocation</code> vorhanden, jedoch handelt es sich dabei mit <code>urn:XMLDocument.xsd</code> um eine nicht auflösbare Referenz. Deshalb wird im Request ein passendes Ergänzungsobjekt benötigt (siehe unten).</p> <p>Weiters erkennt man, dass <code>dsig:Reference</code> ein XSLT-Transformation enthält. Im darin kodierten Stylesheet-Parameter (<code>dsig:Transform/xsl:stylesheet</code>) wird ein weiterer Stylesheet inkludiert (<code>XMLDocument.Para.xsl</code>). Diese Referenz ist aber wiederum für MOA SP nicht auflösbar. Auch hier wird also ein passendes Ergänzungsobjekt benötigt (siehe unten). </p> <pre> - <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> </pre> @@ -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> <h5>Request</h5> <p>Dieses Beispiel zur Prüfung einer XML-Signatur (<a href="../../clients/webservice/resources/requests/VerifyXMLSignatureRequest.SigManifest.xml" target="_blank"><code>VerifyXMLSignatureRequest.SigManifest.xml</code></a>) demonstriert die Überprüfung des Zusammenhangs zwischen den <a href="http://www.buergerkarte.at/konzept/securitylayer/spezifikation/20040514/core/Core.html#glossar_Referenz-Eingangsdaten" target="_blank">Referenz-Eingangsdaten</a> und den <a href="http://www.buergerkarte.at/konzept/securitylayer/spezifikation/20040514/core/Core.html#glossar_Hash-Eingangsdaten" target="_blank">Hash-Eingangsdaten</a> für die <code>dsig:Reference</code>-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. <a href="http://www.buergerkarte.at/konzept/securitylayer/spezifikation/20040514/core/Core.html#signaturerstellungNachXMLDSIGAntwortImplTransParam" target="_blank">Implizite Transformationsparameter</a>) einer XSLT-Transformation angewendet wurden, welche die Anwendung vorgegeben hat. Bei erfolgreicher Prüfung dieses Zusammenhangs kann die Anwendung die Referenz-Eingangsdaten einer <code>dsig:Reference</code> 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.</p> <pre> -<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> <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> -<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> </pre> @@ -1072,7 +1072,7 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> <pre> <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> <h3><a name="webservice_clients_übersicht" id="webservice_clients_übersicht"></a>2.2.1 Übersicht</h3> <p>Der Webservice-Client existiert in drei Varianten, wobei jede Variante in einer eigenen Java-Klasse implementiert ist:</p> <ul> - <li>Der einfache Client (<code><a href="../../clients/webservice/src/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTP.java">HTTP.java</a></code>) arbeitet ohne Authentifikation. Er prüft weder die Authentizität des verwendeten MOA-Webservices, noch identifiziert er sich selbst gegenüber dem MOA-Webservice.</li> - <li>Der Client mit Server-Authentisierung (<code><a href="../../clients/webservice/src/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSServerAuth.java">HTTPSServerAuth.java</a></code>) prüft die Authentizität des verwendeten MOA-Websservices an Hand dessen SSL-Serverzertifikats, identifiziert sich selbst jedoch nicht gegenüber dem MOA-Webservice.</li> - <li>Der Client mit Client- und Server-Authentisierung (<code><a href="../../clients/webservice/src/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSClientAuth.java">HTTPSClientAuth.java</a></code>) 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. </li> + <li>Der einfache Client (<code><a href="../../clients/webservice/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTP.java">HTTP.java</a></code>) arbeitet ohne Authentifikation. Er prüft weder die Authentizität des verwendeten MOA-Webservices, noch identifiziert er sich selbst gegenüber dem MOA-Webservice.</li> + <li>Der Client mit Server-Authentisierung (<code><a href="../../clients/webservice/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSServerAuth.java">HTTPSServerAuth.java</a></code>) prüft die Authentizität des verwendeten MOA-Websservices an Hand dessen SSL-Serverzertifikats, identifiziert sich selbst jedoch nicht gegenüber dem MOA-Webservice.</li> + <li>Der Client mit Client- und Server-Authentisierung (<code><a href="../../clients/webservice/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSClientAuth.java">HTTPSClientAuth.java</a></code>) 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. </li> </ul> <p>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.</p> <p class="remark">Hinweis: Das <a href="../../">Wurzelverzeichnis</a> dieses Handbuchs stellt ein komplettes und sofort verwendbares Eclipse Projekt dar. </p> @@ -1173,18 +1173,18 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> </ol> <h3><a name="webservice_clients_httpsserverauth" id="webservice_clients_httpsserverauth"></a>2.2.3 Besonderheiten von <code>HTTPSServerAuth.java</code></h3> <p>Diese Variante des Webservice-Clients verwendet JSSE, um im Schritt 3 des Kernablaufs aus <a href="#webservice_clients_gemeinsamkeiten">Abschnitt 2.2.2</a> 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.</p> -<p>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 <a href="#webservice_clients_gemeinsamkeiten">Abschnitt 2.2.2</a> besprochenen Java-Properties-Datei vorgenommen. Genaue Infos zu diesen Konfigurationsparametern entnehmen Sie bitte der Quellcodedokumentation von <code><a href="../../clients/webservice/src/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSServerAuth.java">HTTPSServerAuth.java</a></code>. <a href="../../clients/webservice/conf/http.properties"><code>http.properties</code></a> enthält eine auf dieses Handbuch abgestimmte Konfiguration.</p> -<p>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 <code><a href="../../clients/webservice/src/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSServerAuth.java">HTTPSServerAuth.java</a></code> bereits enthalten, jedoch auskommentiert. Suchen Sie einfach nach dem String <code>javax.net.debug</code>, um zur entsprechenden Stelle im Quellcode zu gelangen. </p> +<p>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 <a href="#webservice_clients_gemeinsamkeiten">Abschnitt 2.2.2</a> besprochenen Java-Properties-Datei vorgenommen. Genaue Infos zu diesen Konfigurationsparametern entnehmen Sie bitte der Quellcodedokumentation von <code><a href="../../clients/webservice/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSServerAuth.java">HTTPSServerAuth.java</a></code>. <a href="../../clients/webservice/conf/http.properties"><code>http.properties</code></a> enthält eine auf dieses Handbuch abgestimmte Konfiguration.</p> +<p>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 <code><a href="../../clients/webservice/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSServerAuth.java">HTTPSServerAuth.java</a></code> bereits enthalten, jedoch auskommentiert. Suchen Sie einfach nach dem String <code>javax.net.debug</code>, um zur entsprechenden Stelle im Quellcode zu gelangen. </p> <h3><a name="webservice_clients_httpsclientauth" id="webservice_clients_httpsclientauth"></a>2.2.4 Besonderheiten von <code>HTTPSClientAuth.java</code> </h3> <p>Diese Variante des Webservice-Clients verwendet JSSE, um im Schritt 3 des Kernablaufs aus <a href="#webservice_clients_gemeinsamkeiten">Abschnitt 2.2.2</a> 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.</p> -<p>Die gegenüber <a href="#webservice_clients_httpsserverauth">Abschnitt 2.2.3</a> 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 <a href="#webservice_clients_gemeinsamkeiten">Abschnitt 2.2.2</a> besprochenen Java-Properties-Datei vorgenommen. Genaue Infos zu diesen Konfigurationsparametern entnehmen Sie bitte der Quellcodedokumentation von <code><a href="../../clients/webservice/src/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSClientAuth.java">HTTPSClientAuth.java</a></code>. <a href="../../clients/webservice/conf/http.properties"><code>http.properties</code></a> enthält eine auf dieses Handbuch abgestimmte Konfiguration.</p> +<p>Die gegenüber <a href="#webservice_clients_httpsserverauth">Abschnitt 2.2.3</a> 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 <a href="#webservice_clients_gemeinsamkeiten">Abschnitt 2.2.2</a> besprochenen Java-Properties-Datei vorgenommen. Genaue Infos zu diesen Konfigurationsparametern entnehmen Sie bitte der Quellcodedokumentation von <code><a href="../../clients/webservice/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSClientAuth.java">HTTPSClientAuth.java</a></code>. <a href="../../clients/webservice/conf/http.properties"><code>http.properties</code></a> enthält eine auf dieses Handbuch abgestimmte Konfiguration.</p> <p>Beachten Sie bitte auch den Hinweis zum JSSE Logging aus <a href="#webservice_clients_httpsserverauth">Abschnitt 2.2.3</a>.</p> <h1><a name="klassenbibliothek" id="klassenbibliothek"></a>3 Verwendung der Klassenbibliothek</h1> <p>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. </p> <h2><a name="klassenbibliothek_vorbereitung" id="klassenbibliothek_vorbereitung"></a>3.1 Vorbereitung</h2> -<p>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 <a href="../install/install.html#klassenbibliothek">Abschnitt 3</a>. +<p>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 <a href="../install/install.html#klassenbibliothek">Abschnitt 3</a>. <h2><a name="klassenbibliothek_allgemeines" id="klassenbibliothek_allgemeines"></a>3.2 Allgemeines </h2> -<p>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 <a href="#webservice_xmlrequests">Abschnitt 2.1</a> als Vorlage verwendet und einfach in die "API-Welt" übertragen werden. +<p>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 <a href="#webservice_xmlrequests">Abschnitt 2.1</a> als Vorlage verwendet und einfach in die "API-Welt" übertragen werden. <h2><a name="klassenbibliothek_beispiele" id="klassenbibliothek_beispiele"></a>3.3 Beispiele </h2> <p>Dieses Handbuch enthält zwei Beispiele für die Verwendung der API von MOA SP/SS: <ol> @@ -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. </li> </ol> <h2><a name="klassenbibliothek_apidoc" id="klassenbibliothek_apidoc"></a>3.4 API-Dokumentation </h2> -<p>Für die vollständige Dokumentation des API von MOA SP/SS sei auf die <a href="../../api-doc/index.html">Java Doc der API</a> verwiesen. +<p>Für die vollständige Dokumentation des API von MOA SP/SS sei auf die <a href="../../api-doc/index.html">Java Doc der API</a> verwiesen. <p> <h1><a name="referenzierte_software" id="referenzierte_software"></a>A Referenzierte Software</h1> <p>Auf folgende Software-Pakete wird in diesem Handbuch verwiesen:</p> 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,4 +1,13 @@ ############## +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 @@ <project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="moa-spss">
<wb-resource deploy-path="/" source-path="/src/main/webapp"/>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/resource/moa-common/moa-common">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
+ <dependent-module deploy-path="/WEB-INF/lib" handle="module:/resource/moa-spss-lib/moa-spss-lib">
+ <dependency-type>uses</dependency-type>
+ </dependent-module>
<property name="context-root" value="moa-spss"/>
<property name="java-output-path" value="target/classes"/>
</wb-module>
|