Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.loves.idm;
- import java.util.HashSet;
- import java.util.Set;
- import javax.xml.namespace.QName;
- import javax.xml.soap.SOAPElement;
- import javax.xml.soap.SOAPEnvelope;
- import javax.xml.soap.SOAPFactory;
- import javax.xml.soap.SOAPHeader;
- import javax.xml.ws.handler.MessageContext;
- import javax.xml.ws.handler.soap.SOAPHandler;
- import javax.xml.ws.handler.soap.SOAPMessageContext;
- public class WSSecurityHeaderSOAPHandler implements SOAPHandler<SOAPMessageContext> {
- private static final String SOAP_ELEMENT_PASSWORD = "Password";
- private static final String SOAP_ELEMENT_USERNAME = "Username";
- private static final String SOAP_ELEMENT_USERNAME_TOKEN = "UsernameToken";
- private static final String SOAP_ELEMENT_SECURITY = "Security";
- private static final String NAMESPACE_SECURITY = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd";
- private static final String PREFIX_SECURITY = "wsse";
- private static final String SOAP_ATTRIBUTE_MANDARORY = "mustUnderstand";
- private String usernameText;
- private String passwordText;
- public WSSecurityHeaderSOAPHandler(String usernameText, String passwordText) {
- this.usernameText = usernameText;
- this.passwordText = passwordText;
- }
- public boolean handleMessage(SOAPMessageContext soapMessageContext) {
- Boolean outboundProperty = (Boolean) soapMessageContext.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
- if (outboundProperty.booleanValue()) {
- try {
- /*
- SOAPEnvelope envelope = soapMessageContext.getMessage().getSOAPPart().getEnvelope();
- SOAPFactory factory = SOAPFactory.newInstance();
- String prefix = "wsse";
- String uri = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd";
- 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"), "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd");
- SOAPElement userElem =
- factory.createElement("Username", prefix, uri);
- userElem.addTextNode(usernameText);
- SOAPElement pwdElem =
- factory.createElement("Password", prefix, uri);
- pwdElem.addTextNode(passwordText);
- pwdElem.addAttribute(QName.valueOf("Type"), "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText");
- tokenElem.addChildElement(userElem);
- tokenElem.addChildElement(pwdElem);
- securityElem.addChildElement(tokenElem);
- SOAPHeader header = envelope.addHeader();
- header.addChildElement(securityElem);
- */
- SOAPEnvelope soapEnvelope = soapMessageContext.getMessage().getSOAPPart().getEnvelope();
- SOAPHeader header = soapEnvelope.getHeader();
- if (header == null) {
- header = soapEnvelope.addHeader();
- }
- SOAPElement soapElementSecurityHeader = header.addChildElement(SOAP_ELEMENT_SECURITY, PREFIX_SECURITY,
- NAMESPACE_SECURITY);
- soapElementSecurityHeader.addAttribute(soapEnvelope.createName("mustUnderstand") , "1");
- SOAPElement soapElementUsernameToken = soapElementSecurityHeader.addChildElement(SOAP_ELEMENT_USERNAME_TOKEN, PREFIX_SECURITY);
- soapElementUsernameToken.addAttribute(QName.valueOf("wsu:Id"), "UsernameToken-2");
- soapElementUsernameToken.addAttribute(QName.valueOf("xmlns:wsu"), "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd");
- SOAPElement soapElementUsername = soapElementUsernameToken.addChildElement(SOAP_ELEMENT_USERNAME, PREFIX_SECURITY);
- soapElementUsername.addTextNode(this.usernameText);
- SOAPElement soapElementPassword = soapElementUsernameToken.addChildElement(SOAP_ELEMENT_PASSWORD, PREFIX_SECURITY);
- soapElementPassword.addAttribute(QName.valueOf("Type"), "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText");
- soapElementPassword.addTextNode(this.passwordText);
- } catch (Exception e) {
- throw new RuntimeException("Error on wsSecurityHandler: " + e.getMessage());
- }
- }
- return true;
- }
- @Override
- public void close(MessageContext context) {
- // TODO Auto-generated method stub
- }
- @Override
- public boolean handleFault(SOAPMessageContext context) {
- // TODO Auto-generated method stub
- return true;
- }
- @Override
- public Set<QName> getHeaders() {
- // throw new UnsupportedOperationException("Not supported yet.");
- final QName securityHeader = new QName(
- "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd",
- "Security", "wsse");
- final HashSet headers = new HashSet();
- headers.add(securityHeader);
- return headers;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement