diff options
Diffstat (limited to 'spss/handbook/clients/webservice/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSServerAuth.java')
-rw-r--r-- | spss/handbook/clients/webservice/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSServerAuth.java | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/spss/handbook/clients/webservice/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSServerAuth.java b/spss/handbook/clients/webservice/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSServerAuth.java new file mode 100644 index 000000000..4ed04efc5 --- /dev/null +++ b/spss/handbook/clients/webservice/src/main/java/at/gv/egovernment/moa/spss/handbook/clients/webservice/HTTPSServerAuth.java @@ -0,0 +1,140 @@ +/* +* Copyright 2003 Federal Chancellery Austria +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +package at.gv.egovernment.moa.spss.handbook.clients.webservice; + +import java.security.Security; + +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 extends HTTP +{ + // 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"; + + /** + * 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 erfolgt gesichert über SSL, und zwar nur mit + * Serverauthentisierung. + * + * @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 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 + { + // 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. + */ + 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, getProperty("ssl.truststore.type")); + System.setProperty(TRUSTSTORE, getProperty("ssl.truststore.loc")); + System.setProperty(TRUSTSTOREPASSWORD, getProperty("ssl.truststore.pwd")); + } +}
\ No newline at end of file |