Hi, I'm trying out the basic authentication with wss4j tutorial (on http://weblogs.asp.net/jdanforth/archive/2005/01/16/354060.aspx) but I ran into problems with creating my client.
I have this in client-deploy.wsdd: <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <transport name="http" pivot="java:org.apache.axis.transport.http.HTTPSender"/> <globalConfiguration > <requestFlow > <handler type="java:org.apache.ws.axis.security.WSDoAllSender" > <parameter name="action" value="UsernameToken"/> <parameter name="user" value="wss4j"/> <parameter name="passwordCallbackClass" value="client.PWCallback"/> <parameter name="passwordType" value="PasswordDigest"/> </handler> </requestFlow > </globalConfiguration > </deployment> This is my webservices.PWCallback: /** * @author seppe * Created on 21-feb-2005 at 10:10:41 */ package webservices; 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 PWCallback implements CallbackHandler { /* (non-Javadoc) * @see javax.security.auth.callback.CallbackHandler#handle(javax.security.auth.callback.Callback[]) */ public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException { for (int i = 0; i < callbacks.length; i++) { if (callbacks[i] instanceof WSPasswordCallback) { WSPasswordCallback pc = (WSPasswordCallback) callbacks[i]; /* * here call a function/method to lookup the password for * the given identifier (e.g. a user name or keystore alias) * e.g.: pc.setPassword(passStore.getPassword(pc.getIdentfifier)) * for Testing we supply a fixed name here. */ pc.setPassword("security"); } else { throw new UnsupportedCallbackException( callbacks[i], "Unrecognized Callback"); } } } } And I have this in client.PWCallback: /** * @author seppe * Created on 21-feb-2005 at 10:13:52 */ package client; 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; /** * PWCallback for the Client */ public class PWCallback implements CallbackHandler { /** * @see javax.security.auth.callback.CallbackHandler#handle(javax.security.auth.callback.Callback[]) */ public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException { for (int i = 0; i < callbacks.length; i++) { if (callbacks[i] instanceof WSPasswordCallback) { WSPasswordCallback pc = (WSPasswordCallback)callbacks[i]; // set the password given a username if ("wss4j".equals(pc.getIdentifer())) { pc.setPassword("security"); } } else { throw new UnsupportedCallbackException(callbacks[i], "Unrecognized Callback"); } } } } I call my service with these lines of code in my Demo class: EngineConfiguration config = new FileProvider("client-deploy.wsdd"); OrderService locator = new OrderServiceLocator(config); port = locator.getOrder(); port.createCategory(new Category("blah","blahblah")); I receive this error: AxisFault faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException faultSubcode: faultString: WSDoAllSender: application provided null or empty password faultActor: faultNode: faultDetail: {http://xml.apache.org/axis/}stackTrace:WSDoAllSender: application provided null or empty password at org.apache.ws.axis.security.WSDoAllSender.getPassword(WSDoAllSender.java:844) at org.apache.ws.axis.security.WSDoAllSender.performUTAction(WSDoAllSender.java:463) at org.apache.ws.axis.security.WSDoAllSender.invoke(WSDoAllSender.java:312) at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) at org.apache.axis.client.AxisClient.invoke(AxisClient.java:134) at org.apache.axis.client.Call.invokeEngine(Call.java:2719) at org.apache.axis.client.Call.invoke(Call.java:2702) at org.apache.axis.client.Call.invoke(Call.java:2378) at org.apache.axis.client.Call.invoke(Call.java:2301) at org.apache.axis.client.Call.invoke(Call.java:1758) at com.apogado.www.ws.order_wsdl.OrderBindingStub.createCustomer(OrderBindingStub.java:273) at ClientDemo.main(ClientDemo.java:64) {http://xml.apache.org/axis/}hostname:Helios WSDoAllSender: application provided null or empty password at org.apache.ws.axis.security.WSDoAllSender.getPassword(WSDoAllSender.java:844) at org.apache.ws.axis.security.WSDoAllSender.performUTAction(WSDoAllSender.java:463) at org.apache.ws.axis.security.WSDoAllSender.invoke(WSDoAllSender.java:312) at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) at org.apache.axis.client.AxisClient.invoke(AxisClient.java:134) at org.apache.axis.client.Call.invokeEngine(Call.java:2719) at org.apache.axis.client.Call.invoke(Call.java:2702) at org.apache.axis.client.Call.invoke(Call.java:2378) at org.apache.axis.client.Call.invoke(Call.java:2301) at org.apache.axis.client.Call.invoke(Call.java:1758) at com.apogado.www.ws.order_wsdl.OrderBindingStub.createCustomer(OrderBindingStub.java:273) at ClientDemo.main(ClientDemo.java:64) Exception in thread "main" Can anyone help me please?! Thanks a lot in advance!
