Web Services Guide : Cookbook : How to Create and Register A Custom SstTransport for A Secure Web Service
How to Create and Register A Custom SstTransport for A Secure Web Service
 
Below is a workspace which will register a custom httpsl configuration for a specific web service. The configuration is created and registered with SstTransport. Then the registry entry is mapped to a specific service URL in SstWSContainer's configuration. 
You can set a breakpoint in SstWSConfiguration>>transportSchemeFor: to see how it is looked up.  
The URL for the service is determined from the wsdl binding soap address:
<service name="MyService">
<port binding="tns:MySoapBinding" name="MyPort">
<soap:address location="https://my-server:8888/my-service"/> 
      </port>
This is the unique key you should start with to create your key which will map your configuration to the web service.
The method SstWSContainerConfiguration>>transportSchemeFor: uses only the "https://my-server:my-port" as the lookup key into its configuration mappings table. So given the above service address, the lookup key should be: https://my-server:8888.
| config | 
"The SstTransport class contains a registry of configurations to use when sending/receiving messages.  
Step 1 is to create a configuration for thef set of ssl keys you will be using.
Start with the httpsl light transport configuration -- used by clients-- as a template: "
config := SstHttpsCommunications lightTransportConfiguration copy.
 
"Modify the security configuration to use the appropriate keys for your web service" 
 
(config securityConfiguration)
certificateFilename: 'vast_client2.pem';
privateKeyFilename: 'vast_client2_key.pem';
verify: SciSslConstants::SSL_VERIFY_PEER |
SciSslConstants ::SSL_VERIFY_FAIL_IF_NO_PEER_CERT;
verifyDepth: 1;
caPath: ' ';
caFile: 'vast_ca2.pem'.
 
"Change the name of the identifier from httpsl to a unique name"
config transportIdentifier:  'httpslForMyService'.
 
"For client only you may only need to register httpslForMyService as reachable by https rather than mutually reachable"
 
SstTransport
register: config 
mutuallyReachableBy: (Set
with: config transportIdentifier      
with: SstHttpsCommunications lightTransportConfiguration transportIdentifier).
 
 
"Now Map the url's for the different services to the transport scheme for that service in the container configuration "
"The lookup for the mapping uses what is called the urlAddressString rather than the whole https address for the service
urlAddressString := url sstAsUrl in method SstWSContainerConfiguration>>transortSchemeFor:  " 
 
( SstWSContainer containerNamed: ( SciSocketManager default getHostName)) configuration 
mapUrlScheme: 'https://my-server:8888' toTransportScheme: 'httpslForMyService'.
 
 
Last modified date: 08/16/2019