Deploying the Endpoint Controller on macOS with Jamf Pro
Deploy the Endpoint Controller to managed macOS computers with Jamf Pro to install and configure the Endpoint Controller centrally instead of sending download links to individual users.
The Jamf Pro deployment:
-
Installs the PingOne Privilege Endpoint Controller.
-
Preapproves the macOS system extensions and full disk access.
-
Generates the client configuration that the Endpoint Controller needs to register the device with PingOne Privilege.
|
This guide only applies to Endpoint Controller-based deployments. After deployment, users open their onboarding link to complete registration and access the PingOne Privilege user console. Learn more in Onboarding users. |
Before you begin
Ensure the following:
-
You can access the Jamf Pro admin console, and the target computers are enrolled in Jamf Pro.
-
You’ve installed the Endpoint Controller. You need its Controller URL and Tenant ID.
-
You’ve generated a key pair for MDM onboarding:
-
You’ve uploaded the public key to your PingOne Privilege tenant under Settings > MDM Onboarding. Learn more in Verifying MDM onboarding in PingOne Privilege.
-
You’ve added the private key in Base64 format to your Jamf portal, typically through an extension attribute.
PingOne Privilege supports the RSA, ECDSA, and Ed25519 algorithms.
-
|
MDM deployment doesn’t replace PingOne group access. A computer can be successfully managed by Jamf Pro and still require its user to belong to a group with access to the PingOne Privilege application. Confirm group access in Setting up your environment in PingOne before you deploy. |
Deployment overview
You perform most of this deployment in the Jamf Pro admin console. The enrollment and Endpoint Controller verification steps take place on each target Mac, and the MDM onboarding verification takes place in the PingOne Privilege admin console.
Deployment consists of the following tasks:
-
Create configuration profiles to preapprove system extensions, activate the network extension, grant full disk access, and push the onboarding configuration.
-
Create the policies for installing the Endpoint Controller and generate the client configuration.
-
Enroll devices and deploy to trigger automated deployment of the Endpoint Controller.
-
Verify the deployment of the Endpoint Controller.
Create configuration profiles
Create the following configuration profiles in Jamf Pro. Each profile uses Computer Level as the level and Install Automatically as the distribution method.
Create the System Extensions profile
This profile preapproves the PingOne Privilege system extensions so users aren’t prompted in System Settings.
-
In Jamf Pro, go to Computers > Configuration Profiles.
-
Click New.
-
In the General section:
-
Enter a Name for the profile, such as
PingOne Privilege System Extensions. -
Set Level to Computer Level.
-
Set Distribution Method to Install Automatically.
-
-
In the left sidebar, click System Extensions, then click Configure.
-
Clear the Allow users to approve system extensions checkbox.
-
In the Allowed System Extensions and Teams IDs section:
-
Enter a Display name for the entry.
-
In the System extension types list, select Non-removable system extensions.
-
In the Team identifier field, enter
6U3RF4C84N. -
Under Non-removable system extensions, click Add and paste
com.pingidentity.AgentLauncher.EndpointSecurity. -
Click Add again and paste
com.pingidentity.AgentLauncher.NetworkFilter.
-
-
Click Save.
Create the Content Filter profile
This profile activates the network extension.
-
In Jamf Pro, go to Computers > Configuration Profiles.
-
Click New.
-
In the General section:
-
Enter a Name for the profile, such as
PingOne Privilege Content Filter. -
Set Level to Computer Level.
-
Set Distribution Method to Install Automatically.
-
-
In the left sidebar, click Content Filter, then click Configure.
-
Enter a Filter name, such as
PingOne Privilege. -
For Identifier, enter
com.procyon.ai -
Under Filter type, select Plug-in.
-
Under Socket Filter, select the Enabled checkbox.
-
For Socket filter bundle identifier, enter
com.pingidentity.AgentLauncher.NetworkFilter -
In Socket filter designated requirement, paste the following string:
identifier "com.pingidentity.AgentLauncher.NetworkFilter" and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = "6U3RF4C84N"
-
-
Click Save.
Create the Privacy Preferences Policy Control profile
This profile grants full disk access to the endpoint security extension, which the Endpoint Controller needs to discover personal agents.
-
In Jamf Pro, go to Computers > Configuration Profiles.
-
Click New.
-
In the General section:
-
Enter a Name for the profile, such as
PingOne Privilege PPPC. -
Set Level to Computer Level.
-
Set Distribution Method to Install Automatically.
-
-
In the left sidebar, click Privacy Preferences Policy Control, then click Configure.
-
Under App Access, click Add.
-
For Identifier, enter
com.pingidentity.AgentLauncher.EndpointSecurity -
Under Identifier type, select Bundle ID.
-
In Code requirement, paste the following string:
identifier "com.pingidentity.AgentLauncher.EndpointSecurity" and anchor apple generic and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and certificate leaf[subject.OU] = "6U3RF4C84N"
-
-
In the App or Service list, find SystemPolicyAllFiles and change the list to Allow.
-
Click Save.
Create the Onboard preference plist
This profile pushes the custom configuration variables, such as the tenant ID and user information, to the Mac.
-
In Jamf Pro, go to Computers > Configuration Profiles.
-
Click New.
-
In the General section:
-
Enter a Name for the profile, such as
PingOne Privilege Onboard. -
Set Level to Computer Level.
-
Set Distribution Method to Install Automatically.
-
-
In the left sidebar, click Application & Custom Settings, then click Configure.
-
Choose the option to enter Extensible Markup Language (XML) manually, or upload a PLIST, and paste the following plist, replacing the placeholders with your environment values:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>tenant</key> <string>[Insert Tenant ID]</string> <key>macuser</key> <string>$USERNAME</string> <key>privuser</key> <string>$USERNAME</string> <key>expiryHours</key> <string>$EXTENSIONATTRIBUTE_4</string> <key>privateKeyBase64</key> <string>$EXTENSIONATTRIBUTE_2</string> <key>controllerURL</key> <string>[Insert Controller URL]</string> </dict> </plist>The $EXTENSIONATTRIBUTE_* placeholders refer to the Jamf extension attributes that hold the private key in Base64 format and the onboarding expiry, in hours. Adjust the attribute numbers to match the extension attributes in your Jamf Pro environment.
-
Click Save.
Create the policies
In the Jamf Pro admin console, create the policies that install the Endpoint Controller and build the user’s client configuration.
Create the agent installation policy
This policy installs the Endpoint Controller.
-
In the Jamf Pro admin console, go to Computers > Policies and click New.
-
In the General section:
-
Enter a Display name, such as
PingOne Privilege Agent Install. -
Set Trigger to Custom and enter
procyon-agent-installin the text box. -
Set Execution frequency to Once per computer.
-
-
In the left sidebar, click Packages, then click Configure.
-
Find the PingOne Privilege
.pkgfile you uploaded to Jamf Pro and click Add. -
Click Save.
Create the configuration-creation policy
This policy is the main deployment policy. It calls the installation policy, waits for the Endpoint Controller to install, and then builds the user’s client configuration file.
-
In Jamf Pro, go to Computers > Policies.
-
Click New.
-
In the General section:
-
Enter a Display name, such as
procyon-onboard. -
Select the Enabled checkbox.
-
Set Trigger to Recurring Check-in (or your preferred deployment trigger).
-
Set Execution frequency to Once per computer.
-
-
In the left sidebar, click Scripts, then click Configure.
-
Add a new script, set the priority to After, and paste the following script:
#!/bin/sh # PingOne Privilege config-creation policy # Triggers the agent install policy, then runs until config.json is created. LOG=/var/log/pingone-privilege-postinstall.log log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> "$LOG"; } APP="/Applications/PingOne Privilege.app" APP_BIN="/usr/local/bin/cyononboard" PREFS="/Library/Managed Preferences/com.pingidentity.privilege.onboard.plist" # Trigger the installation policy log "config-policy: calling custom event procyon-agent-install..." /usr/local/bin/jamf policy -event procyon-agent-install if [ ! -d "$APP" ]; then log "config-policy: agent app not installed yet - exiting 1, will retry" exit 1 fi CONSOLE_USER=$(/usr/bin/stat -f%Su /dev/console 2>/dev/null) if [ -z "$CONSOLE_USER" ]; then TARGET_USER=$(/usr/libexec/PlistBuddy -c 'Print :macuser' "$PREFS" 2>/dev/null) else TARGET_USER=$CONSOLE_USER fi if [ -z "$TARGET_USER" ]; then log "config-policy: no console user and no macuser in profile - exiting 1, will retry" exit 1 fi CONFIG="/Users/$TARGET_USER/.config/procyon/config.json" if [ -s "$CONFIG" ]; then log "config-policy: $CONFIG exists - nothing to do" exit 0 fi ATTEMPTS=0 until "$APP_BIN" >> "$LOG" 2>&1; do ATTEMPTS=$((ATTEMPTS + 1)) log "config-policy: attempt $ATTEMPTS failed (MDM profile may not be installed yet)" if [ "$ATTEMPTS" -ge 20 ]; then log "config-policy: profile still missing after 20 attempts - exiting 1, Jamf will retry" exit 1 fi sleep 30 done if [ -s "$CONFIG" ]; then log "config-policy: created $CONFIG for $TARGET_USER" exit 0 fi log "config-policy: cyononboard exited 0 but $CONFIG missing - exiting 1, will retry" exit 1 -
Click Save.
Enroll devices and deploy
To trigger the automated deployment on a user’s Mac:
-
On the target Mac, go to
https://<your-jamf-instance>.jamfcloud.com/enroll/. -
Download and install the MDM profile onto the system.
After the Mac is successfully enrolled, the entire process takes place automatically in the background:
-
The configuration profiles are applied.
-
The Endpoint Controller is installed.
-
The personalized configuration file is securely generated.
On first launch, the Endpoint Controller opens, the extensions activate without prompting for manual approval in System Settings, and the users are registered when they open the application.
Verify MDM onboarding in PingOne Privilege
-
In the PingOne Privilege admin console, go to Settings.
-
In the MDM Onboarding section, confirm that it displays the public key from the key pair you generated. Computers use this key to enroll and verify with PingOne Privilege.
Verify the deployment
After Jamf Pro deploys the profiles and policies:
-
In Jamf Pro, confirm that Jamf Pro installed the configuration profiles on the target computers.
-
On a target Mac, confirm that the Endpoint Controller created the client configuration file for the user at
~/.config/procyon/config.json. -
On the target Mac, open the Endpoint Controller and confirm the Connection Status reports Connected.
The General page also displays the tenant and device information.
| If the Endpoint Controller displays a QR code, the device isn’t registered. Verify that the configuration-creation policy completed successfully, then have the user open the onboarding link again. |