diff options
Diffstat (limited to 'spss.handbook')
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 | 
