diff options
Diffstat (limited to 'spss.server/doc/moa_spss/sp-anwendung.htm')
-rw-r--r-- | spss.server/doc/moa_spss/sp-anwendung.htm | 1079 |
1 files changed, 0 insertions, 1079 deletions
diff --git a/spss.server/doc/moa_spss/sp-anwendung.htm b/spss.server/doc/moa_spss/sp-anwendung.htm deleted file mode 100644 index 4adccb46d..000000000 --- a/spss.server/doc/moa_spss/sp-anwendung.htm +++ /dev/null @@ -1,1079 +0,0 @@ -<html> -<head> - <title>MOA SP/SS-Anwendung</title> - <meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" /> - <meta content="heinz.rosenkranz@brz.gv.at" name="author"/> - -<style type="text/css"> - body { font-family:"Verdana", "Arial"; font-size:10pt; color:#505060; } - td { font-family:"Verdana", "Arial"; font-size:10pt; color:#505060; } - th { font-family:"Verdana", "Arial"; font-size:10pt; font-weight:bold; color:#c0c0c0; background:#505050} - li { font-family:"Verdana", "Arial"; font-size:10pt; color:#505060; margin-top:3px } - ul { font-family:"Verdana", "Arial"; font-size:10pt; color:#505060; margin-top:3px } - tt { font-size:9pt; color:#505060; } - pre { font-size:9pt; color:#505060; } - #titel { font-family:"Verdana", "Arial"; font-size:18pt; color:#505060; } - #subtitel { font-family:"Verdana", "Arial"; font-size:12pt; font-weight:bold; color:#505060; } - #slogan { font-family:"Verdana", "Arial"; font-size:8pt; color:#808090; text-align:justify; width:160px } - #block { font-family:"Verdana", "Arial"; font-size:10pt; color:#505060; text-align:justify } - #klein { font-family:"Verdana", "Arial"; font-size:9pt; color:#505060; margin-top:3px } - a:link {color:#000090} - a:visited {color:#000090} - a:hover {color:#c03030} - a {text-decoration: none} -</style> - -<script language="JavaScript"> -<!-- -function goWin(url) { - Fenster=window.open(url,"smallWin","toolbar=0,location=0,directories=0,status=0,menubar=0,resizable=yes,scrollbars=yes,width=500,height=480,top=20,screenY=0,left=20,screenX=0"); - window.setTimeout("showWin()",300); -} -function showWin() { Fenster.focus(); } -// --> -</script> -</head> - -<body bgcolor="#FFFFFF" > -<div style="width:650px"> - -<!-- Projekt-Logo --> -<div style="height:42px; font-size:16pt; color:#b0b8c0; background:#003050"> - Module für Online-Applikationen -</div> -<div style="margin-left:8px; margin-top:3px; font-size:8pt; color:#707070; "> -<!-- Development Center der BRZ GmbH, A-Trust und IAIK Graz -->  -</div> -<div style="margin-top:-65px; text-align:right; font-size:8pt; font-weight:bold; color:#d04040;" > -Projekt <span style="font-size:48pt; ">moa</span>  -</div> -<br /> - -<!-- First Section with Navigation --> -<table width="650" border="0" cellpadding="10" cellspacing="0"> -<tr> -<td width="170" valign="top"> -<div style="font-weight:bold; margin-top:12px">MOA-SP/SS</div><br /> -<div id="klein"><a href="#Webservices"><img src="../moa_images/idle.gif" border="0" width="13" height="14" /> - <b> Beispiel-Programme </b></div> -<div id="klein"><a href="#ClientExample"><img src="../moa_images/idle.gif" border="0" width="13" height="14" /> - <b> Client Example</b></div> -<div id="klein"><a href="#ServerAuth"><img src="../moa_images/idle.gif" border="0" width="13" height="14" /> - <b> Server Auth Example</b></div> -<div id="klein"><a href="#ClientAuth"><img src="../moa_images/idle.gif" border="0" width="13" height="14" /> - <b> Client Auth Example</b></div> -<div id="klein"><a href="#API"><img src="../moa_images/idle.gif" border="0" width="13" height="14" /> - <b> API Example</b></div> -<br /> -<div id="klein"><a href="#Beispiel-Requests"><img src="../moa_images/idle.gif" border="0" width="13" height="14" /> - <b> Beispiel-Requests</b></div> - -<div id="klein"><a href="#CreateXMLSignature1"><img src="../moa_images/idle.gif" border="0" width="13" height="14" /> - <b> CreateXMLSignature 1</b></div> -<div id="klein"><a href="#VerifyXMLSignature1"><img src="../moa_images/idle.gif" border="0" width="13" height="14" /> - <b> VerifyXMLSignature 1</b></div> -<div id="klein"><a href="#CreateXMLSignature2"><img src="../moa_images/idle.gif" border="0" width="13" height="14" /> - <b> CreateXMLSignature 2</b></div> -<div id="klein"><a href="#VerifyXMLSignature2"><img src="../moa_images/idle.gif" border="0" width="13" height="14" /> - <b> VerifyXMLSignature 2</b></div> -<div id="klein"><a href="#VerifyCMSSignature"><img src="../moa_images/idle.gif" border="0" width="13" height="14" /> - <b> VerifyCMSSignature</b></div> - -<br /> -<div id="klein"><a href="moa.htm"><img src="../moa_images/west.gif" border="0" width="13" height="14" /> - <b> Zurück</b></a></div> -<br /><br /> -</td> - -<td valign="top"> -<div id="titel">MOA SP/SS-Anwendung</div> -<p id="block"> -Die Module Signaturprüfung (SP) und Serversignatur (SS) sind als plattformunabhängige Module ausgelegt, die über ein -Webservice bzw. ein Java-API verwendet werden können. -<br /><br /> -Dieses Handbuch beschreibt die Verwendung der SP/SS-Module anhand einfacher exemplarischer Anwendungen: -<ul> -<li>HTTPClientExample.java <br />Aufruf des Webservice über HTTP </li> -<li>HTTPSClientExampleServerAuth.java <br />Aufruf des Webservice über eine TLS-Verbindung mit serverseitiger Authentisierung</li> -<li>HTTPSClientExampleClientAuth.java <br />Aufruf des Webservice über eine TLS-Verbindung mit client- und serverseitiger Authentisierung</li> -<li>APIClientExample.java <br />Aufruf des API</li> -</ul> -Weiters werden folgende Beispiel-Requests beschrieben: -<ul> -<li>einfache Requests für die Erstellung und Überprüfung einer XML-Signatur</li> -<li>umfassende Requests für die Erstellung und Überprüfung einer XML-Signatur</li> -<li>ein Request für die Überprüfung einer CMS-Signatur</li> -</ul> - -</p> -</td></tr></table> - - -<div id="voraussetzung" /> -<table width="650" border="0" cellpadding="10" cellspacing="0"> -<tr> -<td width="170" valign="top" id="klein"> -<p id="subtitel"> </p> -</div> -</td> -<td valign="top"> -<p id="subtitel">Voraussetzungen</p> -<div id="block"> -Die folgende Liste enthält die erforderlichen Java-Bibliotheken, um die Beispielprogramme auszuführen. -Die angeführten Versionsnummern bezeichnen jene Versionen dieser Java-Bibliotheken, mit denen die -Beispielprogramme getestet wurden. -<br /><br /> -<table border="1" width="100%" cellpadding="2" cellspacing="0"> -<tr> -<th>Java-Bibliothek</th><th>Version</th><th>Bemerkung</th> -</tr><tr> -<tr valign="top"> -<td>JDK</td><td>1.3+</td><td>Java Development Kit</td> -</tr><tr valign="top"> -<td>Xerces <br />XML Parser</td><td>2.0.2+</td> -<td id="klein">nicht nötig wenn JDK 1.4 verwendet wird <br /> - Download: <a href="http://xml.apache.org/xerces2-j/">xml.apache.org/xerces2-j</a> </td> -</tr><tr valign="top"> -<td>AXIS Framework</td><td>1.0+</td> -<td id="klein">Download: <a href="http://xml.apache.org/axis/">xml.apache.org/axis</a> </td> -</tr><tr valign="top"> -<td>JSSE</td><td>1.0.3+</td> -<td id="klein">wenn eine SSL Verbindung verwendet wird, nicht nötig wenn JDK 1.4 verwendet wird <br />Download: <a href="http://java.sun.com/products/jsse/">java.sun.com/products/jsse</a> </td> -</tr><tr valign="top"> -<td>Servlet API</td><td>2.3+</td> -<td id="klein">nicht nötig wenn AXIS 1.1 verwendet wird <br /> -Download: <a href="http://java.sun.com/products/servlet/">java.sun.com/products/servlet</a> </td> -</tr> -</table> -</div> -</td></tr></table> -<br /><br /> - - - -<div id="Webservices" /> -<table width="650" border="0" cellpadding="10" cellspacing="0"> -<tr> -<td width="170" valign="top" id="klein"> -<p id="titel"> </p> -<p id="subtitel"> </p> -</td> -<td valign="top"> -<p id="titel">Beispiel-Programme </p> -<div id="block">Im folgenden werden vier Beispiele für Client-Applikationen beschrieben: </div> -<ul> -<li>HTTPClientExample <br /> -Aufruf des Webservice über HTTP</li> -<li>HTTPSClientExampleServerAuth <br /> -Aufruf des Webservice über eine TLS-Verbindung mit serverseitiger Authentisierung </li> -<li>HTTPSClientExampleClientAuth <br /> -Aufruf des Webservice über eine TLS-Verbindung mit client- und serverseitiger Authentisierung</li> -<li>APIClientExample <br /> -Aufruf des API</li> -</ul> -</td></tr></table> -<br /><br /> - - - -<div id="ClientExample" /> -<table width="650" border="0" cellpadding="10" cellspacing="0"> -<tr> -<td width="170" valign="top" id="klein"> -<p id="subtitel"> </p> -<div id="slogan"> -<b>Beispiel: </b><br /> -<a href="examples/testclient/example_request.xml" target="_new">example_request.xml</a><br /> -<a href="HTTPClientExample.txt" target="_new">HTTPClientExample</a><br /> -<br /><br /> -</div> -</td> -<td valign="top"> -<p id="subtitel">Beispiel HTTPClientExample </p> -<div id="block"> -<b>1. Einlesen des XML-Request aus einer Datei</b><br /> -<pre> - FileInputStream inputStream = - new FileInputStream("example_request.xml"); -</pre -<br /><br /> - -<b>2. Aufbau der DOM-Struktur</b><br /> -Erstellen der BuilderFactory für den Parser -<pre> - DocumentBuilderFactory factory = - DocumentBuilderFactory.newInstance(); -</pre> -Namespaces müssen im Request definiert sein, darum -<pre> - factory.setNamespaceAware(true); -</pre> -Einen neuen Builder instanzieren -<pre> - DocumentBuilder builder = - factory.newDocumentBuilder(); -</pre> -XML-Datei einlesen und parsen -<pre> - Document root_request = - builder.parse(inputStream); -</pre> -<br /><br /> - -<b>3. AXIS Service instanzieren</b><br /> -Service erstellen. SERVICE_QNAME ist entweder SignatureCreation oder SignatureVerification. -<pre> - Service service = - ServiceFactory.newInstance(). - createService(SERVICE_QNAME); -</pre> -Call Object erstellen -<pre> - Call call = service.createCall(); -</pre> -Ein SOAP Body Objekt erzeugen und mit dem Request aus der Datei füllen -<pre> - SOAPBodyElement body = - new SOAPBodyElement(root_request. - getDocumentElement()); - SOAPBodyElement[] params = - new SOAPBodyElement[] {body}; -</pre> -Serviceendpunkt einstellen. URL zum Server mit dem Webservice z.b. http://localhost:8080/moa-spss/services/SignatureCreation. -<pre> - call.setTargetEndpointAddress(ENDPOINT); -</pre> -<br /><br /> - -<b>4. Service aufrufen</b><br /> -Request durchführen (Parameter werden als Array von SOAPBodyElement-Objekten übergeben) -<pre> - Vector responses = (Vector)call.invoke(params); -</pre> -Response auslesen -<pre> - SOAPBodyElement response = - (SOAPBodyElement) responses.get(0); -</pre> -Response-Document auslesen -<pre> - Document root_response = response.getAsDocument(); -</pre> -<br /><br /> - -<b>5. Exceptions behandeln</b><br /> -Folgende Exceptions können auftreten und müssen bei der Dokumentverarbeitung -behandelt werden:<br /> -<table border="1" width="100%" cellpadding="2" cellspacing="0"> -<tr> -<th>Exception</th><th>Beschreibung</th> -</tr><tr> -<tr valign="top"> -<td>FileNotFoundException</td><td>Datei kann nicht gefunden werden</td> -</tr><tr valign="top"> -<td>IOException</td><td>Datei kann nicht gelesen werden</td> -</tr><tr valign="top"> -<td>ParserConfigurationException</td><td>Parsereinstellungen nicht korrekt</td> -</tr><tr valign="top"> -<td>xxSAXException</td><td>Fehler beim Parsen (z.b. XML-Fehler in der Eingabedatei)</td> -</tr><tr valign="top"> -<td>ServiceException</td><td>Fehler beim Durchführen des AXIS Request</td> -</tr><tr valign="top"> -<td>RemoteException</td><td>Probleme mit der Verbindung</td> -</tr> -</table> - -</div> -</td></tr></table> -<br /><br /> - - - -<div id="ServerAuth" /> -<table width="650" border="0" cellpadding="10" cellspacing="0"> -<tr> -<td width="170" valign="top" id="klein"> -<p id="subtitel"> </p> -<div id="slogan"> -<b>Beispiel: </b><br /> -<a href="examples/testclient/example_request.xml" target="_new">example_request.xml</a><br /> -<a href="HTTPSClientExampleServerAuth.txt" target="_new">HTTPSClientExample 1</a><br /> -<br /><br /> -</div> -</td> -<td valign="top"> -<p id="subtitel">Beispiel HTTPSClientExampleServerAuth</p> -<div id="block"> -Zusätzlich zu HTTPClientExample: <br /><br /> -Erst werden die Konstanten für die Systemproperties gesetzt -<pre> - handler = "java.protocol.handler.pkgs"; - trustStore = "javax.net.ssl.trustStore"; - trustStorePassword = - "javax.net.ssl.trustStorePassword"; -</pre> -Hinzufügen des SSL-Providers in das Systemobjekt Security -<pre> - Security.addProvider( - new com.sun.net.ssl.internal.ssl.Provider()); -</pre> -Setzen der Systemproperties für den SSL-Provider -<pre> - System.setProperty( - handler,"com.sun.net.ssl.internal.www.protocol"); - System.setProperty( - trustStore, "client.keystore"); - System.setProperty(trustStorePassword, "changeit"); -</pre> - -Danach muß nur noch der Endpunkt umgestellt werden von ENDPOINT zu SECURE_ENDPOINT -<pre> - "http://localhost:8080/moa-spss/ - services/SignatureCreation" -</pre> -wird zu -<pre> - "https://localhost:8443/moa-spss/ - services/SignatureCreation" -</pre> -AXIS erkennt das es sich um eine sichere Verbindung handelt und initialisert die Verbindung über einen SecureSocket. -</div> -</td></tr></table> -<br /><br /> - - - -<div id="ClientAuth" /> -<table width="650" border="0" cellpadding="10" cellspacing="0"> -<tr> -<td width="170" valign="top" id="klein"> -<p id="subtitel"> </p> -<div id="slogan"> -<b>Beispiel: </b><br /> -<a href="examples/testclient/example_request.xml" target="_new">example_request.xml</a><br /> -<a href="HTTPSClientExampleClientAuth.txt" target="_new">HTTPSClientExample 2</a><br /> -<br /><br /> -</div> -</td> -<td valign="top"> -<p id="subtitel">Beispiel HTTPSClientExampleClientAuth</p> -<div id="block"> -Zusätzlich zu HTTPSClientExampleServerAuth: <br /><br /> -Für Clientauthorisierung kommen noch folgende Properties hinzu -<pre> - keyStore = "javax.net.ssl.keyStore"; - keyStorePassword = "javax.net.ssl.keyStorePassword"; - System.setProperty( - keyStore, "client.keystore"); - System.setProperty(keyStorePassword, "changeit"); -</pre> -</div> -</td></tr></table> -<br /><br /> - -<div id="API" /> -<table width="650" border="0" cellpadding="10" cellspacing="0"> -<tr> -<td width="170" valign="top" id="klein"> -<p id="subtitel"> </p> -<div id="slogan"> -<b>Beispiel: </b><br /> -<a href="APIClientExample.txt" target="_new">APIClientExample</a><br /> -<br /><br /> -</div> -</td> -<td valign="top"> -<p id="subtitel">Beispiel APIClientExample</p> -<div id="block"> -Folgende VM-Properties müssen gesetzt sein um das API Beispiel -ausführen zu können.<br /><br /> - -<table border="1" cellpadding="2" cellspacing="0"> -<tr> -<th colspan=2>moa.spss.server.configuration</th> -</tr><tr> -<tr valign="top"> -<td>Pfad zur Konfiguration von MOA-SPSS</td><td>Beispiel C:\moa\ConfigurationTest.xml </td> -</tr> -<th colspan=2>log4j.configuration</th> -<tr valign="top"> -<td>Pfad zu einer gültigen Log4J Konfiguration</td><td>Beispiel file:/C:/moa/log4j.properties</td> -</tr><tr valign="top"> -</tr> -</table> -<br /> -Serverfunktionshandler instanzieren -<pre> SPSSFactory spf = - SPSSFactory.getInstance();</pre> - -Signaturedaten in ein Contentobjekt einbinden -<pre> byte[]data = - "Dies sind Testdaten".getBytes("UTF-8"); - ByteArrayInputStream bis = - new ByteArrayInputStream(data); - Content cont = - spf.createContent(bis,"http://uri.data.org");</pre> - -Beschreibungselement zu den Daten erstellen -<pre> MetaInfo mi = - spf.createMetaInfo("text/plain","Testdaten",null);</pre> - -Transformationen erstellen -<pre> CreateTransformsInfo cti = - spf.createCreateTransformsInfo(null,mi); - CreateTransformsInfoProfile ct = - spf.createCreateTransformsInfoProfile( - cti, - null);</pre> - -Datenobjekt aufbauen -<pre> DataObjectInfo doi = - spf.createDataObjectInfo( - DataObjectInfo.STRUCTURE_DETACHED, - false, - cont, - ct); - List dataobjectinfolist = new ArrayList(); - dataobjectinfolist.add(doi);</pre> - -alles zusammenpacken zu einer SingleSignature -<pre> SingleSignatureInfo ssi = - spf.createSingleSignatureInfo( - dataobjectinfolist, - null, - false); - List singlesignatureinfolist = new ArrayList(); - singlesignatureinfolist.add(ssi);</pre> -die Signatur in einen Request einbetten -<pre> CreateXMLSignatureRequest cxsreq = - spf.createCreateXMLSignatureRequest( - "PKCS12RSAKey1", - singlesignatureinfolist);</pre> - -Signatureerstellungsservice instanzieren -<pre> SignatureCreationService scs = - SignatureCreationService.getInstance();</pre> - -Signatureerstellungsservice aufrufen -<pre> CreateXMLSignatureResponse cxsres = - scs.createXMLSignature(cxsreq);</pre> - -Response auswerten -<pre> List elements = cxsres.getResponseElements(); - - SignatureEnvironmentResponse ser = - (SignatureEnvironmentResponse)elements.get(0);</pre> - -Responsetyp lesen -<pre> int response_type = ser.getResponseType(); - if(response_type == - SignatureEnvironmentResponse.ERROR_RESPONSE) - { - ... - } -</pre> -Fehlerfall -<pre> System.out.println("Bei der Erstellung der - Signatur ist ein Fehler aufgetreten"); -</pre> -Signaturerstellung erfolgreich -<pre> Element se = ser.getSignatureEnvironment(); - System.out.println( - "Signaturerstellung erfolgreich"); - displayTree(se); -</pre> - -</div> -</td></tr></table> -<br /><br /> - - -<div id="Beispiel-Requests" /> -<table width="650" border="0" cellpadding="10" cellspacing="0"> -<tr> -<td width="170" valign="top" id="klein"> -<p id="subtitel"> </p> -</td> -<td valign="top"> -<p id="titel">Beispiel-Requests</p> -<div id="block"> -In den folgenden Abschnitten werden einfache und umfassende Beispiele für Requests beschrieben, die an MOA-SP/SS -gesendet werden können. Damit soll der Anwendungsentwickler einen Überblick über die -Möglichkeiten von MOA-SP/SS vermittelt bekommen. Die detaillierte und vollständige Beschreibung -des Funktionsumfangs ist in den Spezifikationen von MOA-SP/SS und des Security-Layers enthalten. -</div> -</td></tr></table> -<br /><br /> - - - -<div id="CreateXMLSignature1" /> -<table width="650" border="0" cellpadding="10" cellspacing="0"> -<tr> -<td width="170" valign="top" id="klein"> -<p id="subtitel"> </p> -<div id="slogan"> -<b>Beispiel: </b><br /> -<a href="examples/requestsResponses/CreateXMLSignatureRequest1.xml" target="_new">Request</a><br /> -<a href="examples/requestsResponses/CreateXMLSignatureResponse1.xml" target="_new">Response</a><br /> -<br /><br /> -</div> -</td> -<td valign="top"> -<p id="subtitel">Beispiel:<br/ > einfacher CreateXMLSignatureRequest</p> -<div id="block"> -Das Beispiel in <a href="examples/requestsResponses/CreateXMLSignatureRequest1.xml" target="_new">CreateXMLSignatureReqest1.xml</a> zeigt einen -einfachen <tt><CreateXMLSignatureRequest></tt>. Die Bedeutung der einzelnen Elemente -wird im folgenden beschrieben: -<pre> - <KeyIdentifier>PKCS12RSAKey1</KeyIdentifier> -</pre> -<tt>PKCS12RSAKey1</tt> bezeichnet eine Schlüsselgruppe aus der MOA-SS einen Signaturschlüssel selektieren soll -und muss einer im Konfigurationsfile definierten <tt><KeyGroup></tt> entsprechen. -<pre> - <SingleSignatureInfo SecurityLayerConformity="false"> -</pre> -Für jedes <tt><SingleSignatureInfo></tt>-Element wird eine eigene XML-Signatur erzeugt. Wird das -Attribut <tt>SecurityLayerConformity</tt> auf <tt>true</tt> gesetzt, dann wird eine XML-Signatur -gemäß <a href="http://www.buergerkarte.at/konzept/securitylayer/spezifikation/20020831/core/Core.html#signaturerstellungNachXMLDSIGAntwort" -target="_new">Security-Layer Spezifikation</a> erzeugt; d.h. es werden signierte Properties (Zeitpunkt -der Signaturerstellung, -das für die Signaturüberprüfung zu verwendende Zertifikat, Metainformationen zu den signierten Datenobjekten) und ein -Manifest, das alle implizite Transformationsparameter enthält, zur Signatur hinzugefügt. -<pre> - <DataObjectInfo Structure="enveloping"> -</pre> -Für jedes Daten-Objekt, das in die Signatur als <tt>dsig:Reference</tt> aufgenommen werden soll, muss ein -<tt>DataObjectInfo</tt>-Element spezifiziert werden. Das Attribut <tt>Structure</tt> gibt an, ob die Daten -in die Signatur in ein <tt><dsig:Object></tt>-Element integriert werden soll -(<tt>Structure="enveloping"</tt>) oder via eine URL referenziert werden soll (<tt>Structure="detached"</tt>). -<br /><br /> -Im Fall von <tt>Structure="enveloping"</tt> muss im nachfolgenden <tt>DataObject</tt> Element entweder das -Attribut <tt>Reference</tt> gesetzt sein oder die zu signierenden Daten explizit im Element <tt>Base64Content</tt> oder -<tt>XMLContent</tt> spezifiziert sein. Die Angabe der zu signierenden Daten über das Attribut <tt>Reference</tt> -und gleichzeitig dem Element <tt>Base64Content</tt> oder <tt>XMLContent</tt> ist nicht erlaubt. -<br /><br /> -Im Fall von <tt>Structure="detached"</tt> muss das Attribut <tt>Reference</tt> im nachfolgenden <tt>DataObject</tt> -Element gesetzt sein. Die Angabe der Elemente <tt>Base64Content</tt> oder <tt>XMLContent</tt> ist optional. -<pre> - <DataObject> - <XMLContent xml:space="preserve"> - Diese Daten werden signiert. - <XMLContent> - </DataObject> -</pre> -Die zu signierenden Daten werden im Element <tt><DataObject></tt> spezifiziert und können entweder als -<tt><XMLContent></tt> oder <tt><Base64Content></tt> oder über das Attribut <tt>Reference</tt> -angegeben werden. -<pre> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <FinalDataMetaInfo> - <MimeType>text/plain<MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> -</pre> -Zu jedem Daten-Objekt können optional Transformationen (z.B. XPath, XSLT, Base64-Decodierung, etc.)angegeben werden. -Werden keine Transformationen angegeben so muss zumindest der MIME-Type der zu signierenden Daten spezifiziert werden. -<p> -Die von diesem Request erzeugt Response ist in <a href="examples/requestsResponses/CreateXMLSignatureResponse1.xml" -target="_new">CreateXMLSignatureResponse1.xml</a> abgelegt. -</div> -</td></tr></table> -<br /><br /> - - -<div id="VerifyXMLSignature1" /> -<table width="650" border="0" cellpadding="10" cellspacing="0"> -<tr> -<td width="170" valign="top" id="klein"> -<p id="subtitel"> </p> -<div id="slogan"> -<b>Beispiel: </b><br /> -<a href="examples/requestsResponses/VerifyXMLSignatureRequest1.xml" target="_new">Request</a><br /> -<a href="examples/requestsResponses/VerifyXMLSignatureResponse1.xml" target="_new">Response</a><br /> -<br /><br /> -</div> -</td> -<td valign="top"> -<p id="subtitel">Beispiel:<br/ > einfacher VerifyXMLSignatureRequest</p> -<div id="block"> -Die oben erzeugte XML-Signatur kann mit dem in <a href="examples/requestsResponses/VerifyXMLSignatureRequest1.xml" target="_new">VerifyXMLSignatureReqest1.xml</a> gezeigten -einfachen <tt><VerifyXMLSignatureRequest></tt> wieder überprüft werden. -<pre> -<VerifyXMLSignatureRequest - xmlns="http://reference.e-government.gv.at/ - namespace/moa/20020822#" - xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - - <VerifySignatureInfo> - <VerifySignatureEnvironment> - <XMLContent> - <dsig:Signature - Id="signature-1" - xmlns:dsig="http://www.w3.org/2000/09/ - xmldsig#"> - ......... - </dsig:Signature> - </XMLContent> - </VerifySignatureEnvironment> -</pre> - -Im Element <tt>VerifySignatureInfo</tt> wird zuerst die zu überprüfende Signatur im Element -<tt>VerifySignatureEnvironment</tt> angegeben. Im Beispiel wird die Signatur als Kind-Element von -<tt><XMLContent></tt> spezifiziert. Alternativ könnte die Signatur in Base64-Kodierung -im Element <tt><Base64Content></tt> oder mit dem Attribut <tt>Reference</tt> über eine URL -referenziert werden. - -<pre> - <VerifySignatureLocation> - //dsig:Signature - </VerifySignatureLocation> - - </VerifySignatureInfo> -</pre> - -Weiters muss mittels eines XPath-Ausdrucks im Element <tt><VerifySignatureLocation></tt> -die Position der zu prüfenden Signatur spezifiziert werden. Werden im XPath-Ausdruck -Namespace-Prefixes verwendet, müssen die entsprechenden Namespace-Deklarationen im Kontext -des Elements <tt>VerifySignatureLocation</tt> bekannt sein. Im Beispiel wird das Prefix <tt>dsig</tt> -verwendet, das im Element <tt><VerifyXMLSignatureRequest></tt> deklariert wird. - -<pre> - <TrustProfileID>TrustProfile1<TrustProfileID> -</pre> -Abschließend wird im Element <tt><TrustProfileID></tt> ein Trustprofile spezifiziert, das am MOA-SP Server -definiert ist und jene Zertifikate enthält, die für diesen Request als vertrauenswürdig gelten. -<p> -Die von diesem Request erzeugt Response ist in <a href="examples/requestsResponses/verifyXMLSignatureResponse1.xml" -target="_new">VerifyXMLSignatureResponse1.xml</a> abgelegt. Die Response enthält das Ergebnis der Signaturprüfung -im Element <tt><SignatureCheck></tt>, das Ergebnis der Zertifikatsprüfung im Element -<tt><CertificateCheck></tt> und Informationen über den Signator im Element -<tt><SignerInfo>/<X509Data></tt>. Die Informationen über den Signator bestehen aus den Elementen -<tt><X509SubjectName></tt>, <tt><X509IssuerSerial></tt> und <tt><X509Certificate></tt>. - -</div> -</td></tr></table> -<br /><br /> - - -<div id="CreateXMLSignature2" /> -<table width="650" border="0" cellpadding="10" cellspacing="0"> -<tr> -<td width="170" valign="top" id="klein"> -<p id="subtitel"> </p> <div id="slogan"> <b>Beispiel: </b><br /> <a -href="examples/requestsResponses/CreateXMLSignatureRequest2.xml" target="_new">Request</a><br /> -<a href="examples/requestsResponses/CreateXMLSignatureResponse2.xml" target="_new">Response</a> -<br /> <br /><br /> -</div> -</td> -<td valign="top"> <p -id="subtitel">Beispiel:<br/ > umfassender CreateXMLSignatureRequest</p> <div -id="block"> Das Beispiel in <a -href="examples/requestsResponses/CreateXMLSignatureRequest2.xml" -target="_new">CreateXMLSignatureReqest2.xml</a> zeigt einen umfassenden -<tt><CreateXMLSignatureRequest></tt>. -<br /><br /> -Das Beispiel benötigt zwei Dateien, die über die URL -<tt>http://localhost:8080/TestDatenGenerator/resources/<Dateiname></tt> erreichbar sind. -Bevor der Beispiel-Request ausgeführt wird, muss daher -<a href="requestsResponses/TestDatenGenerator.zip">TestDatenGenerator.zip</a> -entpackt und in $CATALINA_HOME/webapps kopiert werden. Voraussetzung ist, dass Tomcat auf Port 8080 läuft. - -<pre> -<CreateXMLSignatureRequest - xmlns="http://reference.e-government.gv.at/ - namespace/moa/20020822#" - xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <KeyIdentifier>PKCS12RSAKey1</KeyIdentifier> - <SingleSignatureInfo SecurityLayerConformity="false"> - <DataObjectInfo Structure="enveloping" - ChildOfManifest="true"> - <DataObject> - <XMLContent>Diese Daten werden - signiert.</XMLContent> - </DataObject> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <FinalDataMetaInfo> - <MimeType>text/plain</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> - </SingleSignatureInfo> -</pre> - -Der Anfang des Requests ist identisch mit dem <a href="#CreateXMLSignature1">einfachen CreateXMLSignatureRequest</a>. -Als Variation wurde <tt><ChildOfManifest= "true"></tt> gesetzt. - -Damit wird spezifiziert, dass die zugehörige <tt><dsig:Reference></tt> nicht in das Element -<tt><SignedInfo></tt> sondern in ein XMLDSig-Manifest eingefügt werden soll. - -Wird das Attribut <tt><ChildOfManifest></tt> nicht gesetzt, dann -wird kein XMLDSig-Manifest erzeugt. - -<pre> - <SingleSignatureInfo SecurityLayerConformity="true"> -</pre> - -Anschließend wird angegeben, dass eine zweite Signatur erstellt werden soll. -<tt>SecurityLayerConformity="true"</tt> gibt an, dass die Signatur entsprechend der Security-Layer -Spezifikation Version 1.1 erstellt werden muss, d.h. es werden Signaturattribute und gegebenenfalls ein -<a href="http://www.buergerkarte.at/konzept/securitylayer/spezifikation/20020831/core/Core.html#signaturerstellungNachXMLDSIGAntwortImplTransParam" target="_new"> -Signatur-Manifest<a> erzeugt. Wird eine Security-Layer konforme Signatur erzeugt, dann -darf <tt><ChildOfManifest="true"></tt> nicht gesetzt sein. -<p> -Die zweite Signatur soll zwei Datenobjekte enthalten: - -<pre> - <DataObjectInfo Structure="detached"> -</pre> - -Für das erste Datenobjekt sollen die signierten Daten nicht in der Signatur enthalten sein (<tt>Structure="detached"</tt>). - -<pre> - <DataObject - Reference="http://localhost:8080/TestDatenGenerator - /resources/testDaten.txt"> - <Base64Content> - RGllcyBz........DQphdXM= - </Base64Content> - </DataObject> - <CreateTransformsInfoProfile> - <CreateTransformsInfo> - <FinalDataMetaInfo> - <MimeType>text/plain</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> - </CreateTransformsInfoProfile> - </DataObjectInfo> -</pre> - -Die zu signierenden Daten sind in Base64-Kodierung angegeben und werden in der Signatur über die URL, die im -Attribut <tt>Reference</tt> angegeben ist, referenziert. Diese URL wird im Zuge der Signaturerstellung -nicht aufgelöst, da die Daten bereits explizit im Request angegeben sind. Es werden keine weitere -Transformationen für das Datenobjekt angegeben. - -<pre> - <DataObjectInfo Structure="enveloping"> - <DataObject> - <XMLContent xml:space="preserve"> - <data:book - xmlns:data="http://uri.data.org" - data:hardback="yes"> - <data:title> - Gesundheitliche Auswirkungen - elektronischer Signaturen - </data:title> - <data:first-name>Ellipse</data:first-name> - <data:last-name>Kurvenreich</data:last-name> - <data:birth-date>1951-04-16</data:birth-date> - <data:birth-location> - Hinterm Berg - </data:birth-location> - <data:register-number> - 6-930-21512-12 - </data:register-number> - </data:book> - </XMLContent> - </DataObject> -</pre> - -Das zweite Datenobjekt, das signiert werden soll ist eine XML-Struktur. -<p> -Für die XML-Struktur wird eine Transformation spezifiziert, die angewendet werden muss, bevor die Daten signiert -werden: -<pre> - <CreateTransformsInfoProfile> -</pre> -Transformationen können entweder explizit im Request im Element <tt><CreateTransformsInfoProfile></tt> -angegeben werden oder mit dem Element <tt><CreateTransformsInfoProfileID></tt> über eine am MOA-SS-Server -konfigurierte Profil-ID referenziert werden. -<pre> - <CreateTransformsInfo> -</pre> -Im Transformationsprofil werden im Element <tt><CreateTransformsInfo></tt> die Transformationskette -(<tt><dsig:Transforms></tt>) und optionale Ergänzungsobjekte (<tt><Supplement></tt>) angegeben. -<pre> - <dsig:Transforms> - <dsig:Transform - Algorithm="http://www.w3.org/TR/ - 1999/REC-xslt-19991116"> - <xsl:stylesheet - xmlns:xsl="http://www.w3.org/ - 1999/XSL/Transform" - version="1.0"> - <xsl:include - href="http://localhost:8080/ - TestDatenGenerator/resources/ - CX1_book_not_here.xsl"/> - </xsl:stylesheet> - </dsig:Transform> - </dsig:Transforms> -</pre> -Im Beispiel besteht die Transformationskette aus einer XSLT-Transformation, die ein weiteres XSLT Stylesheet inkludiert. -MOA-SS unterstützt alle Transformationen aus der XMLDSig-Spezifikation sowie Exclusive XML Canonicalization 1.0 und -XPath Filter 2.0. - -<pre> - <FinalDataMetaInfo> - <MimeType>text/html</MimeType> - </FinalDataMetaInfo> - </CreateTransformsInfo> -</pre> -<tt><FinalDataMetaInfo></tt> gibt den MIME-Type der Daten an, die das Ergebnis der Transformation bilden und -tatsächlich signiert werden. -<p> -Weiters können optional Ergänzungsobjekte angegeben werden, die Daten enthalten, die von MOA-SP zur -Signaturerstellung verwendet werden sollen: -<pre> - <Supplement> - <Content Reference="http://localhost:8080/ - TestDatenGenerator/resources/ - CX1_book_not_here.xsl"> - <Base64Content>PHhzbDpzdHls.....eWxlc2hlZXQ+ - </Base64Content> - </Content> - </Supplement> - </CreateTransformsInfoProfile> - </DataObjectInfo> -</pre> -Im aktuellen Beispiel wird ein Ergänzungsobjekt für jenes Stylesheet angegeben, das im Stylesheet der oben -spezifizierten XSLT-Transformation referenziert wird. MOA-SS wird die angegebene URL nicht auflösen sondern -stattdessen die im Ergänzungsobjekt enthaltenen Daten verwenden. -<p> -<pre> - <CreateSignatureInfo xmlns:env="http://uri.env.org"> -</pre> -Abschließend wird hier noch mittels des optionalen Elements <tt><CreateSignatureInfo></tt> festgelegt, -dass die zu erzeugende Signatur in ein bereits bestehendes XML-Dokument eingebettet werden soll. Im Beispiel -wird das Namespace-Prefix <tt>env</tt> hier deklariert, da es weiter unten im Element -<tt>CreateSignatureLocation</tt> verwendet werden wird. -<pre> - <CreateSignatureEnvironment> - <XMLContent> - <env:Document - xmlns:env="http://uri.env.org" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://uri.env.org - http://anyhost/envSchema.xsd"> - nach diesem Text wird die Signatur in das Dokument - eingefügt - </env:Document> - </XMLContent> - </CreateSignatureEnvironment> -</pre> -Im Element <tt><CreateSignatureEnvironment></tt> wird das XML-Dokument angegeben. -<pre> - <CreateSignatureEnvironmentProfile> - <CreateSignatureLocation Index="1"> - /env:Document - </CreateSignatureLocation> - </CreateSignatureEnvironmentProfile> -</pre> -Anschließend wird im Profil angegeben an welcher Position des XML-Dokuments die Signatur eingefügt werden -soll. Im Element <tt><CreateSignatureLocation></tt> wird ein XPath-Ausdruck angegeben, der das -Element selektiert, als dessen Kind die Signatur eingefügt werden soll. Das Attribut <tt>Index</tt> spezifiziert -die Position innerhalb dieses Elements, an der die Signatur eingefügt werden soll. <tt>"0"</tt> gibt an, -dass die Signatur als erstes Kind eingefügt werden soll.</tt> -<pre> - </CreateSignatureInfo> - </SingleSignatureInfo> -</CreateXMLSignatureRequest> -</pre> -Abschließend müssen alle Elemente wieder geschlossen werden. -<p> -Die von diesem Request erzeugt Response ist in <a href="examples/requestsResponses/CreateXMLSignatureResponse2.xml" target="_new"> -CreateXMLSignatureResponse2.xml</a> abgelegt. Die Response enthält zwei Elemente <tt>SignatureEnvironment</tt>, die die -beiden erzeugten Signaturen enthalten. -</div> -</td></tr></table> -<br /><br /> - -<div id="VerifyXMLSignature2" /> -<table width="650" border="0" cellpadding="10" cellspacing="0"> -<tr> -<td width="170" valign="top" id="klein"> -<p id="subtitel"> </p> -<div id="slogan"> -<b>Beispiel: </b><br /> -<a href="examples/requestsResponses/VerifyXMLSignatureRequest2.xml" target="_new">Request</a><br /> -<a href="examples/requestsResponses/VerifyXMLSignatureResponse2.xml" target="_new">Response</a><br /> -<br /><br /> -</div> -</td> - - -<td valign="top"> -<p id="subtitel">Beispiel:<br/ > umfassender VerifyXMLSignatureRequest</p> -<div id="block"> -Das Beispiel in <a href="examples/requestsResponses/VerifyXMLSignatureRequest2.xml" target="_new"> -VerifyXMLSignatureReqest2.xml</a> zeigt wie die im obigen Beispiel erzeugte zweite Signatur -überprüft werden kann. -<pre> -<VerifyXMLSignatureRequest - xmlns="http://reference.e-government.gv.at/ - namespace/moa/20020822#" - xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"> - <DateTime>2003-03-24T12:41:54+01:00</DateTime> -</pre> -Optional kann ein Datum und eine Uhrzeit angegeben werden, für die die Überprüfung durchgeführt werden soll. - -<pre> - <VerifySignatureInfo> - <VerifySignatureEnvironment> - <XMLContent> - <env:Document xmlns:env="http://uri.env.org" .....> - nach diesem Text ..... Dokument eingefuegt - <dsig:Signature .....>.....</dsig:Signature> - </env:Document> - </XMLContent> - </VerifySignatureEnvironment> -</pre> -Die Signatur inklusive des umgebenden XML-Dokuments wird im Element <tt><VerifySignatureEnvironment></tt> -angegeben. -<pre> - <VerifySignatureLocation> - //dsig:Signature - </VerifySignatureLocation> - </VerifySignatureInfo> -</pre> -Die zu prüfende Signatur aus dem Element <tt><VerifySignatureEnvironment></tt> wird über einen XPath-Ausdruck -spezifiziert. - -Enthält die Signatur ID-Attribute, die referenziert werden, dann muss das XML-Dokument validierend geparst werden können. -Im Beispiel-Request wird die URL des Schemas für das Element <tt>env:Document</tt> im Attribut <tt>xsi:schemaLocation</tt> -spezifiziert (<tt>http://anyhost/envSchema.xsd</tt>). Soll MOA-SP diese URL nicht selbst auflösen, dann kann das -Schema kann im Element <tt>SupplementProfile</tt> übergeben werden: - -<pre> - <SupplementProfile> - <Content Reference="http://anyhost/envSchema.xsd"> - <XMLContent xml:space="preserve"> - <xsd:schema - targetNamespace="http://uri.env.org" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns:xsd="http://www.w3.org/2001/XMLSchema" - elementFormDefault="qualified" - attributeFormDefault="unqualified"> - <xsd:element name="Document"> - <xsd:complexType mixed="true"> - <xsd:sequence minOccurs="0" - maxOccurs="unbounded"> - <xsd:any namespace="##any" - processContents="lax"/> - </xsd:sequence> - </xsd:complexType> - </xsd:element> - </xsd:schema> - </XMLContent> - </Content> - </SupplementProfile> -</pre> - -<pre> - <ReturnHashInputData/> -</pre> -Das Element gibt an, dass für jedes <tt>dsig:SignedInfo/dsig:Reference</tt> Element jene Daten, die für die -Hash-Berechnung der Signatur als Eingangsdaten verwendet werden, in der Antwort returniert werden sollen. - -<pre> - <TrustProfileID>TrustProfile1</TrustProfileID> -</VerifyXMLSignatureRequest> -</pre> -Abschließend wird ein am MOA-SP Server definiertes Profil angegeben, dass jene Zertifikate umfasst, die für -diesen Request als vertrauenswürdig anzusehen sind. -<p> - -Die von diesem Request erzeugt Response ist in <a href="examples/requestsResponses/VerifyXMLSignatureResponse2.xml" target="_new"> -VerifyXMLSignatureResponse2.xml</a> abgelegt. Zusätzlich zu den Daten der Response des einfachen -VerifyXMLSignatureRequests enthält diese Response für jedes <tt>dsig:SignedInfo/dsig:Reference</tt> Element -ein <tt>HashInputData</tt> Element. -</div> -</td></tr></table> -<br /><br /> - - - - - -<div id="VerifyCMSSignature" /> -<table width="650" border="0" cellpadding="10" cellspacing="0"> -<tr> -<td width="170" valign="top" id="klein"> -<p id="subtitel"> </p> -<div id="slogan"> -<b>Beispiel: </b><br /> -<a href="examples/requestsResponses/VerifyCMSSignatureRequest.xml" target="_new">Request</a><br /> -<a href="examples/requestsResponses/VerifyCMSSignatureResponse.xml" target="_new">Response</a><br /> -<br /><br /> -</div> -</td> -<td valign="top"> -<p id="subtitel">Beispiel:<br/ > VerifyCMSSignatureRequest</p> -<div id="block"> -Das Beispiel in <a href="examples/requestsResponses/VerifyCMSSignatureRequest.xml" target="_new">VerifyCMSSignatureRequest.xml</a> zeigt einen -einfachen <tt><VerifyCMSSignatureRequest></tt>. Die Bedeutung der einzelnen Elemente -wird im folgenden beschrieben: -<pre> -<VerifyCMSSignatureRequest - xmlns="http://reference.e-government.gv.at/ - namespace/moa/20020822#" - xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" - Signatories="1"> -</pre> -Das optionale Attribut <tt>Signatories</tt> enthält eine Liste von positiven Ganzzahlen und gibt an, welche Signaturen -im CMS-Datenobjekt überprüft werden sollen. <tt>Signatories="1"</tt> gibt an, dass die erste Signatur geprüft -werden soll. -Wird das Attribut nicht spezifiziert, dann wird ebenfalls die erste Signatur geprüft. <tt>Signatories="all"</tt> -gibt an, dass alle im CMS-Objekt enthaltene Signaturen geprüft werden sollen. - -<pre> - <DateTime>2003-04-04T09:30:47-05:00</DateTime> -</pre> -Das optionale Element <tt><DateTime></tt> gibt an für welchen Zeitpunkt die Signaturüberprüfung -durchgeführt werden soll. Ist das Element nicht im Request enthalten, dann wird die aktuelle Systemzeit -verwendet. - -<pre> - <CMSSignature>MIIGAAYJKo...mT9fmvKwdJOiA==</CMSSignature> -</pre> -Das Element <tt><CMSSignature></tt> enthält das CMS-Signaturobjekt in Base64-Kodierung. -<br /><br /> -Sind die signierten Daten nicht in der CMS-Signatur enthalten, müssen sie im <tt>DataObject</tt>-Element -angegeben werden. Optional kann der MIME-Type dieser Daten spezifiziert werden. Die eigentlichen Daten -müssen im <tt>Base64Content</tt>-Element in Base64-Kodierung vorliegen. - -<pre> - <TrustProfileID>TrustProfile1<TrustProfileID> -</pre> - -<tt>TrustProfile1</tt> referenziert ein im Konfigurationsfile des MOA-Server definiertes Profil, das -jene Zertifikate umfasst, die für diese Überprüfung als vertrauenswürdig gelten. - - -<p> -Die von diesem Request erzeugt Response ist in <a href="examples/requestsResponses/VerifyCMSSignatureResponse.xml" target="_new"> -VerifyCMSSignatureResponse.xml</a> abgelegt. Die Response enthält die selben Informationen wie die Response zum -einfachen VerifyXMLSignatureRequest. -</div> -</td></tr></table> -<br /><br /> - - - -<table width="650" border="0" cellpadding="10" cellspacing="0"> -<tr> -<td width="170" valign="top"><br /></td> -<td valign="top"> -<hr /> -<div style="font-size:8pt; color:#909090">© 2003 <!-- Development Center, BRZ GmbH --></div> -</td></tr></table> -<br /> - - -</div> -</body> -</html>
\ No newline at end of file |