Security Testing

Salesforce Integration User Testing

Salesforce integration user testing confirms that the API and automation identities connecting your org to middleware, ERP, data platforms and managed packages are scoped to exactly what each integration needs. It proves the identity can perform its contracted operations on its objects, fields and records — and that it is denied everything else, so a leaked credential or a misbehaving job cannot roam the org.

Integration identities are often the broadest, least-reviewed accounts in an org, which makes them a priority for access validation.

What an integration identity is in Salesforce

An integration identity is any user that systems, not people, log in as. Historically many orgs used a full Salesforce license with a cloned System Administrator profile for this. Salesforce now offers a dedicated Salesforce Integration user license for API-only access, paired with the Minimum Access - API Only Integrations profile and the Salesforce API Integration permission set license, so integration access can be granted through permission sets on a deliberately empty baseline. The API Only User permission prevents these identities from logging in to the user interface.

How the identity authenticates shapes what has to be tested. Inbound integrations typically use a connected app with the OAuth JWT bearer flow or the client credentials flow, where the connected app names a run-as user. Outbound callouts use named credentials and external credentials, where access to the external credential's principal is itself granted through permission sets. Packaged integrations often create their own users and permission sets on install.

Integration user testing validates the effective access of each of these identities as a persona. It sits beside API testing, which proves the integration's data is correct, and concentrates on whether the identity has the right rights — no fewer, no more.

Integration identity types and what to validate

Each identity pattern carries a different access footprint and a different set of checks.

Identity patternHow it connectsAccess to validate
Middleware sync userConnected app with JWT bearer flow from MuleSoft or an iPaaSOnly the synchronized objects and mapped fields, with the intended create, update and upsert rights
Client credentials run-as userConnected app issues tokens for a designated run-as userThe run-as user is API-only and scoped, since every token inherits its access
Data platform extract userBulk API reads for warehouse or lake loadsRead-only on extracted objects; no edit, delete or View All beyond the extract scope
Outbound callout principalNamed credential with an external credential principalOnly the permission sets meant to use the principal can invoke the callout
Managed package integration userCreated or configured by an installed packagePackage-assigned permission sets grant no objects beyond the package's documented needs
Batch load userData Loader or scheduled ETL jobsWrite rights limited to load targets, with record ownership and sharing behaving as designed

How integration access drifts

Integration users rarely start over-provisioned on purpose. Access grows through convenience, and nothing breaks to signal it.

Admin profile by default

An integration built quickly under a System Administrator clone inherits Modify All Data, Customize Application and Manage Users that no data sync needs.

View All and Modify All shortcuts

Granting View All or Modify All on an object to get past a sharing error bypasses record-level sharing entirely for that identity.

One user, many integrations

Several systems sharing a single integration user accumulate the union of all their needs, and no one can retire a permission safely.

Standing credentials and loose login policy

No login IP ranges, non-expiring secrets and broadly pre-authorized connected apps let a leaked credential be used from anywhere.

Orphaned permissions

When an integration is retired or remapped, the permission sets that served it stay assigned and keep the old access alive.

System-mode Apex endpoints

Custom Apex REST services called by the integration can act without sharing, extending its reach past what its permissions suggest.

Scoping and testing an integration user

The goal is a written integration access contract that the tests enforce in both directions.

1

Write the access contract

For each integration, list the objects, fields and operations it performs, the records it should touch and how it authenticates, using real payloads and mappings as the source.

2

Resolve effective access

Combine the identity's profile, permission sets, permission set groups and permission set licenses to see its actual rights, including View All, Modify All and system permissions.

3

Run the contracted operations

Execute each query, insert, update, upsert and delete the integration performs as that identity, confirming all succeed with representative data.

4

Run deny calls

As the same identity, attempt operations outside the contract — other objects, restricted fields, deletes, user administration, metadata calls — and pass only on a clean block.

5

Check login and session policy

Confirm the identity cannot log in to the user interface, and that IP restrictions and connected app policies reject tokens from unexpected contexts where configured.

6

Retain evidence and re-baseline

Store each call, identity, expected result and outcome, and update the contract whenever the integration's mappings change.

Deny assertions every integration suite should include

