Hi,

We actually have a ws_security/sign_enc example shipped with kit which should exactly match your scenario, you may need check that example to see the difference with your code and figure out why your code doesn't work.
And my other comment inline.
On 2010-12-10, at 上午4:27, Juan Pablo Pizarro wrote:

Hello everybody, I'm trying to use X509 certificate to sign/encrypt a
request. I have JDK6 (of Oracle/Sun), Eclipse helios, LInux Ubuntu 9.4 and
CXF 2.4 SNAPSHOT.

My config is:

           SpringBusFactory bf = new SpringBusFactory();
           URL busFile = Client.class.getResource("wssec.xml");
           Bus bus = bf.createBus(busFile.toString());
           SpringBusFactory.setDefaultBus(bus);

           Map<String,Object> outProps = new HashMap<String,Object>();
           outProps.put("action", "Timestamp Signature Encrypt");
           outProps.put("user", "DNAWSSCliente");
outProps.put("signaturePropFile", "Client_Sign.properties");
           outProps.put("signatureKeyIdentifier", "DirectReference");
           outProps.put("passwordCallbackClass",
com.casa.wss.demo.UTPasswordCallback.class.getName());
           outProps.put("signatureParts", "{Element}{
http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd }Timestamp;{Element}{http://schemas.xmlsoap.org/soap/envelope/}Body
");
outProps.put("encryptionPropFile", "Client_Sign.properties");
           outProps.put("encryptionUser", "DNAWSSCliente");
           outProps.put("signatureUser", "DNAWSS");
           outProps.put("encryptionParts", "{Element}{
http://www.w3.org/2000/09/xmldsig#}Signature;{Content}{http://schemas.xmlsoap.org/soap/envelope/ }Body
");
           outProps.put("encryptionSymAlgorithm", "
http://www.w3.org/2001/04/xmlenc#tripledes-cbc";);
           outProps.put("encryptionKeyTransportAlgorithm", "
http://www.w3.org/2001/04/xmlenc#rsa-1_5";);
WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);
//request
           bus.getInInterceptors().add(wssOut);
           bus.getInInterceptors().add(new SAAJOutInterceptor());

           Map<String,Object> inProps= new HashMap<String,Object>();
           inProps.put("action", "Timestamp Signature Encrypt");
           inProps.put("signaturePropFile", "Client_Sign.properties");
           inProps.put("passwordCallbackClass",
com.casa.wss.demo.UTPasswordCallback.class.getName());
inProps.put("decryptionPropFile", "Client_Sign.properties");
           WSS4JInInterceptor wssIn = new WSS4JInInterceptor(inProps);
//response
           bus.getInInterceptors().add(wssIn);
           bus.getInInterceptors().add(new SAAJInInterceptor());

The signature parts are not the correct, but the error is previus (in other
test I put the correct parts).

My properties file:
I think here you miss
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=dnawsscliente2
org.apache.ws.security.crypto.merlin.keystore.alias=dnawss

and how about change to
org.apache.ws.security.crypto.merlin.keystore.alias= DNAWSSCliente

Freeman

org.apache.ws.security.crypto.merlin.file=DNAWSSCliente.jks

The public and private key is into the same file.

I google and up to now, i didn't found a solution.

And the error:

log4j:WARN No appenders could be found for logger
(org.apache.cxf.bus.spring.BusApplicationContext).
log4j:WARN Please initialize the log4j system properly.
Dec 9, 2010 5:51:39 PM org.apache.cxf.bus.spring.BusApplicationContext
getConfigResources
INFO: Loaded configuration file
file:/home/jpp/JAVA/workspace/pruebaDNA8/build/classes/com/casa/wss/ demo/wssec.xml.
Dec 9, 2010 5:55:39 PM
org.apache.cxf.service.factory.ReflectionServiceFactoryBean
buildServiceFromWSDL
INFO: Creating Service {http://tempuri.org/}MenStock from WSDL:
http://wss.aduanas.gub.uy/LuciaWsSecurity/Stock.svc?wsdl
Dec 9, 2010 5:55:41 PM
org .apache.cxf.ws.security.wss4j.policyhandlers.AsymmetricBindingHandler
doSignBeforeEncrypt
WARNING: Sign before encryption failed due to : No signature username found.
Dec 9, 2010 5:55:41 PM org.apache.cxf.phase.PhaseInterceptorChain
doDefaultLogging
WARNING: Interceptor for {
http://tempuri.org/}MenStock#{http://tempuri.org/}MensajeStock has thrown
exception, unwinding now
org.apache.cxf.interceptor.Fault: No signature username found.
   at
org .apache .cxf .ws .security .wss4j .policyhandlers .AsymmetricBindingHandler .doSignBeforeEncrypt(AsymmetricBindingHandler.java:145)
   at
org .apache .cxf .ws .security .wss4j .policyhandlers .AsymmetricBindingHandler .handleBinding(AsymmetricBindingHandler.java:90)
   at
org.apache.cxf.ws.security.wss4j.PolicyBasedWSS4JOutInterceptor $ PolicyBasedWSS4JOutInterceptorInternal .handleMessage(PolicyBasedWSS4JOutInterceptor.java:139)
   at
org.apache.cxf.ws.security.wss4j.PolicyBasedWSS4JOutInterceptor $ PolicyBasedWSS4JOutInterceptorInternal .handleMessage(PolicyBasedWSS4JOutInterceptor.java:77)
   at
org .apache .cxf .phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java: 247)
   at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:516)
   at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313)
   at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:265)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
   at
org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java: 124)
   at $Proxy43.mensajeStock(Unknown Source)
   at com.casa.wss.demo.Client.main(Client.java:177)
