Discussion:
Digital Signature not getting validated
Rajaganapathi Rajaganapathi
2012-02-06 10:21:51 UTC
Permalink
Hi,

We are using mule 3.2.1 to incorporate WS-Security on our application. We are authenticating the user via Digital Signature.
Below is the cxf configuration on mule,

*<cxf:jaxws-service port="80" serviceClass="org.apache.hello_mule.Echo" enableMuleSoapHeaders="false" doc:name="SOAP">*
*<cxf:inInterceptors>*
*<spring:bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor"/>*
*<spring:bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">*
*<spring:constructor-arg>*
*<spring:map>*
*<spring:entry key="action" value="UsernameToken Signature Timestamp"/>*
*<spring:entry key="signaturePropFile" value="wssecurity.properties" />*
*<spring:entry key="passwordCallbackRef" value-ref="serverCallback"/>*
*</spring:map>*
*</spring:constructor-arg>*
*</spring:bean>*
*</cxf:inInterceptors>*

and the property file configuration is as,

*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=hello*
*org.apache.ws.security.crypto.merlin.keystore.alias=hello*
*org.apache.ws.security.crypto.merlin.file=hello.jks*

and we are using SOAP UI to send signed soap messages. But the certificate not getting validated and getting below exception,

*org.apache.ws.security.WSSecurityException: The signature or decryption was invalid*
at org.apache.ws.security.processor.SignatureProcessor.verifyXMLSignature(SignatureProcessor.java:529)
at org.apache.ws.security.processor.SignatureProcessor.handleToken(SignatureProcessor.java:97)
at org.apache.ws.security.WSSecurityEngine.processSecurityHeader(WSSecurityEngine.java:326)
at org.apache.ws.security.WSSecurityEngine.processSecurityHeader(WSSecurityEngine.java:243)
at org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:215)
at org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:81)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)
at org.mule.module.cxf.CxfInboundMessageProcessor.sendToDestination(CxfInboundMessageProcessor.java:296)
at org.mule.module.cxf.CxfInboundMessageProcessor.process(CxfInboundMessageProcessor.java:137)
at org.mule.module.cxf.config.FlowConfiguringMessageProcessor.process(FlowConfiguringMessageProcessor.java:50)
at org.mule.processor.chain.DefaultMessageProcessorChain.doProcess(DefaultMessageProcessorChain.java:99)
at org.mule.processor.chain.AbstractMessageProcessorChain.process(AbstractMessageProcessorChain.java:66)
at org.mule.processor.AbstractInterceptingMessageProcessorBase.processNext(AbstractInterceptingMessageProcessorBase.java:105)
at org.mule.processor.AsyncInterceptingMessageProcessor.process(AsyncInterceptingMessageProcessor.java:90)
at org.mule.processor.chain.DefaultMessageProcessorChain.doProcess(DefaultMessageProcessorChain.java:99)
at org.mule.processor.chain.AbstractMessageProcessorChain.process(AbstractMessageProcessorChain.java:66)
at org.mule.processor.AbstractInterceptingMessageProcessorBase.processNext(AbstractInterceptingMessageProcessorBase.java:105)
at org.mule.interceptor.AbstractEnvelopeInterceptor.process(AbstractEnvelopeInterceptor.java:55)
at org.mule.processor.AbstractInterceptingMessageProcessorBase.processNext(AbstractInterceptingMessageProcessorBase.java:105)
at org.mule.processor.AbstractFilteringMessageProcessor.process(AbstractFilteringMessageProcessor.java:44)
at org.mule.processor.chain.DefaultMessageProcessorChain.doProcess(DefaultMessageProcessorChain.java:99)
at org.mule.processor.chain.AbstractMessageProcessorChain.process(AbstractMessageProcessorChain.java:66)
at org.mule.processor.chain.InterceptingChainLifecycleWrapper.doProcess(InterceptingChainLifecycleWrapper.java:56)
at org.mule.processor.chain.AbstractMessageProcessorChain.process(AbstractMessageProcessorChain.java:66)
at org.mule.processor.chain.InterceptingChainLifecycleWrapper.process(InterceptingChainLifecycleWrapper.java:87)
at org.mule.construct.AbstractPipeline$1.process(AbstractPipeline.java:138)
at org.mule.processor.chain.DefaultMessageProcessorChain.doProcess(DefaultMessageProcessorChain.java:99)
at org.mule.processor.chain.AbstractMessageProcessorChain.process(AbstractMessageProcessorChain.java:66)
at org.mule.processor.chain.InterceptingChainLifecycleWrapper.doProcess(InterceptingChainLifecycleWrapper.java:56)
at org.mule.processor.chain.AbstractMessageProcessorChain.process(AbstractMessageProcessorChain.java:66)
at org.mule.processor.chain.InterceptingChainLifecycleWrapper.process(InterceptingChainLifecycleWrapper.java:87)
at org.mule.processor.chain.DefaultMessageProcessorChain.doProcess(DefaultMessageProcessorChain.java:99)
at org.mule.processor.chain.AbstractMessageProcessorChain.process(AbstractMessageProcessorChain.java:66)
at org.mule.processor.chain.InterceptingChainLifecycleWrapper.doProcess(InterceptingChainLifecycleWrapper.java:56)
at org.mule.processor.chain.AbstractMessageProcessorChain.process(AbstractMessageProcessorChain.java:66)
at org.mule.processor.chain.InterceptingChainLifecycleWrapper.process(InterceptingChainLifecycleWrapper.java:87)
at org.mule.transport.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:195)
at org.mule.transport.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:163)
at org.mule.transport.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:150)
at org.mule.transport.http.HttpMessageReceiver$HttpWorker.doRequest(HttpMessageReceiver.java:299)
at org.mule.transport.http.HttpMessageReceiver$HttpWorker.processRequest(HttpMessageReceiver.java:258)
at org.mule.transport.http.HttpMessageReceiver$HttpWorker.run(HttpMessageReceiver.java:163)
at org.mule.work.WorkerContext.run(WorkerContext.java:310)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

