API Only System Admin Configuration and Client Credentials
ARVault Salesforce Client Credentials Setup with System Administrator Service Account
This guide explains how to configure ARVault for Salesforce OAuth 2.0 Client Credentials flow using a dedicated Salesforce service account with the System Administrator profile. It also includes verification steps using Postman and curl.
Why use the System Administrator profile?
In Salesforce, User License and Profile are separate concepts. The user license controls what a user can access, while the profile grants permissions. The System Administrator profile is available only under the standard Salesforce user license. It is not available under the free Salesforce Integration license.
Therefore, “use System Administrator” also means “use the Salesforce user license.” You are not necessarily buying a new license; you are using one of the paid Salesforce user license slots your org already owns.
License check before proceeding
Go to Setup → Company Information and review the Salesforce row in the User Licenses table.
If Remaining ≥ 1, you can create the ARVault service account at no additional cost because it consumes one unused slot.
If Remaining = 0, deactivate a departed user to free a slot or purchase one additional license.
System Administrator vs. Salesforce Integration license
Property
Salesforce license + System Administrator profile
Salesforce Integration license + Salesforce API Only profile
Additional cost
None if Remaining ≥ 1; otherwise one paid license
Free, typically 5 per org
Access to newly created custom objects
Automatic
Manual permission set update per object
Access to new standard objects from Salesforce releases
Automatic
Manual
Field-level access on new fields
Automatic
Often manual
Metadata API operations
Works
Works with explicit permissions
View All Data / Modify All Data effective on all objects
Yes
License filters some objects
Ongoing maintenance after schema changes
None
Based on Least Privileged Selection, Per-object updates by customer admin
Bottom line: If you have a spare Salesforce license slot, this path costs nothing extra and avoids ongoing permission maintenance. For automated backup, archive, and restore, where new objects and fields appear as the customer schema evolves, this is the right approach.
Prerequisites
Salesforce edition: Enterprise, Performance, Unlimited, or Developer. Client Credentials is not available on Group or Essentials.
My Domain active. Setup → My Domain must show a Current My Domain URL. Orgs created after Winter ’22 usually have this enabled by default.
One available paid Salesforce user license, preferably Salesforce. Check Setup → Company Information → User Licenses.
Admin rights to create users, edit profiles or permission sets, configure External Client Apps, and modify Network Access settings.
Salesforce configuration
Create the dedicated Salesforce service account
Before you start: Confirm that a free Salesforce user license slot exists. Go to Setup → Company Information → User Licenses → Salesforce row → Remaining ≥ 1.
Go to Setup → Users → Users → New User.
First Name: ARVault
Last Name: Service Account
Alias: arvsvc
Email: a monitored mailbox for password resets and admin notifications
Username: arvault-service@.com, globally unique across all Salesforce orgs
Nickname: arvault-service
User License: Salesforce, not Salesforce Integration
Profile: System Administrator
Time Zone / Locale / Language: match the org defaults
Uncheck Generate new password and notify user immediately. This account does not need interactive login.
Save the user.
The user should now appear in Setup → Users with status Active. Do not use this user for UI login; treat it strictly as a machine identity.
Optional: clone the System Administrator profile
If your security team does not want to assign the literal System Administrator profile, clone it and remove only permissions that are truly irrelevant to ARVault. Do not remove the following permissions:
View All Data
Modify All Data
View Setup and Configuration
Customize Application
Modify Metadata Through Metadata API Functions
Author Apex
View All Users
View All Custom Settings
Bulk API Hard Delete
Schedule Jobs
Object permissions required for backup, archive, and restore workloads
For most customers, the standard System Administrator profile is simpler and receives automatic Salesforce permission updates.
Lock the service account down to API-only
The service account should never authenticate through the Salesforce browser UI.
Enable API Only User
Create a permission set named ARVault API Only Lockdown.
Enable the API Only User system permission.
Assign the permission set to the ARVault service account.
Reset or freeze the password
Go to Setup → Users and open ARVault Service Account.
Select Reset Password.
Use a strong, unguessable password and discard it after setup, or leave the user without an interactive password if your process allows it.
The Client Credentials flow does not use the user password.
Handle MFA for API access
For most orgs, Client Credentials flow does not require an MFA prompt because it is a server-to-server OAuth flow with no interactive login step. Test first before adding extra MFA configuration.
Recommended option — Trusted IP Ranges
Go to Setup → Network Access → New.
Add ARVault’s outbound IP range or ranges after they are provided.
Use this for production when you want token requests to work only from known ARVault infrastructure.
Practical option — test first
Run Postman Request 1 from the testing section.
If the response is 200 with an access_token, MFA is not blocking the flow.
If the response includes an MFA-related invalid_grant, configure Trusted IP Ranges or adjust the org-level MFA policy with the Salesforce admin.
Create the External Client App
Go to Setup → External Client App Manager → New External Client App.
External Client App Name: ARVault Integration
Contact Email: customer admin email
Distribution State: Local
Under OAuth Settings, check Enable OAuth.
Set Callback URL to https://localhost/no-redirect. It is required but unused for Client Credentials.
Manage user data via APIs (api) — required
Access the identity URL service (id, profile, email, address, phone) — required for userinfo
Access unique user identifiers (openid) — optional
Do not select Perform requests at any time (refresh_token, offline_access)
Full access (full) — optional
Under OAuth Flow Enablement, check Enable Client Credentials Flow.
Save.
Configure OAuth Policies and Run-As user
Open the saved External Client App detail page.
Open OAuth Policies.
Set Permitted Users to Admin approved users are pre-authorized.
Set IP Relaxation to Relax IP restrictions initially. Later, tighten this to Enforce IP restrictions after ARVault outbound IPs are known and added to Network Access.
Leave Refresh Token Policy at the default. It is not used by Client Credentials.
Under Client Credentials Flow, set Run As to ARVault Service Account.
Save.
Pre-authorize the app
In the External Client App detail page, open App Policies.
In Select Profiles, move System Administrator or your cloned profile to Selected Profiles.
If you created the ARVault API Only Lockdown permission set, add it under Select Permission Sets as well.
Save.
Pre-authorizing the profile allows the Run-As sysadmin service account to use the External Client App. Access still requires the Consumer Key and Consumer Secret.
Configuration verification checklist
My Domain is active and the Current My Domain URL is available.
Service account user is created with User License = Salesforce.
Service account profile is System Administrator or an approved clone.
Service account status is Active.
API Only User permission is enabled for the service account.
Password is unguessable and discarded, or not used interactively.
External Client App is created with OAuth enabled.
OAuth scopes include api and identity/userinfo scopes.
refresh_token and offline_access are not selected.
Enable Client Credentials Flow is checked.
OAuth Policies → Permitted Users is set to Admin approved users are pre-authorized.
OAuth Policies → Client Credentials Flow → Run As is set to ARVault Service Account.
App Policies include the System Administrator profile or approved clone.
Optional Trusted IP Ranges are configured for ARVault outbound IPs.
Consumer Key and Consumer Secret are retrieved.
My Domain URL is recorded with no trailing slash.
Expected userinfo response
Postman Request 2 should return user information for the ARVault service account. ARVault stores preferred_username in SF_NM_USER.
This confirms that ARVault is connected as the machine identity rather than a human admin account.
Common setup mistakes
Mistake
Symptom
Fix
Used Salesforce Integration license instead of Salesforce
Object queries fail with INVALID_TYPE on newly created custom objects
Recreate the user with paid Salesforce license and System Administrator profile
Forgot API Only User
Service account can log into the UI, causing a security audit finding
Enable API Only User through a permission set assigned to the service account
Pre-authorized only a permission set, not the profile
Token mint returns invalid_grant, user hasn't approved this consumer
Add System Administrator or cloned profile to App Policies → Select Profiles
MFA enforced and no IP exemption
Token mint fails for an MFA-related reason
Add ARVault outbound IPs to Network Access, or verify whether Client Credentials already bypasses MFA
Forgot to enable Client Credentials Flow
error=unsupported_grant_type
Enable Client Credentials Flow in OAuth Settings
Used login.salesforce.com as the token endpoint
404 or HTML error page
Use the org’s My Domain URL
Comparison summary
Setup activity
Integration User path
Sysadmin path
User license
Salesforce Integration, free
Salesforce, paid license slot
Profile
Salesforce API Only System Integrations
System Administrator or clone
Permission set
Required and extensive
Optional, mainly for API-only lockdown
Object permission management
Manual per object
Automatic for current and future objects
MFA handling
License may bypass MFA
Client Credentials generally bypasses MFA; Trusted IPs may be used
Maintenance after new object creation
Manual permission set updates
None
Best fit
Narrow, read-only, fixed-schema integrations
Backup, archive, and restore products such as ARVault
Consumer Key Configuration
Provide the following values to the person completing the ARVault registration:
Consumer Key
Consumer Secret
My Domain URL, with no trailing slash
Key Salesforce documentation
Last updated
Was this helpful?

