40 likes | 198 Views
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.
E N D
Webservices und Web Service Security PEA01 Alexander Kuzmierz 19.12.2003
Verwendung des AxisBasicHandler ausorg.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()); } }