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!



Reply via email to