Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save sivaprasadreddy/2555700 to your computer and use it in GitHub Desktop.
Save sivaprasadreddy/2555700 to your computer and use it in GitHub Desktop.
JAX-WS WSI Authentication using UserName & Password Security Headers
import java.io.IOException;
import java.util.Set;
import javax.xml.namespace.QName;
import javax.xml.soap.SOAPConstants;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPFactory;
import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPHeaderElement;
import javax.xml.soap.SOAPMessage;
import javax.xml.ws.handler.MessageContext;
import javax.xml.ws.handler.soap.SOAPHandler;
import javax.xml.ws.handler.soap.SOAPMessageContext;
public class AuthenticationTokenInjectHandler implements SOAPHandler<SOAPMessageContext>
{
@Override
public boolean handleMessage(SOAPMessageContext context) {
System.out.println("Client : handleMessage()......");
SOAPMessage soapMessage = context.getMessage();
Boolean isRequest = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
System.out.println("isRequest="+isRequest);
if(isRequest)
{
String prefixUri = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-";
String uri = prefixUri + "wssecurity-secext-1.0.xsd";
String uta = prefixUri + "wssecurity-utility-1.0.xsd";
String ta = prefixUri + "username-token-profile-1.0#PasswordText";
SOAPEnvelope envelope;
try {
envelope = context.getMessage().getSOAPPart().getEnvelope();
SOAPFactory factory = SOAPFactory.newInstance();
String prefix = "wsse";
SOAPElement securityElem = factory.createElement("Security",prefix,uri);
SOAPElement tokenElem = factory.createElement("UsernameToken",prefix,uri);
tokenElem.addAttribute(QName.valueOf("wsu:Id"),"UsernameToken-2");
tokenElem.addAttribute(QName.valueOf("xmlns:wsu"), uta);
SOAPElement userElem = factory.createElement("Username",prefix,uri);
userElem.addTextNode("siva");
SOAPElement pwdElem = factory.createElement("Password",prefix,uri);
pwdElem.addTextNode("secret");
pwdElem.addAttribute(QName.valueOf("Type"), ta);
tokenElem.addChildElement(userElem);
tokenElem.addChildElement(pwdElem);
securityElem.addChildElement(tokenElem);
SOAPHeader header = envelope.addHeader();
header.addChildElement(securityElem);
}
catch (SOAPException e) {
e.printStackTrace();
}
}
return true;
}
@Override
public boolean handleFault(SOAPMessageContext context) {
System.out.println("Client : handleFault()......");
return true;
}
@Override
public void close(MessageContext context) {
System.out.println("Client : close()......");
}
@Override
public Set<QName> getHeaders() {
System.out.println("Client : getHeaders()......");
return null;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment