KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I am trying to connect to a web service using WS-Security UsernameToken spec 1.0, using apache cxf 2.4.0. I've copied the code below from the CXF docs, but am getting: org.apache.cxf.ws.policy.PolicyException: No username available MyService_Service ss = new MyService_Service(wsdlURL, SERVICE_NAME); MyService port = ss.getBasicHttpBindingMyService (); Client client = ClientProxy.getClient(port); Endpoint cxfEndpoint = client.getEndpoint(); Map<String,Object> outProps = new HashMap<String,Object>(); outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN); outProps.put(WSHandlerConstants.USER, "USERNAME"); outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT); outProps.put(WSHandlerConstants.PW_CALLBACK_CLASS, ClientPasswordHandler.class.getName()); WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps); cxfEndpoint.getOutInterceptors().add(wssOut); I've also implemented a ClientPasswordHandler class, again from the docs, but it seems like the username is never sent (according to the error). Here is the password handler: public class ClientPasswordHandler implements CallbackHandler { public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException { WSPasswordCallback pc = (WSPasswordCallback) callbacks[0]; pc.setPassword("Password"); } } Is there any way to see if the WSS4Jinterceptor is being applied, and the UsernameToken is sent?
Tags (comma-separated)
Save Edits
Cancel