aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgregor <gregor@d688527b-c9ab-4aba-bd8d-4036d912da1d>2005-03-29 14:32:08 +0000
committergregor <gregor@d688527b-c9ab-4aba-bd8d-4036d912da1d>2005-03-29 14:32:08 +0000
commitac49c7b86f7f25ff408d8836dbc77451d73f5928 (patch)
tree804892740083ea7d594d1f5114fc2c3fe9afcfd8
parent116897637432b208eeb9c6b1485a8d5347b9e86a (diff)
downloadmoa-id-spss-ac49c7b86f7f25ff408d8836dbc77451d73f5928.tar.gz
moa-id-spss-ac49c7b86f7f25ff408d8836dbc77451d73f5928.tar.bz2
moa-id-spss-ac49c7b86f7f25ff408d8836dbc77451d73f5928.zip
Konfiguration auf Properties-file umgestellt; Klassenhierarchie eingeführt (HTTP-HTTPSServerAuth-HTTPSClientAuth).
git-svn-id: https://joinup.ec.europa.eu/svn/moa-idspss/trunk@281 d688527b-c9ab-4aba-bd8d-4036d912da1d
-rw-r--r--spss.handbook/clients/webservice/conf/http.properties33
-rw-r--r--spss.handbook/clients/webservice/src/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTP.java10
-rw-r--r--spss.handbook/clients/webservice/src/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSClientAuth.java213
-rw-r--r--spss.handbook/clients/webservice/src/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSServerAuth.java186
4 files changed, 207 insertions, 235 deletions
diff --git a/spss.handbook/clients/webservice/conf/http.properties b/spss.handbook/clients/webservice/conf/http.properties
index 5e97b24f6..c363c961f 100644
--- a/spss.handbook/clients/webservice/conf/http.properties
+++ b/spss.handbook/clients/webservice/conf/http.properties
@@ -1,5 +1,5 @@
###
-# Properties für den HTTP Client
+# Properties für den HTTP(S) Client
###
#
@@ -11,6 +11,7 @@ signServiceQName = SignatureCreation
# Zugangspunkt des Webservices
signServiceEndPoint = http://localhost:8080/moa-spss/services/SignatureCreation
+#signServiceEndPoint = https://localhost:8443/moa-spss/services/SignatureCreation
# Name des zu sendenden Signaturerstellungsrequests (entweder absolute
# oder relative Pfadangabe; eine relative Pfadangabe wird relativ zum
@@ -30,6 +31,7 @@ verifyServiceQName = SignatureVerification
# Zugangspunkt des Webservices
verifyServiceEndPoint = http://localhost:8080/moa-spss/services/SignatureVerification
+#verifyServiceEndPoint = https://localhost:8443/moa-spss/services/SignatureVerification
# Name des zu sendenden Signaturprüfrequests (entweder absolute
# oder relative Pfadangabe; eine relative Pfadangabe wird relativ zum
@@ -41,3 +43,32 @@ verifyRequest=clients/webservice/resources/requests/VerifyCMSSignatureRequest.Si
#verifyRequest=clients/webservice/resources/requests/VerifyXMLSignatureRequest.Supplements.xml
#verifyRequest=clients/webservice/resources/requests/VerifyXMLSignatureRequest.SigManifest.xml
#verifyRequest=clients/webservice/resources/requests/VerifyXMLSignatureRequest.XMLDSigManifest.xml
+
+#
+# JSSE-Konfiguration
+#
+
+# Typ des JSSE-Truststores (entweder "JKS" für einen Java Key Store oder
+# "PKCS12" für eine PKCS#12-Datei).
+ssl.truststore.type = JKS
+
+# Relativer oder absoluter Pfad zum JSSE-Truststore. Ein relativer Pfad
+# wird relativ zum Arbeitsverzeichnis der Java VM interpretiert).
+ssl.truststore.loc = clients/webservice/resources/sslKeys/customer1/trustedServers(pwd=servers).keystore
+#ssl.truststore.loc = clients/webservice/resources/sslKeys/customer2/trustedServers(pwd=servers).keystore
+
+# Passwort für den JSSE-Truststore.
+ssl.truststore.pwd = servers
+
+# Typ des JSSE-Keystores (entweder "JKS" für einen Java Key Store oder
+# "PKCS12" für eine PKCS#12-Datei).
+ssl.keystore.type = PKCS12
+
+# Relativer oder absoluter Pfad zum JSSE-Keystore. Ein relativer Pfad
+# wird relativ zum Arbeitsverzeichnis der Java VM interpretiert).
+ssl.keystore.loc = clients/webservice/resources/sslKeys/customer1/moa-ssl-kunde1(pwd=kunde1).p12
+#ssl.keystore.loc = clients/webservice/resources/sslKeys/customer2/moa-ssl-kunde2(pwd=kunde2).p12
+
+# Passwort für den JSSE-Keystore.
+ssl.keystore.pwd = kunde1
+#ssl.keystore.pwd = kunde2
diff --git a/spss.handbook/clients/webservice/src/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTP.java b/spss.handbook/clients/webservice/src/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTP.java
index 46378fbe8..ce38a0932 100644
--- a/spss.handbook/clients/webservice/src/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTP.java
+++ b/spss.handbook/clients/webservice/src/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTP.java
@@ -91,7 +91,7 @@ public class HTTP
/**
* Prüft, ob das Beispiel korrekt verwendet wird.
*
- * @param args Die Aufrufparameter für das Beispiel.
+ * @param args Die Aufrufparameter für das Beispiel. Siehe {@link HTTP#main(String[])}.
*
* @param exampleName Der Name dieses Beispiels, der im Hilfetext gedruckt wird.
*/
@@ -103,6 +103,14 @@ public class HTTP
}
}
+ /**
+ * Erzeugt den MOA Client. Es erfolgt die Auswertung der übergebenen Aufrufparameter.
+ *
+ * @param args Die Aufrufparameter für das Beispiel. Siehe {@link HTTP#main(String[])}.
+ *
+ * @throws Exception wenn der MOA Client mit den übergebenen Aufrufparametern nicht korrekt erzeugt
+ * werden konnte.
+ */
protected HTTP(String[] args) throws Exception
{
props_ = new Properties();
diff --git a/spss.handbook/clients/webservice/src/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSClientAuth.java b/spss.handbook/clients/webservice/src/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSClientAuth.java
index ad7ecb6b6..484dfc313 100644
--- a/spss.handbook/clients/webservice/src/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSClientAuth.java
+++ b/spss.handbook/clients/webservice/src/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSClientAuth.java
@@ -1,163 +1,122 @@
package at.gv.egovernment.moa.spss.handbook.clients.webservice;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.security.Security;
-import java.util.Vector;
-
-import javax.xml.namespace.QName;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.rpc.Call;
-import javax.xml.rpc.Service;
-import javax.xml.rpc.ServiceFactory;
-
-import org.apache.axis.message.SOAPBodyElement;
-import org.apache.xml.serialize.OutputFormat;
-import org.apache.xml.serialize.XMLSerializer;
-import org.w3c.dom.Document;
-
-import com.sun.net.ssl.internal.ssl.Provider;
/**
* Diese Klasse implementiert einen einfachen Client für das MOA SP/SS Webservice mittels Apache Axis. Die
* Verbindung erfolgt gesichert über SSL, und zwar sowohl mit Server- und Clientauthentisierung.
*/
-public class HTTPSClientAuth
+public class HTTPSClientAuth extends HTTPSServerAuth
{
- // Zugangspunkt für Signaturerstellung (SS)
- private static final QName SERVICE_QNAME_ = new QName("SignatureCreation");
- private static final String SECURE_ENDPOINT_ = "https://localhost:8443/moa-spss/services/SignatureCreation";
-
- // Zugangspunkt für Signaturprüfung (SP)
-// private static final QName SERVICE_QNAME_ = new QName("SignatureVerification");
-// private static final String SECURE_ENDPOINT_ = "https://localhost:8443/moa-spss/services/SignatureVerification";
-
- // Datei mit dem zu sendenden XML-Request
- private static final String XML_REQUEST_FILENAME_ =
- "clients/webservice/resources/requests/CreateXMLSignatureRequest.Simple.xml";
-// "clients/webservice/resources/requests/CreateXMLSignatureRequest.Refs.xml";
-// "clients/webservice/resources/requests/CreateXMLSignatureRequest.Transforms.xml";
-// "clients/webservice/resources/requests/CreateXMLSignatureRequest.Supplements.xml";
-// "clients/webservice/resources/requests/VerifyCMSSignatureRequest.Simple.xml";
-// "clients/webservice/resources/requests/VerifyCMSSignatureRequest.Extended.xml";
-// "clients/webservice/resources/requests/VerifyXMLSignatureRequest.Simple.xml";
-// "clients/webservice/resources/requests/VerifyXMLSignatureRequest.Enveloped.xml";
-// "clients/webservice/resources/requests/VerifyXMLSignatureRequest.Supplements.xml";
-// "clients/webservice/resources/requests/VerifyXMLSignatureRequest.SigManifest.xml";
-// "clients/webservice/resources/requests/VerifyXMLSignatureRequest.XMLDSigManifest.xml";
-
- // SSL Konstanten
- public static final String HANDLER = "java.protocol.handler.pkgs";
-
+ // JSSE Konstanten
public static final String KEYSTORE = "javax.net.ssl.keyStore";
public static final String KEYSTOREPASSWORD = "javax.net.ssl.keyStorePassword";
public static final String KEYSTORETYPE = "javax.net.ssl.keyStoreType";
- public static final String TRUSTSTORE = "javax.net.ssl.trustStore";
- public static final String TRUSTSTOREPASSWORD = "javax.net.ssl.trustStorePassword";
- public static final String TRUSTSTORETYPE = "javax.net.ssl.trustStoreType";
-
/**
* Methode main.
*
* Enthält den Beispielcode der nötig ist um von Java aus auf MOA-SPSS zugreifen zu können. Der Zugriff
- * passiert über das AXIS-Framework. Die Verbindung ist eine SSL Verbindung mit Clientauthentisierung.
+ * passiert über das AXIS-Framework. Die Verbindung erfolgt gesichert über SSL, und zwar sowohl mit
+ * Server- und Clientauthentisierung.
*
- * @param args Wird nicht verwendet.
+ * @param args <ul>
+ * <li>
+ * args[0] enthält entweder die Bezeichnung "sign" oder "verify" zur Kennzeichnung,
+ * ob ein Signaturerstellungsrequest, oder ein Signaturprüfrequest gesendet werden soll.
+ * </li>
+ * <li>
+ * args[1] enthält einen Verweis auf eine Property-Datei, die die nähere Konfiguration
+ * für dieses Beispiel enthält. Der Verweis ist enthält entweder eine absolute oder eine
+ * relative Pfadangabe, wobei eine relative Angabe als relativ zum Arbeitsverzeichnis der
+ * Java VM interpretiert wird. Folgende Properties müssen in der Properties-Datei vorhanden
+ * sein:
+ * <ul>
+ * <li>
+ * <code>signServiceQName</code>: Name des Webservices, fix "SignatureCreation"
+ * </li>
+ * <li>
+ * <code>signServiceEndPoint</code>: Zugangspunkt des Webservices (URL)
+ * </li>
+ * <li>
+ * <code>signRequest</code>: Name des zu sendenden Signaturerstellungsrequests (entweder
+ * absolute oder relative Pfadangabe; eine relative Pfadangabe wird relativ zum
+ * Arbeitsverzeichnis der Java VM interpretiert)
+ * </li>
+ * <li>
+ * <code>verifyServiceQName</code>: Name des Webservices, fix "SignatureVerification"
+ * </li>
+ * <li>
+ * <code>verifyServiceEndPoint</code>: Zugangspunkt des Webservices (URL)
+ * </li>
+ * <li>
+ * <code>verifyRequest</code>: Name des zu sendenden Signaturprüfrequests (entweder
+ * absolute oder relative Pfadangabe; eine relative Pfadangabe wird relativ zum
+ * Arbeitsverzeichnis der Java VM interpretiert)
+ * </li>
+ * <li>
+ * <code>ssl.truststore.type</code>: Typ des JSSE-Truststores (entweder "JKS" für einen
+ * Java Key Store oder "PKCS12" für eine PKCS#12-Datei).
+ * </li>
+ * <li><code>ssl.truststore.type</code>: Relativer oder absoluter Pfad zum JSSE-Truststore.
+ * Ein relativer Pfad wird relativ zum Arbeitsverzeichnis der Java VM interpretiert).
+ * </li>
+ * <li><code>ssl.truststore.pwd</code>: Passwort für den JSSE-Truststore.
+ * </li>
+ * <li>
+ * <code>ssl.keystore.type</code>: Typ des JSSE-Keystores (entweder "JKS" für einen
+ * Java Key Store oder "PKCS12" für eine PKCS#12-Datei).
+ * </li>
+ * <li><code>ssl.keystore.type</code>: Relativer oder absoluter Pfad zum JSSE-Keystore.
+ * Ein relativer Pfad wird relativ zum Arbeitsverzeichnis der Java VM interpretiert).
+ * </li>
+ * <li><code>ssl.keystore.pwd</code>: Passwort für den JSSE-Keystore.
+ * </li>
+ * </ul>
+ * </li>
+ * </ul>
*/
public static void main(String[] args)
{
try
{
- configureSSL();
-
- // Datei mit Request einlesen
- FileInputStream inputStream = new FileInputStream(XML_REQUEST_FILENAME_);
-
- // Parser/DOMBuilder instanzieren
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
-
- // XML Datei in einen DOM-Baum umwandeln
- Document root_request = builder.parse(inputStream);
-
- // AXIS-Server instanzieren
- Service service = ServiceFactory.newInstance().createService(SERVICE_QNAME_);
-
- // Call öffnen
- Call call = service.createCall();
-
- // Neues BodyElement anlegen und mit dem DOM-Baum füllen
- SOAPBodyElement body = new SOAPBodyElement(root_request.getDocumentElement());
- SOAPBodyElement[] params = new SOAPBodyElement[]
- {
- body
- };
-
- // Call mit Endpoint verknüpfen
- call.setTargetEndpointAddress(SECURE_ENDPOINT_);
-
- // Call auslösen und die Antworten speichern
- System.out.println("Calling ...");
- Vector responses = (Vector) call.invoke(params);
-
- // Erstes BodyElement auslesen
- SOAPBodyElement response = (SOAPBodyElement) responses.get(0);
-
- // Aus der Response den DOM-Baum lesen
- Document root_response = response.getAsDocument();
- System.out.println("Return ...");
-
- // XML-Formatierung konfiguieren
- OutputFormat format = new OutputFormat((Document) root_response);
- format.setLineSeparator("\n");
- format.setIndenting(false);
- format.setPreserveSpace(true);
- format.setOmitXMLDeclaration(false);
- format.setEncoding("UTF-8");
-
- // Ausgabe der Webservice-Antwort auf die Konsole
- XMLSerializer conSerializer = new XMLSerializer(System.out, format);
- conSerializer.serialize(root_response);
-
- // Ausgabe der Webservice-Antwort in Datei
- String responseFile = XML_REQUEST_FILENAME_.substring(0, XML_REQUEST_FILENAME_.lastIndexOf('.'))
- + ".response.xml";
- XMLSerializer fileSerializer = new XMLSerializer(new FileOutputStream(responseFile), format);
- fileSerializer.serialize(root_response);
+ // Prüfen, ob Beispiel korrekt verwendet wird
+ checkArgs(args, "HTTP");
+
+ // Initialisieren des Clients
+ HTTPSClientAuth httpClient = new HTTPSClientAuth(args);
+
+ // Ausführen der Serviceabfrage
+ httpClient.execute(args[0]);
}
catch (Exception e)
{
e.printStackTrace();
}
}
-
+
+ /**
+ * Erzeugt den MOA Client. Es erfolgt die Auswertung der übergebenen Aufrufparameter.
+ *
+ * @param args Die Aufrufparameter für das Beispiel. Siehe {@link HTTPSClientAuth#main(String[])}.
+ *
+ * @throws Exception wenn der MOA Client mit den übergebenen Aufrufparametern nicht korrekt erzeugt
+ * werden konnte.
+ */
+ protected HTTPSClientAuth(String[] args) throws Exception
+ {
+ super(args);
+ }
+
/**
* Konfiguriert JSSE für eine SSL-Verbindung mit Client- und Serverauthentisierung.
*/
- private static void configureSSL()
+ protected void configureSSL() throws Exception
{
- // Aktivieren Sie die nächste Zeile für detailliertes Logging des SSL-Verbindungsaufbaus
- // System.setProperty("javax.net.debug", "all");
+ super.configureSSL();
- Security.addProvider(new Provider());
- System.setProperty(HANDLER, "com.sun.net.ssl.internal.www.protocol");
-
// Konfiguriere Key-Store (enthält privaten Schlüssel und Zertifikat des Clients)
- System.setProperty(KEYSTORETYPE, "PKCS12");
- System.setProperty(KEYSTORE,
- "clients/webservice/resources/sslKeys/customer1/moa-ssl-kunde1(pwd=kunde1).p12");
-// "clients/webservice/resources/sslKeys/customer2/moa-ssl-kunde2(pwd=kunde2).p12");
- System.setProperty(KEYSTOREPASSWORD, "kunde1");
-// System.setProperty(KEYSTOREPASSWORD, "kunde2");
-
- // Konfiguriere Trust-Store (enthält SSL-Zertifikat des MOA Services, dem vertraut wird)
- System.setProperty(TRUSTSTORETYPE, "JKS");
- System.setProperty(TRUSTSTORE,
- "clients/webservice/resources/sslKeys/customer1/trustedServers(pwd=servers).keystore");
-// "clients/webservice/resources/sslKeys/customer2/trustedServers(pwd=servers).keystore");
- System.setProperty(TRUSTSTOREPASSWORD, "servers");
+ System.setProperty(KEYSTORETYPE, getProperty("ssl.keystore.type"));
+ System.setProperty(KEYSTORE, getProperty("ssl.keystore.loc"));
+ System.setProperty(KEYSTOREPASSWORD, getProperty("ssl.keystore.pwd"));
}
} \ No newline at end of file
diff --git a/spss.handbook/clients/webservice/src/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSServerAuth.java b/spss.handbook/clients/webservice/src/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSServerAuth.java
index c9f67148f..35bff1c57 100644
--- a/spss.handbook/clients/webservice/src/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSServerAuth.java
+++ b/spss.handbook/clients/webservice/src/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSServerAuth.java
@@ -1,21 +1,6 @@
package at.gv.egovernment.moa.spss.handbook.clients.webservice;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
import java.security.Security;
-import java.util.Vector;
-
-import javax.xml.namespace.QName;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.rpc.Call;
-import javax.xml.rpc.Service;
-import javax.xml.rpc.ServiceFactory;
-
-import org.apache.axis.message.SOAPBodyElement;
-import org.apache.xml.serialize.OutputFormat;
-import org.apache.xml.serialize.XMLSerializer;
-import org.w3c.dom.Document;
import com.sun.net.ssl.internal.ssl.Provider;
@@ -23,33 +8,10 @@ import com.sun.net.ssl.internal.ssl.Provider;
* Diese Klasse implementiert einen einfachen Client für das MOA SP/SS Webservice mittels Apache Axis. Die
* Verbindung erfolgt gesichert über SSL, und zwar nur mit Serverauthentisierung.
*/
-public class HTTPSServerAuth
+public class HTTPSServerAuth extends HTTP
{
- // Zugangspunkt für Signaturerstellung (SS)
- private static final QName SERVICE_QNAME_ = new QName("SignatureCreation");
- private static final String SECURE_ENDPOINT_ = "https://localhost:8443/moa-spss/services/SignatureCreation";
-
- // Zugangspunkt für Signaturprüfung (SP)
-// private static final QName SERVICE_QNAME_ = new QName("SignatureVerification");
-// private static final String SECURE_ENDPOINT_ = "https://localhost:8443/moa-spss/services/SignatureVerification";
-
- // Datei mit dem zu sendenden XML-Request
- private static final String XML_REQUEST_FILENAME_ =
- "clients/webservice/resources/requests/CreateXMLSignatureRequest.Simple.xml";
-// "clients/webservice/resources/requests/CreateXMLSignatureRequest.Refs.xml";
-// "clients/webservice/resources/requests/CreateXMLSignatureRequest.Transforms.xml";
-// "clients/webservice/resources/requests/CreateXMLSignatureRequest.Supplements.xml";
-// "clients/webservice/resources/requests/VerifyCMSSignatureRequest.Simple.xml";
-// "clients/webservice/resources/requests/VerifyCMSSignatureRequest.Extended.xml";
-// "clients/webservice/resources/requests/VerifyXMLSignatureRequest.Simple.xml";
-// "clients/webservice/resources/requests/VerifyXMLSignatureRequest.Enveloped.xml";
-// "clients/webservice/resources/requests/VerifyXMLSignatureRequest.Supplements.xml";
-// "clients/webservice/resources/requests/VerifyXMLSignatureRequest.SigManifest.xml";
-// "clients/webservice/resources/requests/VerifyXMLSignatureRequest.XMLDSigManifest.xml";
-
- // SSL Konstanten
+ // JSSE Konstanten
public static final String HANDLER = "java.protocol.handler.pkgs";
-
public static final String TRUSTSTORE = "javax.net.ssl.trustStore";
public static final String TRUSTSTOREPASSWORD = "javax.net.ssl.trustStorePassword";
public static final String TRUSTSTORETYPE = "javax.net.ssl.trustStoreType";
@@ -58,94 +20,106 @@ public class HTTPSServerAuth
* Methode main.
*
* Enthält den Beispielcode der nötig ist um von Java aus auf MOA-SPSS zugreifen zu können. Der Zugriff
- * passiert über das AXIS-Framework. Die Verbindung ist eine SSL Verbindung mit Serverauthentisierung.
+ * passiert über das AXIS-Framework. Die Verbindung erfolgt gesichert über SSL, und zwar nur mit
+ * Serverauthentisierung.
*
- * @param args Wird nicht verwendet.
+ * @param args <ul>
+ * <li>
+ * args[0] enthält entweder die Bezeichnung "sign" oder "verify" zur Kennzeichnung,
+ * ob ein Signaturerstellungsrequest, oder ein Signaturprüfrequest gesendet werden soll.
+ * </li>
+ * <li>
+ * args[1] enthält einen Verweis auf eine Property-Datei, die die nähere Konfiguration
+ * für dieses Beispiel enthält. Der Verweis ist enthält entweder eine absolute oder eine
+ * relative Pfadangabe, wobei eine relative Angabe als relativ zum Arbeitsverzeichnis der
+ * Java VM interpretiert wird. Folgende Properties müssen in der Properties-Datei vorhanden
+ * sein:
+ * <ul>
+ * <li>
+ * <code>signServiceQName</code>: Name des Webservices, fix "SignatureCreation"
+ * </li>
+ * <li>
+ * <code>signServiceEndPoint</code>: Zugangspunkt des Webservices (URL)
+ * </li>
+ * <li>
+ * <code>signRequest</code>: Name des zu sendenden Signaturerstellungsrequests (entweder
+ * absolute oder relative Pfadangabe; eine relative Pfadangabe wird relativ zum
+ * Arbeitsverzeichnis der Java VM interpretiert)
+ * </li>
+ * <li>
+ * <code>verifyServiceQName</code>: Name des Webservices, fix "SignatureVerification"
+ * </li>
+ * <li>
+ * <code>verifyServiceEndPoint</code>: Zugangspunkt des Webservices (URL)
+ * </li>
+ * <li>
+ * <code>verifyRequest</code>: Name des zu sendenden Signaturprüfrequests (entweder
+ * absolute oder relative Pfadangabe; eine relative Pfadangabe wird relativ zum
+ * Arbeitsverzeichnis der Java VM interpretiert)
+ * </li>
+ * <li>
+ * <code>ssl.truststore.type</code>: Typ des JSSE-Truststores (entweder "JKS" für einen
+ * Java Key Store oder "PKCS12" für eine PKCS#12-Datei).
+ * </li>
+ * <li><code>ssl.truststore.type</code>: Relativer oder absoluter Pfad zum JSSE-Truststore.
+ * Ein relativer Pfad wird relativ zum Arbeitsverzeichnis der Java VM interpretiert).
+ * </li>
+ * <li><code>ssl.truststore.pwd</code>: Passwort für den JSSE-Truststore.
+ * </li>
+ * </ul>
+ * </li>
+ * </ul>
*/
public static void main(String[] args)
{
try
{
- configureSSL();
-
- // Datei mit Request einlesen
- FileInputStream inputStream = new FileInputStream(XML_REQUEST_FILENAME_);
-
- // Parser/DOMBuilder instanzieren
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
-
- // XML Datei in einen DOM-Baum umwandeln
- Document root_request = builder.parse(inputStream);
-
- // AXIS-Server instanzieren
- Service service = ServiceFactory.newInstance().createService(SERVICE_QNAME_);
-
- // Call öffnen
- Call call = service.createCall();
-
- // Neues BodyElement anlegen und mit dem DOM-Baum füllen
- SOAPBodyElement body = new SOAPBodyElement(root_request.getDocumentElement());
- SOAPBodyElement[] params = new SOAPBodyElement[]
- {
- body
- };
-
- // Call mit Endpoint verknüpfen
- call.setTargetEndpointAddress(SECURE_ENDPOINT_);
-
- // Call auslösen und die Antworten speichern
- System.out.println("Calling ...");
- Vector responses = (Vector) call.invoke(params);
-
- // Erstes BodyElement auslesen
- SOAPBodyElement response = (SOAPBodyElement) responses.get(0);
-
- // Aus der Response den DOM-Baum lesen
- Document root_response = response.getAsDocument();
- System.out.println("Return ...");
-
- // XML-Formatierung konfiguieren
- OutputFormat format = new OutputFormat((Document) root_response);
- format.setLineSeparator("\n");
- format.setIndenting(false);
- format.setPreserveSpace(true);
- format.setOmitXMLDeclaration(false);
- format.setEncoding("UTF-8");
-
- // Ausgabe der Webservice-Antwort auf die Konsole
- XMLSerializer conSerializer = new XMLSerializer(System.out, format);
- conSerializer.serialize(root_response);
-
- // Ausgabe der Webservice-Antwort in Datei
- String responseFile = XML_REQUEST_FILENAME_.substring(0, XML_REQUEST_FILENAME_.lastIndexOf('.'))
- + ".response.xml";
- XMLSerializer fileSerializer = new XMLSerializer(new FileOutputStream(responseFile), format);
- fileSerializer.serialize(root_response);
+ // Prüfen, ob Beispiel korrekt verwendet wird
+ checkArgs(args, "HTTP");
+
+ // Initialisieren des Clients
+ HTTPSServerAuth httpClient = new HTTPSServerAuth(args);
+
+ // Ausführen der Serviceabfrage
+ httpClient.execute(args[0]);
}
catch (Exception e)
{
e.printStackTrace();
}
}
-
+
+ /**
+ * Erzeugt den MOA Client. Es erfolgt die Auswertung der übergebenen Aufrufparameter.
+ *
+ * @param args Die Aufrufparameter für das Beispiel. Siehe {@link HTTPSServerAuth#main(String[])}.
+ *
+ * @throws Exception wenn der MOA Client mit den übergebenen Aufrufparametern nicht korrekt erzeugt
+ * werden konnte.
+ */
+ protected HTTPSServerAuth(String[] args) throws Exception
+ {
+ super(args);
+ configureSSL();
+ }
+
/**
* Konfiguriert JSSE für eine SSL-Verbindung mit Serverauthentisierung.
+ *
+ * @throws Exception wenn die Konfiguration von JSSE fehlschlägt.
*/
- private static void configureSSL()
+ protected void configureSSL() throws Exception
{
// Aktivieren Sie die nächste Zeile für detailliertes Logging des SSL-Verbindungsaufbaus
// System.setProperty("javax.net.debug", "all");
+ // Setzen des korrekten Protokoll-Handlers für https
Security.addProvider(new Provider());
System.setProperty(HANDLER, "com.sun.net.ssl.internal.www.protocol");
// Konfiguriere Trust-Store (enthält SSL-Zertifikat des MOA Services, dem vertraut wird)
- System.setProperty(TRUSTSTORETYPE, "JKS");
- System.setProperty(TRUSTSTORE,
- "clients/webservice/resources/sslKeys/customer1/trustedServers(pwd=servers).keystore");
-// "clients/webservice/resources/sslKeys/customer2/trustedServers(pwd=servers).keystore");
- System.setProperty(TRUSTSTOREPASSWORD, "servers");
+ System.setProperty(TRUSTSTORETYPE, getProperty("ssl.truststore.type"));
+ System.setProperty(TRUSTSTORE, getProperty("ssl.truststore.loc"));
+ System.setProperty(TRUSTSTOREPASSWORD, getProperty("ssl.truststore.pwd"));
}
} \ No newline at end of file