Guest User

Untitled

a guest
Nov 30th, 2017
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.96 KB | None | 0 0
  1. import java.util.Set;
  2. import javax.xml.namespace.QName;
  3. import javax.xml.soap.SOAPElement;
  4. import javax.xml.soap.SOAPEnvelope;
  5. import javax.xml.soap.SOAPHeader;
  6. import javax.xml.ws.handler.MessageContext;
  7. import javax.xml.ws.handler.soap.SOAPHandler;
  8. import javax.xml.ws.handler.soap.SOAPMessageContext;
  9.  
  10. public class WSSecurityHeaderSOAPHandler implements
  11. SOAPHandler<SOAPMessageContext> {
  12.  
  13. private static final String SOAP_ELEMENT_PASSWORD = "Password";
  14. private static final String SOAP_ELEMENT_USERNAME = "Username";
  15. private static final String SOAP_ELEMENT_USERNAME_TOKEN = "UsernameToken";
  16. private static final String SOAP_ELEMENT_SECURITY = "Security";
  17. private static final String NAMESPACE_SECURITY = "http://docs.oasis- open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd";
  18. private static final String PREFIX_SECURITY = "wsse";
  19.  
  20. private String usernameText;
  21. private String passwordText;
  22.  
  23. public WSSecurityHeaderSOAPHandler(String usernameText, String passwordText) {
  24. this.usernameText = usernameText;
  25. this.passwordText = passwordText;
  26. }
  27.  
  28. public boolean handleMessage(SOAPMessageContext soapMessageContext) {
  29.  
  30. Boolean outboundProperty = (Boolean)
  31. soapMessageContext.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
  32.  
  33. if (outboundProperty.booleanValue()) {
  34.  
  35. try {
  36. SOAPEnvelope soapEnvelope = soapMessageContext.getMessage().getSOAPPart().getEnvelope();
  37.  
  38. SOAPHeader header = soapEnvelope.getHeader();
  39. if (header == null) {
  40. header = soapEnvelope.addHeader();
  41. }
  42.  
  43. SOAPElement soapElementSecurityHeader = header.addChildElement(SOAP_ELEMENT_SECURITY, PREFIX_SECURITY,NAMESPACE_SECURITY);
  44.  
  45. soapElementSecurityHeader.addChildElement();
  46.  
  47. SOAPElement soapElementUsernameToken = soapElementSecurityHeader.addChildElement(SOAP_ELEMENT_USERNAME_TOKEN, PREFIX_SECURITY);
  48. SOAPElement soapElementUsername = soapElementUsernameToken.addChildElement(SOAP_ELEMENT_USERNAME, PREFIX_SECURITY);
  49. soapElementUsername.addTextNode(this.usernameText);
  50.  
  51. SOAPElement soapElementPassword = soapElementUsernameToken.addChildElement(SOAP_ELEMENT_PASSWORD, PREFIX_SECURITY);
  52. soapElementPassword.addTextNode(this.passwordText);
  53.  
  54. } catch (Exception e) {
  55. throw new RuntimeException("Error on wsSecurityHandler: " + e.getMessage());
  56. }
  57.  
  58. }
  59.  
  60. return true;
  61. }
  62.  
  63. @Override
  64. public void close(MessageContext context) {
  65. // TODO Auto-generated method stub
  66. }
  67.  
  68. @Override
  69. public boolean handleFault(SOAPMessageContext context) {
  70. // TODO Auto-generated method stub
  71. return true;
  72. }
  73.  
  74. @Override
  75. public Set<QName> getHeaders() {
  76. // TODO Auto-generated method stub
  77. return null;
  78. }
  79. }
  80.  
  81. <?xml version="1.0" ?>
  82. <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-
  83. ENV="http://schemas.xmlsoap.org/soap/envelope/">
  84. <SOAP-ENV:Header><wsse:Security xmlns:wsse="http://docs.oasis-
  85. open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
  86. <wsse:UsernameToken>
  87. <wsse:Username>0ef3097c085sad54-df03</wsse:Username>
  88. <wsse:Password>245fddscascascsacsacsacas</wsse:Password>
  89. </wsse:UsernameToken>
  90. </wsse:Security>
  91. </SOAP-ENV:Header>
Add Comment
Please, Sign In to add comment