SOAP XML Encryption von Axis Stubs

misiu

Grünschnabel
Hallo zusammen,

ich habe Probleme bei der Verschlüsselung eines XML Files. Ich habe mittels WSDL2Java die erforderlichen Client-Klassen erstellt. Ich kann erfolgreich den Stub erzeugen und unverschlüsselte Request beim entsprechenden Webservice funktionieren auch.
Nun möchte ich aber den Body des SOAP-Request mit einem X.509 Zertifikat verschlüsseln und finde dazu leider keine Beispiele. Wie kann ich die entsprechenden Informationen in den Header des SOAP-Request integrieren? Der Stub stellt mir ja keine derartige Methode zur Verfügung. Hat jemand von euch derartiges schon realisiert oder hat jemand eine Idee?

Grüße

Jan
 
Hallo Tom,

danke für deinen Hinweis, ich konnte es heute erst ausprobieren. Erst hatte ich noch eine Exception von OpenSAML, hab aber das jar-File in den Classpath von Axis integriert und nun funktioniert auch der Request. Also danke nochmal und noch eine schöne Woche.

Gruß

Jan
 
Also ich hab jetzt 2 Dateien erstellt.

Einmal die client_crypto.properties:

******************
org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
org.apache.ws.security.crypto.merlin.keystore.type=jks
org.apache.ws.security.crypto.merlin.keystore.password=geheim
org.apache.ws.security.crypto.merlin.keystore.alias=foo
org.apache.ws.security.crypto.merlin.file=Path-to-KeyStore/keystore.jks

******************

Zum anderen die client_deploy.wsdd:

******************
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<transport name="http" pivot="java:org.apache.axis.transport.http.HTTPSender" />
<globalConfiguration>
<requestFlow>
<handler type="java:org.apache.ws.axis.security.WSDoAllSender">
<parameter name="action" value="Encrypt" />
<parameter name="encryptionPropFile" value="client_crypto.properties" />
<parameter name="encryptionKeyIdentifier" value="DirectReference" />
<parameter name="encryptionUser" value="foo" />
</handler>
</requestFlow>
</globalConfiguration>
</deployment>

******************
Damit wird das Zertifikat aus dem Keystore geladen und defaultmäßig der Body des Request verschlüsselt.
Danach wird dann durch folgende Zeile das Konfigurationsfile geladen:

******************
EngineConfiguration config = new FileProvider("client_deploy.wsdd");

******************

und danach an den Konstruktor der ServiceLocator-Klasse übergeben:

******************
SomeServiceLocator loc = new SomeServiceLocator(config);

******************

Nun kann man den Stub für den Request erzeugen und damit arbeiten:

******************
SomeServiceStub service = loc.getPort();

******************

Ich hoffe das war einigermaßen verständlich und auch richtig von mir.

Gruß

Jan
 
Zurück