public static SOAPHeaderElement generateHeaderBlock(String user, String password){
SOAPHeaderElement security = null;
String WSSE = "wsse";
String WSU = "wsu";
String XMLNS = "xmlns";
String WS_SEC_NS = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd";
String WS_UTI_NS = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd";
String WS_SOAP_URL = "http://schemas.xmlsoap.org/soap/envelope/";
try {
SOAPMessage soapMessage = MessageFactory.newInstance().createMessage();
javax.xml.soap.SOAPPart sOAPPart = soapMessage.getSOAPPart();
SOAPEnvelope envelope = sOAPPart.getEnvelope();
SOAPHeader header = envelope.getHeader();
String uuid = UUID.randomUUID().toString();
QName headerName = new QName(WS_SEC_NS, "Security");
security = new SOAPHeaderElement(headerName);
security.setActor(null);
security.setPrefix(WSSE);
SOAPElement userNameToken = security.addChildElement("UsernameToken");
userNameToken.setPrefix(WSSE);
Name userTokenElementName = envelope.createName("xmlns:wsu");
userNameToken.addAttribute(userTokenElementName, WS_UTI_NS);
Name userTokenElementName2 = envelope.createName(WSU + ":Id");
userNameToken.addAttribute(userTokenElementName2, "SecurityToken-" + uuid);
SOAPElement userName = userNameToken.addChildElement("Username");
userName.removeContents();
userName.setPrefix(WSSE);
userName.addTextNode(user);
Name contrasenaName = envelope.createName("Password", WSSE, WS_UTI_NS);
SOAPElement contrasena = userNameToken.addChildElement("Password");
contrasena.removeContents();
contrasena.setPrefix(WSSE);
contrasena.addTextNode(password);
contrasena.setAttribute("Type", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText");
String codigoGenerado = new String(Base64.encode((uuid + "_" + (System.currentTimeMillis() / 1000)).getBytes()));
SOAPElement nonce = userNameToken.addChildElement("Nonce");
nonce.removeContents();
nonce.setPrefix(WSSE);
nonce.addTextNode(codigoGenerado);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
Calendar c1 = Calendar.getInstance();
Name createdName = envelope.createName("Created", WSSE, WS_UTI_NS);
SOAPElement created = userNameToken.addChildElement("Created");
created.removeContents();
created.setPrefix(WSU);
created.addTextNode(sdf.format(c1.getTime()));
System.out.println("fecha creada: " + created.toString());
security.setMustUnderstand(true);*/
System.out.println("security completada: " + security.toString());
} catch (Exception e) {
e.printStackTrace();
}
return security;
}