When i try to call a service using webserviceTemplate of spring i get:
Caused by: org.springframework.ws.soap.client.SoapFaultClientException: Failed to assert identity with UsernameToken.
THIS IS THE CLASS I USE TO MAKE THE HEADER
package it.ita.Client;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.ws.WebServiceMessage;
import org.springframework.ws.client.core.WebServiceMessageCallback;
import org.springframework.ws.soap.saaj.SaajSoapMessage;
import javax.xml.soap.*;
public class TokenHeaderRequestCallback implements WebServiceMessageCallback {
private static final Logger logger = LoggerFactory.getLogger(TokenHeaderRequestCallback.class);
private String username;
private String password;
public TokenHeaderRequestCallback(String username, String password){
this.username = username;
this.password = password;
}
public void doWithMessage(WebServiceMessage message) {
try {
System.out.println(message.toString());
SaajSoapMessage saajSoapMessage = (SaajSoapMessage)message;
SOAPMessage soapMessage = saajSoapMessage.getSaajMessage();
SOAPPart soapPart = soapMessage.getSOAPPart();
SOAPEnvelope soapEnvelope = soapPart.getEnvelope();
System.out.println("prima ----> "+soapEnvelope.toString());
SOAPHeader soapHeader = soapEnvelope.getHeader();
Name headerElementName = soapEnvelope.createName(
"Security",
"wsse",
"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
);
SOAPHeaderElement soapHeaderElement = soapHeader.addHeaderElement(headerElementName);
SOAPElement usernameTokenSOAPElement = soapHeaderElement.addChildElement("UsernameToken", "wsse");
SOAPElement userNameSOAPElement = usernameTokenSOAPElement.addChildElement("Username", "wsse");
logger.info(this.username);
userNameSOAPElement.addTextNode(this.username);
SOAPElement passwordSOAPElement = usernameTokenSOAPElement.addChildElement("Password", "wsse");
passwordSOAPElement.addTextNode(this.password);
soapMessage.saveChanges();
System.out.println("dopo ----> "+soapEnvelope.toString());
} catch (SOAPException soapException) {
throw new RuntimeException("TokenHeaderRequestCallback", soapException);
}
}
}
AND I CALL THE SERVICES IN THIS WAY:
JAXBElement res = (JAXBElement) getWebServiceTemplate().marshalSendAndReceive(request,new TokenHeaderRequestCallback("userfrab","hdgdhdgdhdg"));
I've googled but not able to find anything useful, can you give me some help?