These checks catch the broad rights integration identities most commonly carry without needing them.

  • Querying an object outside the integration's mapping returns an access error rather than rows.
  • Updating a field that the integration only reads fails with an insufficient access response.
  • Deleting records is blocked unless deletion is part of the documented contract.
  • Creating or editing users, permission sets or assignments is blocked for the identity.
  • Metadata and Tooling API calls that deploy or change configuration are blocked for data-only integrations.
  • Records owned by other business units are not returned when the integration's scope is record-limited by sharing.
  • Interactive login to the Salesforce user interface is refused for API-only identities.
  • Exporting data through reports or the Bulk API beyond the extract scope is blocked for read-limited extract users.

Moving integrations to least privilege safely

Many teams now want to move integrations off full licenses and administrator profiles onto the Salesforce Integration user license with permission-set-based access. The risk is not the security improvement; it is breaking a production sync because one field or object right was missed. Integration user testing makes that migration measurable: run the contracted operations under the old identity, build the narrower identity in a sandbox, run the same operations and deny calls against it, and only cut over when both sets pass.

The same approach applies after any integration change. When a MuleSoft mapping adds a field or a new object joins a Bulk API load, the access contract and its tests change with it. That keeps least privilege current rather than letting the identity widen each time a developer hits an access error under deadline.

Evidence and what SyntraFlow is designed to do

These capabilities are available for demonstration and proof-of-concept validation against your own integration identities.

Identity-as-persona testing

SyntraFlow is designed to execute API operations as the integration identity itself, so results reflect its effective rights rather than an administrator's.

Contract-driven deny calls

Scenarios can be configured from the integration access contract so every operation outside it is attempted and expected to fail.

Service account review evidence

Runs can retain the identity, call, expected outcome and result, supporting periodic service account access reviews with proof.

Cross-system view

Because SyntraFlow is Oracle-native, tests can be scoped to follow an integration identity's writes into connected back-office systems during a proof of concept.

Integration user test scenarios

Representative scenarios for a typical middleware and data platform landscape.

ScenarioWhat it proves
ERP sync user upserts Account and Order by external IDThe contracted write path works under the scoped identity
ERP sync user attempts to delete an OpportunityDelete rights were not granted beyond the contract
Extract user queries Contact with a restricted national ID fieldField-level security applies to the integration identity too
Client credentials token used for a metadata deployThe run-as user cannot change configuration
Integration user attempts interactive loginAPI Only User enforcement blocks UI access
Retired marketing sync permission set still assignedOrphaned access is detected and flagged for removal
Integration moved to the Integration user licenseAll contracted operations still pass on the narrower identity

Related pages

Salesforce security testing

The hub for persona-based access validation, including non-human identities.

Salesforce API testing

Validates the data and behavior of the API calls integration users make.

MuleSoft testing

Tests Anypoint-brokered flows that commonly run under an integration identity.

Permission set testing

Tests the permission sets that grant integration access on an API-only baseline.

Segregation of duties

Detects identities that combine conflicting capabilities, including service accounts.

Negative access testing

The deny-case method used for every out-of-contract integration call.

Integration User Testing testing FAQs

What is Salesforce integration user testing?

It is the validation that API and automation identities have exactly the access their integrations need. Tests run the integration's contracted operations as that identity to prove they work, then attempt operations outside the contract to prove they are blocked.

What is the Salesforce Integration user license?

It is a license designed for system-to-system, API-only access. It pairs with the Minimum Access - API Only Integrations profile and the Salesforce API Integration permission set license, so access is granted through permission sets on a minimal baseline rather than through a full user profile.

Why is a System Administrator profile risky for integrations?

It carries system permissions such as Modify All Data, Customize Application and Manage Users that data integrations do not need. If the credential leaks or the integration misbehaves, those rights allow changes across the entire org, bypassing sharing and field-level restrictions.

Do connected app policies replace integration user testing?

No. Connected app policies control how tokens are issued and who is pre-authorized, but every token still acts with the run-as or authenticated user's access. Testing that user's effective rights is what proves the blast radius of a token is small.

How do you migrate an integration to least privilege without breaking it?

Document the integration's contract, build the narrower identity in a sandbox, and run the full set of contracted operations and deny calls against it. Cut over only when every contracted operation passes and every out-of-contract call is blocked, then keep the suite as a regression check.

Does SyntraFlow provide a connector for my middleware platform?

SyntraFlow is designed to validate integration identities from the Salesforce side by executing API operations as those identities. Reading middleware artifacts directly is an integration opportunity that can be scoped during a proof of concept rather than a shipped connector.

Shrink the blast radius of every service account

See how integration user testing proves each API identity does its job and nothing more.