Author Info
Chris Malek

Chris Malek is a PeopleTools® Technical Consultant with two decades of experience working on PeopleSoft enterprise software projects. He is available for consulting engagements.

About Chris Work with Chris
Looking for pain-free PeopleSoft web services? 😀
PeopleSoft Simple Web Services (SWS)

Introducing a small but powerful PeopleSoft bolt-on that makes web services very easy. If you have a SQL statement, you can turn that into a web service in PeopleSoft in a few minutes.

Contents

Node Ping Deep Dive

In this section, we’ll discuss PeopleSoft node pings, which are primarily related to the HttpTargetConnector. You can also ping another PeopleSoft system when two PeopleSoft system are communicating with each other.

  • The purpose of the node ping is to test the connection between PeopleSoft and the target server on a few key aspects.

    • Can the PeopleSoft server resolve the host name in DNS.
    • Can the PeopleSoft server reach the target server over the network.
      • This is both egress of PepleSoft and ingress of the target server.
    • Can the PeopleSoft server establish a TLS connection with the target server.
      • Have you imported the correct certificates into the key store?
  • You should only use a node ping when PeopleSoft acts as the HTTP client initiating the connection.

  • Using a node ping when PeopleSoft is functioning as a server does not make sense and does NOT testing anything.

    • Many people mistakenly try to test a node ping in this scenario, but it won’t make sense.

When integrating with a external node using the HttpTargetConnector that end-point must support a GET operation and return status 200 or PeopleSoft can have problem with asynchronous retry logic as the node is pinged to determine if things are back online. (see HttpTargetConnector

Set Up Base Node

First let’s setup a new node to see what the NODE ping does.

  • Create a new node in PeopleSoft.
    • Type: External
    • Default User ID: A user with no access. (See Node Security Best Practices for more information.)
    • Authentication: None if and only if you have a user that has no access.
  • I am going to setup the HTTPTARGET connector ID and set some properties to post to a test server at https://web.tools.cedarhillsgroup.com/anything/server/. This is a test server that temporarily stores the HTTP request and we can go look at it on a web page.

After this is setup we have to import the certificates into the key store.

First Ping

  • Now let’s test the connection by pressing the “Ping Node” button.
    • If successful, you will see a message like this.
  • Let’s go look at the request on the test server.
    • The page over at https://web.tools.cedarhillsgroup.com/anything/ will let you view logged requests
GET /anything/server/ 
From: PSFT_CS
Nonrepudiation: False
To: CHG_PING_TEST
Transactionid: PING_NODE
User-Agent: Java11.0.22
Accept: application/json
Datachunk: 1
Datachunkcount: 1
  • What do we notice from this:

    • We setup our node to do a POST to the test server.
    • The node ping is a GET request.
    • The node ping is not sending any data.
    • The node ping send along a bung of headers.
  • The test end-pointed returned HTTP Status 200 so the ping reported success.

2nd Ping - Adding Auth Headers

Servers and APIs that you are integrating with, rarely exist on the internet without some sort of Authentication and you will generally add that to the node or routing.

So will the NODE ping send along an authorization header? Great question. Let’s test it.

  • Let’s add a Basic Auth header and test what goes to the server on a ping.
  • Press the node ping button which should return a success.
  • Let’s go view what was posted which we include below and you will see that the Basic Auth header was included.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
GET /anything/server/ 
Transactionid: PING_NODE
Accept: application/json
From: PSFT_CS
Nonrepudiation: False
To: CHG_PING_TEST
Authorization: Basic SuperSecret
Datachunk: 1
Datachunkcount: 1
User-Agent: Java11.0.22

3rd Ping - Adding Other Headers

The HTTPTARGET allows for some headers to be added. You can’t add any header as PeopleSoft edits on the following headers.

  • Accept
  • Accept-Charset
  • Accept-Encoding
  • Accept-Language
  • Accept-Ranges
  • Age
  • Allow
  • Authorization
  • Cache-Control
  • Connection
  • Content-Length
  • Content-Location
  • Content-MD5
  • Content-Range
  • Content-Type
  • Cookie2
  • Date
  • ETag
  • Expect
  • Expires
  • From
  • Host
  • If-Match
  • If-Modified-Since
  • If-None-Match
  • If-Range
  • If-Unmodified-Since
  • Last-Modified
  • Location
  • Max-Forwards
  • Pragma
  • Proxy-Authenticate
  • Proxy-Authorization
  • Range
  • Referer
  • Retry-After
  • SOAPAction
  • SSLProtocols
  • TimeOut
  • Trailer
  • Transfer-Encoding
  • Upgrade
  • User-Agent
  • Vary
  • Via
  • WWW-Authenticate
  • Warning
  • sendUncompressed

Let’s add a few to expirament with if they can sent along and if we can override them.

  • We will add a User-Agent to see if we can override the default.
  • We will add a From to see if we can override the default which is the default local node.
  • We also add an Age header to see if ping passes that.
  • Press the node ping button which should return a success.
  • Let’s go view what was posted to see what happened.
GET /anything/server/ 
User-Agent: JOKE
Authorization: Basic SuperSecret
From: PSFT_CS
To: CHG_PING_TEST
Transactionid: PING_NODE
Nonrepudiation: False
Accept: application/json
Age: 37
Datachunk: 1
Datachunkcount: 1
  • It allow me to override the User-Agent and
  • The From header did not get overridden. Interesting!
  • The Age header was passed along.

Summary

  • The node ping is a GET request even if you have setup your node to do a POST.
  • The node ping does not send any data which makes sense as it is an HTTP GET.
  • The node ping sends along a bunch of headers that are “automatic”
  • You can override some of the headers but not all of them.
  • Most importantly, the authorization header is sent along which is important for testing the connection to the target server.