The PingFederate server tracks user-session state information between HTTP requests; for example, when PingFederate, acting as an IdP, redirects a user's browser to another system for authentication. When the user's browser returns to PingFederate after authentication, the server needs access to the state associated with that user from before the redirection. Another example is keeping track of state between issuing a request to a partner and processing the response. Generally, this state is short-lived.

The InterRequestStateMgmtProxy implementation chooses from among two methods available to track this state: group RPC-based (the clustering default) and local memory-based (the standalone default).

The configuration file is cluster-inter-request-state.conf in the <pf_install>/pingfederate/server/default/conf directory.

Group RPC-based session tracking

This implementation supports both adaptive clustering and directed clustering. For adaptive clustering, PingFederate shares user session-state information with a replica set. If region identifiers are defined, PingFederate shares user session-state information among multiple replica sets across regions. You can optionally override this default behavior in the configuration file for adaptive clustering. For directed clustering, all preferred-node approaches are possible with this implementation.

The service-point InterRequestStateMgmt in the hivemodule.xml file uses the proxy InterRequestStateMgmtProxy to use this implementation as the clustering default. The specific class name is:

org.sourceid.saml20.service.impl.grouprpc.InterRequestStateMgmtGroupRpcImpl

Local memory-based session tracking

In this alternative, the inter-request state of a user is tracked in the local memory of the processing server. This is the standalone default.

The service-point InterRequestStateMgmt in the hivemodule.xml file uses the proxy InterRequestStateMgmtProxy to use this implementation as the clustering default. The specific class name is:

org.sourceid.saml20.service.impl.localmemory.InterReqStateMgmtMapImpl

Local memory-based session tracking and clustering
Group RPC-based session tracking is the clustering default. To use local memory-based session tracking in a clustered environment, update the service-point InterRequestStateMgmt to use the local memory-based session tracking class:

org.sourceid.saml20.service.impl.localmemory.InterReqStateMgmtMapImpl

Note:

The load balancer must support sticky sessions to force all requests for the same user session to be routed to the same server.

Important:

Adaptive clustering does not support this implementation. Use the group RPC-based session tracking instead.