Here is a complete example of a CXF client using SSL and WS-Security. You don't need cxf.xml configuration file to use this, all is done in Java.
TestClient.java --------------- /** * Please modify this class to meet your needs * This class is not complete */ import java.util.HashMap; import java.util.Map; import javax.xml.ws.BindingProvider; import org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor; import org.apache.cxf.configuration.jsse.TLSClientParameters; import org.apache.cxf.configuration.security.FiltersType; import org.apache.cxf.endpoint.Client; import org.apache.cxf.endpoint.Endpoint; import org.apache.cxf.frontend.ClientProxy; import org.apache.cxf.transport.http.HTTPConduit; import org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor; import org.apache.ws.security.WSConstants; import org.apache.ws.security.handler.WSHandlerConstants; /** * This class was generated by Apache CXF (incubator) 2.1-incubator-SNAPSHOT Thu Feb 28 11:09:40 EST 2008 Generated source version: * 2.1-incubator-SNAPSHOT * */ public final class TestClient { private TestClient() { } public static void main(String args[]) throws Exception { TestService_Service ss = new TestService_Service(); TestService port = ss.getInquiryServiceSoap(); BindingProvider bp = (BindingProvider) port; bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "https://www.test.com/test.svc"); Client client = ClientProxy.getClient(port); HTTPConduit httpConduit = (HTTPConduit) client.getConduit(); TLSClientParameters tlsParams = new TLSClientParameters(); tlsParams.setSecureSocketProtocol("SSL"); FiltersType filters = new FiltersType(); filters.getInclude().add("SSL_RSA_WITH_RC4_128_MD5"); filters.getInclude().add("SSL_RSA_WITH_RC4_128_SHA"); tlsParams.setCipherSuitesFilter(filters); httpConduit.setTlsClientParameters(tlsParams); Map outProps = new HashMap(); // outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN); outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN + " " + WSHandlerConstants.TIMESTAMP); // Specify our username outProps.put(WSHandlerConstants.USER, "username"); // Password type : plain text // outProps.setProperty(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT); // for hashed password use: // properties.setProperty(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_DIGEST); outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT); // Callback used to retrive password for given user. outProps.put(WSHandlerConstants.PW_CALLBACK_CLASS, ClientPasswordHandler.class.getName()); WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps); Endpoint endPoint = client.getEndpoint(); endPoint.getOutInterceptors().add(wssOut); endPoint.getOutInterceptors().add(new SAAJOutInterceptor()); System.out.println("Invoking operation1 ..."); try { Operation1MType operation1MType = new Operation1MType(); Operation1RsMType operation1RsMType = port.acctSrch(operation1MType); System.out.println("operation1 result=" + operation1RsMType); } catch (Exception e) { System.out.println(e.toString()); } System.exit(0); } } And here is the ClientPasswordHandler.java ----------------------------------------- import java.io.IOException; import javax.security.auth.callback.Callback; import javax.security.auth.callback.CallbackHandler; import javax.security.auth.callback.UnsupportedCallbackException; import org.apache.ws.security.WSPasswordCallback; public class ClientPasswordHandler implements CallbackHandler { public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException { WSPasswordCallback pc = (WSPasswordCallback) callbacks[0]; pc.setPassword("password"); } } I have tested this client against a .NET service that requires both SSL and WS-Security. Good Luck, Khaled yulinxp wrote: > > Now using NET, I can connect to it! But CXF client still doesn't work! The > message could be sent! > > > --------typo, I mean couldn't > Please help! > > -- View this message in context: http://www.nabble.com/client-SSL-question-tp15564062p15769013.html Sent from the cxf-user mailing list archive at Nabble.com.