Caused by: org.apache.cxf.ws.policy.PolicyException: No signature username
found.
   at
org .apache .cxf .ws .security .wss4j .policyhandlers .AbstractBindingBuilder .policyNotAsserted(AbstractBindingBuilder.java:283)
   at
org .apache .cxf .ws .security .wss4j .policyhandlers .AbstractBindingBuilder .getSignatureBuider(AbstractBindingBuilder.java:1349)
   at
org .apache .cxf .ws .security .wss4j .policyhandlers .AsymmetricBindingHandler.doSignature(AsymmetricBindingHandler.java: 395)
   at
org .apache .cxf .ws .security .wss4j .policyhandlers .AsymmetricBindingHandler .doSignBeforeEncrypt(AsymmetricBindingHandler.java:107)
   ... 11 more
javax.xml.ws.soap.SOAPFaultException: No signature username found.
   at
org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java: 146)
   at $Proxy43.mensajeStock(Unknown Source)
   at com.casa.wss.demo.Client.main(Client.java:177)
Caused by: org.apache.cxf.ws.policy.PolicyException: No signature username
found.
   at
org .apache .cxf .ws .security .wss4j .policyhandlers .AbstractBindingBuilder .policyNotAsserted(AbstractBindingBuilder.java:283)
   at
org .apache .cxf .ws .security .wss4j .policyhandlers .AbstractBindingBuilder .getSignatureBuider(AbstractBindingBuilder.java:1349)
   at
org .apache .cxf .ws .security .wss4j .policyhandlers .AsymmetricBindingHandler.doSignature(AsymmetricBindingHandler.java: 395)
   at
org .apache .cxf .ws .security .wss4j .policyhandlers .AsymmetricBindingHandler .doSignBeforeEncrypt(AsymmetricBindingHandler.java:107)
   at
org .apache .cxf .ws .security .wss4j .policyhandlers .AsymmetricBindingHandler .handleBinding(AsymmetricBindingHandler.java:90)
   at
org.apache.cxf.ws.security.wss4j.PolicyBasedWSS4JOutInterceptor $ PolicyBasedWSS4JOutInterceptorInternal .handleMessage(PolicyBasedWSS4JOutInterceptor.java:139)
   at
org.apache.cxf.ws.security.wss4j.PolicyBasedWSS4JOutInterceptor $ PolicyBasedWSS4JOutInterceptorInternal .handleMessage(PolicyBasedWSS4JOutInterceptor.java:77)
   at
org .apache .cxf .phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java: 247)
   at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:516)
   at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313)
   at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:265)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
   at
org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java: 124)
   ... 2 more


--
Freeman Fang

------------------------

FuseSource: http://fusesource.com
blog: http://freemanfang.blogspot.com
twitter: http://twitter.com/freemanfang
Apache Servicemix:http://servicemix.apache.org
Apache Cxf: http://cxf.apache.org
Apache Karaf: http://karaf.apache.org
Apache Felix: http://felix.apache.org

Reply via email to