Development Considerations for Implementing WS-Security in Asynchronous Request/Response Service Operations

This section discusses development considerations for implementing WS-Security in asynchronous request/response service operations and discusses how to:

  • Digitally sign responses in asynchronous request/response service operations.

  • Secure responses in asynchronous request/response service operations.

Digitally Signing Responses in Asynchronous Request/Response Service Operations

This section applies to inbound asynchronous request/response service operations defined with any-to-local routing definitions.

In any-to-local routing definitions, no requesting node is present. As a result no digital certificate information that is normally defined at the node level is included with the request. However, the request does contain a RequestAliasName parameter that is populated with the certificate issuer’s credentials that the integration gateway uses to process the request.

To digitally sign a response for an asynchronous request/response service operation, in the response set the RequestAliasName parameter equal to the same value that was set for the parameter on the request message. The integration gateway reads that value and can then determine the certificate to use in the response.

The following example shows how to code a digitally-signed response for an asynchronous request/response service operation:

import PS_PT:Integration:INotificationHandler;
class FLIGHTDATA_RETURN implements PS_PT:Integration:INotificationHandler
   method FLIGHTDATA_RETURN();
   method OnNotify(&MSG As Message);
end-class;
/* constructor */
method FLIGHTDATA_RETURN
end-method;
method OnNotify
   /+ &MSG as Message +/
   /+ Extends/implements PS_PT:Integration:INotificationHandler.OnNotify +/
   /* Variable Declaration */
   Local string &str, &value;
   Local Rowset &rs;
   Local integer #
   Local Message &MSG_resp;
   Local Record &FLIGHTDATA, &REC;
   &rs = &MSG.GetPartRowset(1);
   /* process request data */
   &MSG_resp = CreateMessage(Operation.FLIGHTPLAN_ARR, %IntBroker_Response);
   &rs = &MSG_resp.GetPartRowset(1);
   /* popualate response data */
   If &MSG.IsSourceNodeExternal Then
      /* set WS Addressing information and WS_RequestAliasName 
   if security to be added to response message */
      &MSG_resp.IBInfo.WSA_MessageID = &MSG.IBInfo.WSA_MessageID;
      &MSG_resp.IBInfo.WSA_ReplyTo = &MSG.IBInfo.WSA_ReplyTo;
      &MSG_resp.IBInfo.WS_RequestAliasName = &MSG.IBInfo.WS_RequestAliasName;
   Else
      /* request from PSFT system */
      &MSG_resp.IBInfo.WSA_ReplyTo = &MSG.TransactionId;
   End-If;
   %IntBroker.Publish(&MSG_resp);
end-method;

Securing Responses in Asynchronous Request/Response Service Operations

PeopleSoft Integration Broker sends responses for asynchronous request/response service operations to the URL set in the Target Location field in on the Service Configuration page. The URL specified on this page is typically not secure, as it is the URL used for all WSDL, schemas, and web transactions.

When providing asynchronous request/responses, you can dynamically override the URL using the IBInfo object property WSA_ReplyTo. For example:

&MSG.IBINFO.WSA_ReplyTo

You set this property typically before the publish or during the OnSend event.