Salve ho un problema con WS security. Allora ho utilizzato la seguente policy:

codice:
<wsp:Policy wsu:Id="UTOverTransport"
                     xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-ssecurity-utility-1.0.xsd"
                     xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
           <wsp:ExactlyOne>
               <sp:SignedSupportingTokens xmlns:sp="http://docs.oasis-open.org/ws-sx/wssecuritypolicy/200702">
                  <wsp:Policy>
                     <sp:UsernameToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/wssecuritypolicy/200702/IncludeToken/AlwaysToRecipient">
                         <wsp:Policy>
                            <sp:HashPassword/>
                         </wsp:Policy>
                     </sp:UsernameToken>
                  </wsp:Policy>
              </sp:SignedSupportingTokens>

             <ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy">
                <ramp:passwordCallbackClass>org.example.www.classi.PWCBHandler</ramp:passwordCallbackClass>
             </ramp:RampartConfig>
         </wsp:ExactlyOne>
        </wsp:Policy>
e ho scritto la seguente classe java:

codice:
package org.example.www.classi;

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 PWCBHandler {
	
	public class PBCBHandler implements CallbackHandler{ //CallbackHandler è l’interfaccia con cui il sistema richiede le credenziali di accesso dell’utente
		
	    public void handle(Callback[] callbacks)throws IOException, UnsupportedCallbackException { // Il metodo handle di CallbackHandler riceve in ingresso un array di opportuni callback
	    	for (int i = 0; i < callbacks.length; i++) {
	    		WSPasswordCallback pwcb = (WSPasswordCallback)callbacks[i]; //La classe WSPasswordCallback fornisce il nome di utente
	    		String id = pwcb.getIdentifier(); // Questo metodo restituisce l’username
	    		int usage = pwcb.getUsage(); // Questo metodo restituisce un intero. Si possono distinguere i seguenti tre casi: 1)se usage = 2 viene usato un UNSERNAME_TOKEN, 2)se usage = 3 viene usata una SIGNATURE, 3) se usage = 1 viene usato un DECRYPT
	    		
	    		if(usage == WSPasswordCallback.USERNAME_TOKEN )// Logica per ottenere la password per l’USERNAME_TOKEN per validare l’USERNAME_TOKEN
	    			if ("pippo".equals(id)) 
	    				pwcb.setPassword("progettoWS");
	    		
	    	}
	    }
	 }
}
solo che quando provo ad inviare la richiesta con soapUI mi esce il seguente errore:

codice:
<faultcode>axis2ns2:MustUnderstand</faultcode>
         <faultstring>Must Understand check failed for header http://docs.oasis-open.org/wss/2004/...secext-1.0.xsd : Security</faultstring>
quale potrebbe essere il problema???