Hi Daniel,

thanks for the help. I modified the code as you suggested, and I was able to
send and process an encrypted message.
I did not get the null pointer exception anymore (maybe because I upgraded
to 2.0.1).

Thanks everyone for your precious help! :-)))

Davide



Davide Gesino wrote:
> 
> Hi Colm,
> 
> thanks for the help.
> 
> The server side wss4j properties file looks like this:
> 
> 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=keyStorePassword
> org.apache.ws.security.crypto.merlin.alias.password=myAliasPassword
> org.apache.ws.security.crypto.merlin.keystore.alias=myAlias
> org.apache.ws.security.crypto.merlin.file=META-INF/publicstore.jks
> 
> Do I need other informations in the spring beans.xml file to tell the
> server I am using just a plain taxt password and not a CallbackHandler
> implementation?
> 
> Anyway I have another problem.
> I updated the project to CXF 2.0.1 and the following code seems not to
> work anymore:
> 
> URL wsdlURL = new URL("file:C:/schema/CreditReportSimple.wsdl");
> 
> ReportService service = new ReportService(wsdlURL, SERVICE_NAME);
> CreditReportPortType port =
> service.getCreditReportPortType();org.apache.cxf.endpoint.Client client =
> org.apache.cxf.frontend.ClientProxy.getClient(service); 
> 
> When I call the last line of code now I get the following exception:
> 
> Exception in thread "main" java.lang.IllegalArgumentException: not a proxy
> instance
>       at java.lang.reflect.Proxy.getInvocationHandler(Unknown Source)
>       at org.apache.cxf.frontend.ClientProxy.getClient(ClientProxy.java:87)
>       at
> org.netbeans.j2ee.wsdl.creditreport.CreditReportPortTypeClient.main(CreditReportPortTypeClient.java:40)
> 
> Any Idea??!
> 
> Thanks
> 
> Davide
> 
> 
> 
> O hEigeartaigh, Colm wrote:
>> 
>> Hi Davide,
>> 
>>> PasswordHandler is on the classpath and implements CallbackHandler....
>>> anyway I don't know exactly what to code inside it! 
>>> Is it necessary in my case ( I don't want autenthication).
>> 
>> You have two options for specifying a password, either in the properties
>> file or via a custom implementation of the CallbackHandler interface.
>> You must implement one of these approaches, as wss4j needs to know the
>> password to access the private key stored in your keystore, in order to
>> perform decryption etc.
>> 
>> I don't know why you're getting a ClassNotFoundException for your
>> CallbackHandler implementation, you need to provide more information...
>> 
>> Have a look at the unit tests for WS-security in CXF to see how
>> configuration is done (in particular look at
>> org.apache.cxf.ws.security.wss4j.TestPwdCallback).
>> 
>> Colm.
>> 
>> 
>> -----Original Message-----
>> From: Davide Gesino [mailto:[EMAIL PROTECTED] 
>> Sent: 21 August 2007 10:57
>> To: [email protected]
>> Subject: cxf encryption
>> 
>> 
>> Hello,
>> 
>> I would like to set up a working example of a ws client and ws server
>> exchanging encrypted messages.
>> I have tried to set up an example following both the cxf wiki and the
>> xfire
>> tutorial, but I haven/t been able to make it work properly.
>> 
>> I don't want to provide authentication (at this stage), just encryption.
>> 
>> in this example I have a client that calls an endpoint deployed on
>> tomcat.
>> I have created a public and private keystore (following the cxf wiki).
>> 
>> ###################
>> #this is the client code:
>> ###################
>> 
>> ReportService service = new ReportService(wsdlURL, SERVICE_NAME);
>> CreditReportPortType port = service.getCreditReportPortType();
>>              
>> // adding encryption
>> org.apache.cxf.endpoint.Client client =
>> org.apache.cxf.frontend.ClientProxy.getClient(service); 
>> org.apache.cxf.endpoint.Endpoint cxfEndpoint = client.getEndpoint();
>>              
>> Map<String, String> outProps = new HashMap<String,String>();
>> outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.ENCRYPT);
>> outProps.put(WSHandlerConstants.USER, "myAlias");
>> 
>> //Configuration of public key used to encrypt message goes to properties
>> file.
>> outProps.put(WSHandlerConstants.ENC_PROP_FILE,"org/codehaus/xfire/client
>> /outsecurity_enc.properties");
>> 
>> WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);
>> cxfEndpoint.getOutInterceptors().add(wssOut);
>> cxfEndpoint.getOutInterceptors().add(new SAAJOutInterceptor());
>>      
>> System.out.println("Invoking creditReportOperation...");
>> org.netbeans.j2ee.wsdl.creditreport.CreditReport
>> _creditReportOperation_part1 = port.creditReportOperation(new
>> CreditQuery());
>> System.out.println(_creditReportOperation_part1);
>> 
>> 
>> #####################################################
>> #while on the server side  I have configured this endpoint and its
>> interceptors
>> #####################################################
>> 
>> ...
>> <jaxws:endpoint id="italo" address="/CreditReportPortType"
>>      
>> implementor="org.netbeans.j2ee.wsdl.creditreport.CreditReportPortTypeImp
>> l">
>>             <jaxws:inInterceptors>
>>         <bean
>> class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor" />
>>         <bean
>> class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
>>           <constructor-arg>
>>             <map>
>>              <entry key="action" value="Encrypt" />
>> 
>>              <entry key="decryptionPropFile"
>> value="META-INF/insecurity_enc.properties"
>> />
>>                   <entry key="passwordCallbackClass"
>> value="org.netbeans.j2ee.wsdl.creditreport.PasswordHandler" />
>> </map>
>>      </constructor-arg>
>>      </bean>
>> </jaxws:inInterceptors>
>> </jaxws:endpoint>
>> 
>> This example was working fine before introducing the encryption.
>> 
>> When I run this program I get this error on the tomcat console:
>> 
>> Caused by: java.lang.ClassNotFoundException:
>> org.netbeans.j2ee.wsdl.creditreport.PasswordHandler
>> 
>> PasswordHandler is on the classpath and implements CallbackHandler....
>> anyway I don't know exactly what to code inside it! 
>> Is it necessary in my case ( I don't want autenthication).
>> i tried to omiss this entry but i get a different error.
>> 
>> Caused by: org.apache.ws.security.WSSecurityException: WSHandler: no
>> reference in callback property
>> 
>> so this entry seems to be necessary....
>> 
>> Does anyone know where coud be the problem?
>> Does anyone know has a working example that could fit my case?
>> 
>> Many thanks!!!!
>> 
>> Davide 
>> 
>> 
>>      
>> 
>> -- 
>> View this message in context:
>> http://www.nabble.com/cxf-encryption-tf4304218.html#a12251696
>> Sent from the cxf-user mailing list archive at Nabble.com.
>> 
>> ----------------------------
>> IONA Technologies PLC (registered in Ireland)
>> Registered Number: 171387
>> Registered Address: The IONA Building, Shelbourne Road, Dublin 4, Ireland
>> 
>> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/cxf-encryption-tf4304218.html#a12289890
Sent from the cxf-user mailing list archive at Nabble.com.

Reply via email to