Integrate ForgeOps with the PingOne Worker service
Why integrate with the PingOne Worker service?
Integrating ForgeOps with the PingOne Worker Service allows a ForgeOps deployment to extend platform capabilities through PingOne Universal Services such as PingOne Protect, PingOne Verify, and others. The PingOne Worker service provides the integration point between ForgeOps and these PingOne services using secrets and configuration.
For example, when integrated with PingOne Protect through the PingOne Worker Service, journeys can use real-time risk scores to make smarter authentication decisions. PingOne Protect evaluates signals such as device, network, and user behavior to produce a risk score for each sign-on event. Journeys can then use that score to adapt authentication journeys dynamically, such as allowing access for low-risk events, prompting step-up authentication for medium-risk events, or denying access for high-risk events.
This guide provides sample instructions for setting up the integration in a ForgeOps deployment running on minikube. You can adapt the instructions for your environment and the PingOne services you want to use.
Set up a PingOne environment
Use the steps in the PingOne documentation to set up a PingOne environment and a PingOne Worker application.
-
Create a PingOne Workforce solution environment as described in Create a PingOne environment.
-
Create a PingOne Worker application as described in Create a PingOne Worker application.
-
Enable the PingOne Worker application by using the
Enableswitch in the upper-right corner of the application overview tab. -
Note the following data from the PingOne Worker application overview tab:
-
Environment ID:
-
Client ID:
-
Client Secret:
-
Set up ForgeOps on minikube
|
-
Use the steps in the Quick deployment on minikube to set up a ForgeOps deployment on minikube. Use the local Helm chart to deploy ForgeOps in step 7 of the Perform ForgeOps deployment section:
helm upgrade --install identity-platform ./charts/identity-platform \ --namespace my-namespace --values helm/my-env/values.yaml
-
Create a filesystem secret:
In the following command, replace
my-client-secretwith the client secret you obtained in the PingOne Application overview.$ kubectl create secret generic pingone-secrets \ --namespace my-namespace \ --from-literal=am.services.pingone.worker.pingprotect.clientsecret='my-client-secret'
-
Modify your ForgeOps deployment environment to set the secret name:
$ cd /path/to/forgeops/bin $ ./forgeops env --env-name my-env --pingone-secret pingone-secrets -
Redeploy ForgeOps to pick up the new secret:
helm upgrade --install identity-platform ./charts/identity-platform \ --namespace my-namespace --values helm/my-env/values.yaml
-
Check if AM pods have started:
$ kubectl get pods --namespace my-namespace $ kubectl rollout status deploy/am --namespace my-namespace
If any pod is in the
ErrororCrashLoopBackOffstate, delete the pod with the kubectl delete pod pod-name command and let Kubernetes restart it. -
Verify that the secret is present and accessible to the AM pod:
$ kubectl exec --namespace my-namespace deploy/am -- ls /var/run/secrets/pingone Defaulted container "openam" out of: openam, ... am.services.pingone.worker.pingprotect.clientsecret -
Configure a secret store in the AM native console:
-
In the AM native console, navigate to Secret Stores > Add Secret Store and create a new secret store with the following values:
Field Value Secret Store ID
p1-worker-service
Store Type
File System Secret Volumes
Directory
/var/run/secrets/pingone
File Suffix
(leave empty)
Value Format
Plain Text
-
-
Configure a Worker Service in AM:
-
In the AM native console, navigate to Services > Add Service > PingOne Worker Server and click Create.
-
In the Secondary Configuration tab, click Add a Secondary Configuration and enter the following values in the New workers configuration form. Then click Save:
Field Value Name
Ping_SDK_Worker (note no spaces!)
Client ID
11a2…..(obtained from PingOne Worker application overview)
Client Secret Label Identifier
pingprotect
Environment ID
b2d….(obtained from the PingOne Worker application overview)
-
In the ensuing WORKERS CONFIGURATION form for
Ping_SDK_Worker, enter the following values and click Save and Test Connection: |PingOne API Server URL and Authorization URL |Select from these options, depending on where the PingOne tenant is hosted:Region API URL Authorization URL North America (Excluding Canada)
https://api.pingone.com/v1
https://auth.pingone.com
Canada
https://api.pingone.ca/v1
https://auth.pingone.ca
Europe
https://api.pingone.eu/v1
https://auth.pingone.eu
Asia-Pacific
https://api.pingone.asia/v1
https://auth.pingone.asia
-
|
The configuration changes made in this section are file-based configuration changes. Therefore, you must export the configuration changes, build a new configuration image, and redeploy as explained in the next steps. Otherwise, you might lose the configuration changes when you redeploy AM. |
Export AM runtime config into a profile and redeploy
To ensure that the new configuration, such as the file system secret store and worker service connection, isn’t lost, the changes must be built into a new image. The following steps show how to export the configuration changes into a new profile, build a new configuration image, and redeploy AM.
-
Create a new profile by exporting the configuration:
$ cd /path/to/forgeops/bin $ ./forgeops config export --baseline-profile default am workerService \ --env-name my-env -
Build the new config image:
$ cd /path/to/forgeops/bin $ ./forgeops config build --env-name my-env \ --config-profile workerService --tag workerService am -
If needed, load the configuration image into minikube:
$ minikube image load am-custom:workerService $ forgeops image --env-name my-env --custom am -
Redeploy ForgeOps to pick up the new config image:
helm upgrade --install identity-platform ./charts/identity-platform \ --namespace my-namespace --values helm/my-env/values.yaml
-
Check status and wait until the rollout is complete:
$ kubectl rollout status deploy/am --namespace my-namespace
Test the integration
-
In the AM native console, navigate to Services > PingOne Worker Service > Secondary Configuration tab > Ping_SDK_Worker > Save and Test Connection.
You should see the Connection was successful message.
-
[Optionally] Configure a test journey by using these links to test the integration: