Die Einbettung der client- und serverseitigen Handler

Werbung
Webservices und Web Service Security
PEA01
Alexander Kuzmierz
19.12.2003
Verwendung des AxisBasicHandler aus
org.apache.axis.handlers.BasicHandler
+ Getrennte Handler für Request und Response auf
Client- und Serverseite
Die Einbettung der client- und
serverseitigen Handler
... in der client-config.wsdd
<requestFlow>
<handler type="java:pea01_security.ClientSecurityHandler">
<parameter name="keystore" value="/usr/local/jboss/data/pea01/keystore_client"/>
</handler>
</requestFlow>
<responseFlow>
<handler type="java:pea01_security.ClientResSecurityHandler">
<parameter name="keystore" value="/usr/local/jboss/data/pea01/keystore_client"/>
</handler>
</responseFlow>
... in der web-services.xml
<requestFlow>
<handler name="ServerSecurityHandler“ type="java:ejb_access.ServerSecurityHandler">
<parameter name="keystore" value="/usr/local/jboss/data/pea01/keystore_server" />
</handler>
</requestFlow>
<responseFlow>
<handler name="ServerResSecurityHandler" type="java:ejb_access.ServerResSecurityHandler">
<parameter name="keystore" value="/usr/local/jboss/data/pea01/keystore_server" />
</handler>
</responseFlow>
Aufruf des Axis Basic Handlers
Axis ruft in der Handler-Klasse zwei Methoden auf:
-init()
-invoke(MessageContext msgCtx)
invoke(MessageContext msgCtx)
public void invoke(MessageContext msgCtx) throws AxisFault {
if (keyStore == null) throw new AxisFault("ServerSecurityHandler: key store not initialized");
try {
Message msg = msgCtx.getRequestMessage();
Document doc = msg.getSOAPEnvelope().getAsDocument();
verifyAndDecrypt(doc);
StreamSource s = new StreamSource(new StringReader(XMLUtils.DocumentToString(doc)));
msg.getSOAPPart().setContent(s);
SOAPHeaderElement secHeader =
msg.getSOAPEnvelope().getHeaderByName(WSSE_URI, SECURITY);
secHeader.setProcessed(true);
} catch (Exception e) {
throw new AxisFault("Exception in ServerSecurityHandler: " + e.getMessage());
}
}
Herunterladen