Si sta utilizzando WS-SecurityPolicy secondo il codice che è stato condiviso. Che ne dici di utilizzare WS-Security e di inviarlo attraverso l'usernametoken usando WSS4JOutInterceptor?
controllare la sezione "Aggiungendo le intercettori tramite l'API" in apache CFX guida WS-Security qui: http://cxf.apache.org/docs/ws-security.html
Questo è ciò che deve essere fatto secondo la sopra documenation Apache CXF sopra. Potrebbe essere necessario solo il percorso dell'intercettore.
Sul lato client, è possibile ottenere un riferimento al punto finale CXF utilizzando l'helper Clientproxy:
import org.apache.cxf.frontend.ClientProxy;
...
GreeterService gs = new GreeterService();
Greeter greeter = gs.getGreeterPort();
...
org.apache.cxf.endpoint.Client client = ClientProxy.getClient(greeter);
org.apache.cxf.endpoint.Endpoint cxfEndpoint = client.getEndpoint();
Ora sei pronto per aggiungere gli intercettori:
import org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor;
import org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor;
...
Map<String,Object> inProps = new HashMap<String,Object>();
... // how to configure the properties is outlined below;
WSS4JInInterceptor wssIn = new WSS4JInInterceptor(inProps);
cxfEndpoint.getInInterceptors().add(wssIn);
Map<String,Object> outProps = new HashMap<String,Object>();
outProps.put("action", "UsernameToken Timestamp");
outProps.put("passwordType", "PasswordDigest"); //remove this line if want to use plain text password
outProps.put("user", "abcd");
outProps.put("passwordCallbackClass", "demo.wssec.client.UTPasswordCallback");
WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);
cxfEndpoint.getOutInterceptors().add(wssOut);
Nell'esempio sopra riportato è necessario scrivere la classe di richiamata della password (UTPasswordCallback).
Apache CXF è un campione completo per UserName gettone qui: http://svn.apache.org/repos/asf/cxf/trunk/distribution/src/main/release/samples/ws_security/ut/
dal link qui sopra Sfoglia per cartella del client (src/main/java/demo/wssec/client) per il nome utente e codice token UTPasswordCallback.
MODIFICA: Se il tuo wsdl si aspetta password come testo semplice, basta rimuovere questa riga dal codice: outProps.put ("passwordType", "PasswordDigest");