sfcc-dev-mcp
Version:
MCP server for Salesforce B2C Commerce Cloud development assistance including logs, debugging, and development tools
333 lines (184 loc) • 13.9 kB
Markdown
## Package: dw.rpc
# Class SOAPUtil
## Inheritance Hierarchy
- Object
- dw.rpc.SOAPUtil
## Description
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; } }
## Constants
## Properties
## Constructor Summary
SOAPUtil()
## Method Summary
### getHTTPRequestHeader
**Signature:** `static getHTTPRequestHeader(svc : Object, key : String) : String`
Returns an HTTP request header property value using the specified key.
### getHTTPResponseHeader
**Signature:** `static getHTTPResponseHeader(svc : Object, key : String) : String`
Returns an HTTP response header property value using the specified key.
### setHeader
**Signature:** `static setHeader(svc : Object, xml : String) : void`
Sets a new SOAPHeaderElement in the SOAP request with the namespace of the XML content.
### setHeader
**Signature:** `static setHeader(svc : Object, xml : String, mustUnderstand : boolean) : void`
Sets a new SOAPHeaderElement in the SOAP request with the namespace of the XML content.
### setHeader
**Signature:** `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.
### setHeader
**Signature:** `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.
### setHeader
**Signature:** `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.
### setHeader
**Signature:** `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.
### setHeader
**Signature:** `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.
### setHeader
**Signature:** `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.
### setHTTPRequestHeader
**Signature:** `static setHTTPRequestHeader(svc : Object, key : String, value : String) : void`
Sets an HTTP request header property using the specified key and value.
### setWSSecurityConfig
**Signature:** `static setWSSecurityConfig(svc : Object, requestConfigMap : Object, responseConfigMap : Object) : void`
Sets the WS-Security configuration for the request and response based on the constants defined.
## Constructor Detail
## Method Detail
## Method Details
### getHTTPRequestHeader
**Signature:** `static getHTTPRequestHeader(svc : Object, key : String) : String`
**Description:** Returns an HTTP request header property value using the specified key. Null is returned if the key does not represent an HTTP header property.
**Deprecated:**
use webreferences2 instead
**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
**Signature:** `static getHTTPResponseHeader(svc : Object, key : String) : String`
**Description:** 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.
**Deprecated:**
use webreferences2 instead
**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
**Signature:** `static setHeader(svc : Object, xml : String) : void`
**Description:** Sets a new SOAPHeaderElement in the SOAP request with the namespace of the XML content.
**Deprecated:**
use webreferences2 instead
**Parameters:**
- `svc`: a service stub returned from getService()
- `xml`: a string with arbitrary XML content
---
### setHeader
**Signature:** `static setHeader(svc : Object, xml : String, mustUnderstand : boolean) : void`
**Description:** Sets a new SOAPHeaderElement in the SOAP request with the namespace of the XML content.
**Deprecated:**
use webreferences2 instead
**Parameters:**
- `svc`: a service stub returned from getService()
- `xml`: a string with arbitrary XML content
- `mustUnderstand`: sets the SOAP header attribute 'mustUnderstand'
---
### setHeader
**Signature:** `static setHeader(svc : Object, namespace : String, name : String, xml : String) : void`
**Description:** Creates a new SOAPHeaderElement with the name and namespace and places the given XML into it.
**Deprecated:**
use webreferences2 instead
**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
**Signature:** `static setHeader(svc : Object, namespace : String, name : String, xml : String, mustUnderstand : boolean) : void`
**Description:** Creates a new SOAPHeaderElement with the name and namespace and places the given XML into it.
**Deprecated:**
use webreferences2 instead
**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
**Signature:** `static setHeader(svc : Object, namespace : String, name : String, xml : String, mustUnderstand : boolean, actor : String) : void`
**Description:** Creates a new SOAPHeaderElement with the name and namespace and places the given XML into it.
**Deprecated:**
use webreferences2 instead
**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
**Signature:** `static setHeader(svc : Object, namespace : String, name : String, xml : Object) : void`
**Description:** Creates a new SOAPHeaderElement with the name and namespace and places the given XML into it.
**Deprecated:**
use webreferences2 instead
**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
**Signature:** `static setHeader(svc : Object, namespace : String, name : String, xml : Object, mustUnderstand : boolean) : void`
**Description:** Creates a new SOAPHeaderElement with the name and namespace and places the given XML into it.
**Deprecated:**
use webreferences2 instead
**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
**Signature:** `static setHeader(svc : Object, namespace : String, name : String, xml : Object, mustUnderstand : boolean, actor : String) : void`
**Description:** 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
**Deprecated:**
use webreferences2 instead
**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
**Signature:** `static setHTTPRequestHeader(svc : Object, key : String, value : String) : void`
**Description:** Sets an HTTP request header property using the specified key and value.
**Deprecated:**
use webreferences2 instead
**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
**Signature:** `static setWSSecurityConfig(svc : Object, requestConfigMap : Object, responseConfigMap : Object) : void`
**Description:** Sets the WS-Security configuration for the request and response based on the constants defined.
**Deprecated:**
use webreferences2 instead
**Parameters:**
- `svc`: a service stub returned from getService()
- `requestConfigMap`: the WS-Security request config
- `responseConfigMap`: the WS-Security response config
---