It would be great help if anyone tell us where we are wrong on this.

Thanks in advance.

Reagrds,
Raja

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

http://xircles.codehaus.org/manage_email
Rajaganapathi Rajaganapathi
2012-02-08 11:10:23 UTC
Permalink
Hi All,

Digital Signature validation on WS-Security is working fine for me.
I have created java client to validate the keystore and it is getting validated successfully.
While sending a validation request from SOAP UI it is not working.
Since we have to set proper Canonicalization and Signature Algorithms in the soap message.

below is the java client code to send signed soap message,

+Echo service = createService("http://localhost:8080/services/greeter?wsdl",+
+getUsernameTokenProps("UsernameToken Signature Timestamp", "wssecurity.properties"));+
+System.out.println(service.echo("Mule"));+

+protected static Map getUsernameTokenProps(String action, String propertiesFile)+


+{+
+Map<String, Object> wss4jProps = new HashMap<String, Object>();+
+wss4jProps.put("action", action);+
+wss4jProps.put("signaturePropFile", propertiesFile);+
+wss4jProps.put("encryptionPropFile", propertiesFile);+
+wss4jProps.put("user", "key");+
+wss4jProps.put("encryptionUser", "key");+
+wss4jProps.put("passwordCallbackClass", ServerPasswordCallback.class.getName());+
+return wss4jProps;+
+}+

+public static Echo createService(String url, Map wss4jProps)+
+{+
+URL wsdlDocumentLocation;+
+try+
+{+
+wsdlDocumentLocation = new URL(url);+
+}+
+catch (MalformedURLException e)+
+{+
+throw new RuntimeException("Invalid test definition", e);+
+}+
+QName serviceName = new QName("http://hello_mule.apache.org/", "EchoService");+

+Service dynService = Service.create(wsdlDocumentLocation, serviceName);+
+Echo service = dynService.getPort(Echo.class);+
+Client client = ClientProxy.getClient(service);+

+if (wss4jProps != null)+
+{+
+client.getOutInterceptors().add(new WSS4JOutInterceptor(wss4jProps));+
+}+

+return service;+
+}+




Cheers.



Regards,
Rajaganapathi.

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

http://xircles.codehaus.org/manage_email

Loading...