How it works: Liberty angel process

The angel process is a long-running started task that allows Liberty servers to use z/OS® authorized services. It is required if a Liberty JVM server in CICS® needs to perform authentication and authorization against the RACF® registry.

On z/OS, access to the SAF registry is considered an authorized service. When the CICS security domain makes calls to SAF, it can use its SVC routine, DFHCSVC, which is loaded from the authorized LPA to make authorized calls to SAF. This option is not available to Liberty JVM servers because the CICS SVC is a private interface. Instead, it uses a program call (PC) instruction to another address space, which is itself authorized. The angel process is configured to run authorized, and Liberty servers can connect to it to call authorized services (see Figure 1). When a Liberty server is run in a CICS region, the angel process is the only way for the Liberty server to authenticate users with the SAF registry. The access to its services is controlled by the SAFCRED resource profiles.
Important: Liberty normally offers the ability to fail over to unauthorized z/OS services to authenticate requests when the angel process is disabled. If you use a Liberty server in CICS, this function is not supported because CICS does not support the use of program-controlled libraries.
Figure 1. How Liberty servers call the angel process
A diagram showing how Liberty servers call the angel process when receiving a HTTP request from the client. The security support in use is also shown.

Angel process connectivity

A Liberty server can connect to only one angel process at server startup. However, multiple Liberty servers can share the angel process, independent of the level of code that the servers are running. By default, the angel process is unnamed, and all Liberty servers will connect to the default unnamed angel process. However, you can use named angels to achieve more flexible configuration, including sharing an angel process across a selection of Liberty servers.

An angel process can only service Liberty servers that run on the same LPAR. Each LPAR can have multiple named angel processes but only one default angel process.

Named angel process

Liberty Fix pack 16.0.0.4 introduced the notion of a named angel that allows multiple uniquely named angel processes to run on a single z/OS system, in addition to the default unnamed angel process. A named angel has the same function as the default angel process but it can be used for a selected group of Liberty servers. This isolates different product stacks or Liberty installations from one another so that they can run different service levels or be managed independently.

Best practice: It is recommended to use a single named angel process for all the Liberty servers that run inside the same CICS region. This named angel process can also be shared by other Liberty servers within the z/OS LPAR, unless further isolation is required. This condition occurs regardless of the level of code that the Liberty servers are running or whether they are running in a CICS Liberty JVM server.

For more information about named angel processes, see Named angel.

Angel process version and interoperability

Liberty servers that are running on a z/OS image can share a single angel process, regardless of the level of Liberty code that the servers are using.

Best practice: It is best practice to upgrade the level of the angel process before you upgrade the servers that use it. Upgrading in that order ensures continued support for older Liberty servers while continued access is provided to the latest authorized services and functions.
Important: You can choose to run a different version of the angel process that is bundled with another product rather than the one bundled with CICS Liberty. However, no matter which product the angel process is bundled with, it must be equal to or later than the version of CICS Liberty. Therefore, if the angel process that is bundled with the other product is earlier than that bundled with CICS Liberty, you must use the angel process bundled with CICS Liberty.

You can identify the Liberty version of the angel process and the Liberty server that's running in CICS as shown in Managing a Liberty angel process.

For more information on the Liberty angel process usage with CICS, see Using the Liberty angel to access authorized z/OS services.