dw.rpc
Class SOAPUtil
Object
dw.rpc.SOAPUtil
Utility class for working with SOAP web services. This class provides methods for setting SOAP headers and a set of constants representing the supported header names.
If you want to use ws-security features, such as signing and encryption, with your RPC-style SOAP web service, use this class to construct a HashMap with security constants and values.
Note: this method handles sensitive security-related data. Pay special attention to PCI DSS v3. requirements 2, 4, and 12. The following example configures the ws-security actions taken for the request and response to a web service.

 importPackage( dw.system );
 importPackage( dw.util );
 importPackage( dw.rpc );


 function execute( args : PipelineDictionary ) : Number
 {
     var WSU_NS : String = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd";

     try
     {

     // define a map with all the secrets
     var secretsMap   : Map = new HashMap();
     secretsMap.put("myclientkey", "ckpass");
     secretsMap.put("myservicekey", "ckpass");
     secretsMap.put("username", "password");

     var requestCfg   : Map = new HashMap();

     // define the ws actions to be performed
     requestCfg.put(SOAPUtil.WS_ACTION, SOAPUtil.WS_USERNAME_TOKEN + " " +
                                        SOAPUtil.WS_TIMESTAMP + " " +
                                        SOAPUtil.WS_SIGNATURE + " " +
                                        SOAPUtil.WS_ENCRYPT);
     requestCfg.put(SOAPUtil.WS_USER, "username");
     requestCfg.put(SOAPUtil.WS_PASSWORD_TYPE, SOAPUtil.WS_PW_DIGEST );
     requestCfg.put(SOAPUtil.WS_SIG_DIGEST_ALGO, "http://www.w3.org/2001/04/xmlenc#sha256" );

     // define signature properties
     // the keystore file has the basename of the WSDL file and the
     // file extension based on the keystore type (e.g. HelloWorld.jks).
     // The keystore file has to be placed beside the WSDL file.
     requestCfg.put(SOAPUtil.WS_SIG_PROP_KEYSTORE_TYPE, "jks");
     requestCfg.put(SOAPUtil.WS_SIG_PROP_KEYSTORE_PW, "cspass");
     requestCfg.put(SOAPUtil.WS_SIG_PROP_KEYSTORE_ALIAS, "myclientkey");

     requestCfg.put(SOAPUtil.WS_SIGNATURE_USER, "myclientkey");

     // define enrcryption properties
     requestCfg.put(SOAPUtil.WS_ENC_PROP_KEYSTORE_TYPE, "jks");
     requestCfg.put(SOAPUtil.WS_ENC_PROP_KEYSTORE_PW, "cspass");
     requestCfg.put(SOAPUtil.WS_ENC_PROP_KEYSTORE_ALIAS, "myservicekey");

     requestCfg.put(SOAPUtil.WS_ENCRYPTION_USER, "myservicekey");
     requestCfg.put(SOAPUtil.WS_SIGNATURE_PARTS, "{Element}{http://schemas.xmlsoap.org/soap/envelope/}Body");
     requestCfg.put(SOAPUtil.WS_ENCRYPTION_PARTS,"{Element}{" + WSU_NS + "}
      Timestamp;"+"{Content}{http://schemas.xmlsoap.org/soap/envelope/}Body");

     // set the secrets for the callback
     requestCfg.put(SOAPUtil.WS_SECRETS_MAP, secretsMap);

     var responseCfg : Map = new HashMap();

     // define the ws actions to be performed for the response
     responseCfg.put(SOAPUtil.WS_ACTION, SOAPUtil.WS_TIMESTAMP + " " +
                                         SOAPUtil.WS_SIGNATURE + " " +
                                         SOAPUtil.WS_ENCRYPT);

     // define signature properties
     responseCfg.put(SOAPUtil.WS_SIG_PROP_KEYSTORE_TYPE, "jks");
     responseCfg.put(SOAPUtil.WS_SIG_PROP_KEYSTORE_PW, "cspass");
     responseCfg.put(SOAPUtil.WS_SIG_PROP_KEYSTORE_ALIAS, "myservicekey");

     responseCfg.put(SOAPUtil.WS_SIGNATURE_USER, "myservicekey");

     // define decryption properties
     responseCfg.put(SOAPUtil.WS_ENC_PROP_KEYSTORE_TYPE, "jks");
     responseCfg.put(SOAPUtil.WS_ENC_PROP_KEYSTORE_PW, "cspass");
     responseCfg.put(SOAPUtil.WS_ENC_PROP_KEYSTORE_ALIAS, "myclientkey");

     responseCfg.put(SOAPUtil.WS_ENCRYPTION_USER, "myclientkey");

     // set the secrets for the callback
     responseCfg.put(SOAPUtil.WS_SECRETS_MAP, secretsMap);

     // get the service and stub
     var helloWorldService : WebReference = webreferences.HelloWorld;
     var stub : Stub = helloWorldService.defaultService;
     // set the security
     SOAPUtil.setWSSecurityConfig(stub, requestCfg, responseCfg);
         //var h : Hello = new helloWorldService.Hello();
         var h = new helloWorldService.com.support.ws.security.test.Hello2();

         h.setName('Send Text from client Axis ...');

         // call the web service
         var response  = stub.hello2(h);
         //var response = stub.hello(h);
         var result = response.getHello2Return();


     args.OutStr = result;
     Logger.error("Hello World We Are SIGNED old version Send Text from client ...", result);

     return PIPELET_NEXT;

     }
     catch (e)
     {
         Logger.error("Error in helloWorldRpc.ds is: " + e);
         return PIPELET_ERROR;
     }

 }
  

See Also:
Constants
WS_ACTION  :  String = "action"
WS-Security action property name. Allowed property values are WS_NO_SECURITY, WS_TIMESTAMP, WS_ENCRYPT, WS_SIGNATURE, WS_USERNAME_TOKEN or a space separated String with multiple values.
WS_ENC_PROP_KEYSTORE_ALIAS  :  String = "__EncryptionPropKeystoreAlias"
WS-Security encryption: the encryption/decryption keystore alias name
WS_ENC_PROP_KEYSTORE_PW  :  String = "__EncryptionPropKeystorePassword"
WS-Security encryption: the encryption/decryption keystore password
WS_ENC_PROP_KEYSTORE_TYPE  :  String = "__EncryptionPropKeystoreType"
WS-Security encryption: the encryption/decryption keystore type ( jks or pkcs12 ), default is jks.
Note: the keystore file must have the basename of the WSDL file and the file extension based on the keystore type. For example: MyService.jks. The keystore file must be placed in the same cartridge directory as the WSDL file.
WS_ENCRYPT  :  String = "Encrypt"
WS-Security action: encrypt the message. The encryption-specific parameters define how to encrypt, which keys to use, and other parameters.
WS_ENCRYPTION_PARTS  :  String = "encryptionParts"
WS-Security encryption: defines which parts of the request are encrypted.
WS_ENCRYPTION_USER  :  String = "encryptionUser"
WS-Security encryption: the user's name for encryption.
WS_NO_SECURITY  :  String = "NoSecurity"
WS-Security action: no security
WS_PASSWORD_TYPE  :  String = "passwordType"
WS-Security password type: parameter for UsernameToken action to define the encoding of the password. Allowed values are PW_DIGEST or PW_TEXT.
WS_PW_DIGEST  :  String = "PasswordDigest"
WS-Security password of type digest: use a password digest to send the password information.
WS_PW_TEXT  :  String = "PasswordText"
WS-Security password of type text: send the password information in clear text.
WS_SECRETS_MAP  :  String = "__SecretsMap"
A secrets map with the username/password entries is needed to create the password callback object.
WS_SIG_DIGEST_ALGO  :  String = "signatureDigestAlgorithm"
WS-Security signature: sets the signature digest algorithm to use.
WS_SIG_PROP_KEYSTORE_ALIAS  :  String = "__SignaturePropKeystoreAlias"
WS-Security signature: the signature keystore alias name
WS_SIG_PROP_KEYSTORE_PW  :  String = "__SignaturePropKeystorePassword"
WS-Security signature: the signature keystore password.
WS_SIG_PROP_KEYSTORE_TYPE  :  String = "__SignaturePropKeystoreType"
WS-Security: the signature keystore type ( jks or pkcs12 ). The default is jks.
Note: The keystore file must have the basename of the WSDL file and the file extension of the keystore type. For example: MyService.jks. The keystore file must be placed in the same cartridge directory as the WSDL file.
WS_SIGNATURE  :  String = "Signature"
WS-Security action: sign the message. The signature-specific parameters define how to sign, which keys to use, and other parameters.
WS_SIGNATURE_PARTS  :  String = "signatureParts"
WS-Security signature: defines which parts of the request are signed.
WS_SIGNATURE_USER  :  String = "signatureUser"
WS-Security signature: the user's name for signature.
WS_TIMESTAMP  :  String = "Timestamp"
WS-Security action: add a timestamp to the security header.
WS_USER  :  String = "user"
WS-Security user name.
WS_USERNAME_TOKEN  :  String = "UsernameToken"
WS-Security action: add a UsernameToken identification.
Constructor Summary
Method Summary
static getHTTPRequestHeader(svc : Object, key : String) : String
Returns an HTTP request header property value using the specified key.
static getHTTPResponseHeader(svc : Object, key : String) : String
Returns an HTTP response header property value using the specified key.
static setHeader(svc : Object, xml : String) : void
Sets a new SOAPHeaderElement in the SOAP request with the namespace of the XML content.
static setHeader(svc : Object, xml : String, mustUnderstand : boolean) : void
Sets a new SOAPHeaderElement in the SOAP request with the namespace of the XML content.
static setHeader(svc : Object, namespace : String, name : String, xml : String) : void
Creates a new SOAPHeaderElement with the name and namespace and places the given XML into it.
static setHeader(svc : Object, namespace : String, name : String, xml : String, mustUnderstand : boolean) : void
Creates a new SOAPHeaderElement with the name and namespace and places the given XML into it.
static setHeader(svc : Object, namespace : String, name : String, xml : String, mustUnderstand : boolean, actor : String) : void
Creates a new SOAPHeaderElement with the name and namespace and places the given XML into it.
static setHeader(svc : Object, namespace : String, name : String, xml : Object) : void
Creates a new SOAPHeaderElement with the name and namespace and places the given XML into it.
static setHeader(svc : Object, namespace : String, name : String, xml : Object, mustUnderstand : boolean) : void
Creates a new SOAPHeaderElement with the name and namespace and places the given XML into it.
static setHeader(svc : Object, namespace : String, name : String, xml : Object, mustUnderstand : boolean, actor : String) : void
Creates a new SOAPHeaderElement with the name and namespace and places the given XML into it.
static setHTTPRequestHeader(svc : Object, key : String, value : String) : void
Sets an HTTP request header property using the specified key and value.
static setWSSecurityConfig(svc : Object, requestConfigMap : Object, responseConfigMap : Object) : void
Sets the WS-Security configuration for the request and response based on the constants defined.
Methods inherited from class Object
Constructor Detail
SOAPUtil
public SOAPUtil()

Method Detail
getHTTPRequestHeader
static getHTTPRequestHeader(svc : Object, key : String) : String
Returns an HTTP request header property value using the specified key. Null is returned if the key does not represent an HTTP header property.
Parameters:
svc - a service stub returned from getService().
key - the header property key.
Returns:
an HTTP request header property value using the specified key or null.

getHTTPResponseHeader
static getHTTPResponseHeader(svc : Object, key : String) : String
Returns an HTTP response header property value using the specified key. Null is returned if the key does not represent an HTTP response header property.
Parameters:
svc - a service stub returned from getService().
key - the header property key.
Returns:
an HTTP response header property value using the specified key or null.

setHeader
static setHeader(svc : Object, xml : String) : void
Sets a new SOAPHeaderElement in the SOAP request with the namespace of the XML content.
Parameters:
svc - a service stub returned from getService()
xml - a string with arbitrary XML content

setHeader
static setHeader(svc : Object, xml : String, mustUnderstand : boolean) : void
Sets a new SOAPHeaderElement in the SOAP request with the namespace of the XML content.
Parameters:
svc - a service stub returned from getService()
xml - a string with arbitrary XML content
mustUnderstand - sets the SOAP header attribute 'mustUnderstand'

setHeader
static setHeader(svc : Object, namespace : String, name : String, xml : String) : void
Creates a new SOAPHeaderElement with the name and namespace and places the given XML into it.
Parameters:
svc - a service stub returned from getService()
namespace - the namespace of the header element
name - the element name for the header element
xml - a string with arbitrary XML content

setHeader
static setHeader(svc : Object, namespace : String, name : String, xml : String, mustUnderstand : boolean) : void
Creates a new SOAPHeaderElement with the name and namespace and places the given XML into it.
Parameters:
svc - a service stub returned from getService()
namespace - the namespace of the header element
name - the element name for the header element
xml - a string with arbitrary XML content
mustUnderstand - sets the SOAP header attribute mustUnderstand

setHeader
static setHeader(svc : Object, namespace : String, name : String, xml : String, mustUnderstand : boolean, actor : String) : void
Creates a new SOAPHeaderElement with the name and namespace and places the given XML into it.
Parameters:
svc - a service stub returned from getService()
namespace - the namespace of the header element
name - the element name for the header element
xml - a string with arbitrary XML content
mustUnderstand - sets the SOAP header attribute mustUnderstand
actor - the SOAP actor, which should be set for this header element. null removes any actor.

setHeader
static setHeader(svc : Object, namespace : String, name : String, xml : Object) : void
Creates a new SOAPHeaderElement with the name and namespace and places the given XML into it.
Parameters:
svc - a service stub returned from getService()
namespace - the namespace of the header element
name - the element name for the header element
xml - a E4X XML object

setHeader
static setHeader(svc : Object, namespace : String, name : String, xml : Object, mustUnderstand : boolean) : void
Creates a new SOAPHeaderElement with the name and namespace and places the given XML into it.
Parameters:
svc - a service stub returned from getService()
namespace - the namespace of the header element
name - the element name for the header element
xml - a E4X XML object
mustUnderstand - sets the SOAP header attribute mustUnderstand

setHeader
static setHeader(svc : Object, namespace : String, name : String, xml : Object, mustUnderstand : boolean, actor : String) : void
Creates a new SOAPHeaderElement with the name and namespace and places the given XML into it.

 var usernameToken : XML =
   <wsse:UsernameToken xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
       <wsse:Username>{merchantID}</wsse:Username>
       <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">
           {merchantPassword}
       </wsse:Password>
   </wsse:UsernameToken>
 SOAPUtil.setHeader( service, "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd",
  "Security", usernameToken, true, null
  
Parameters:
svc - a service stub returned from getService()
namespace - the namespace of the header element
name - the element name for the header element
xml - a E4X XML object
mustUnderstand - sets the SOAP header attribute 'mustUnderstand'
actor - the SOAP actor, which should be set for this header element. null removes any actor.

setHTTPRequestHeader
static setHTTPRequestHeader(svc : Object, key : String, value : String) : void
Sets an HTTP request header property using the specified key and value.
Parameters:
svc - a service stub returned from getService().
key - the header property key.
value - the header property value. If the value is null, the property identified by the key is removed from the HTTP request header.

setWSSecurityConfig
static setWSSecurityConfig(svc : Object, requestConfigMap : Object, responseConfigMap : Object) : void
Sets the WS-Security configuration for the request and response based on the constants defined.
Parameters:
svc - a service stub returned from getService()
requestConfigMap - the WS-Security request config
responseConfigMap - the WS-Security response config

X Privacy Update: We use cookies to make interactions with our websites and services easy and meaningful, to better understand how they are used. By continuing to use this site you are giving us your consent to do this. Privacy Policy.