From what I’ve seen working with ISC APIs, it really comes down to one thing: user context vs no user context.
Client Credentials → no user context
PAT → user-level permissions
1)For a machine-to-machine integration, is it recommended to: Use a dedicated service account + PAT, or something else?
Ans: It depends on the API you’re calling. If the endpoint requires user-level permissions, then yes, using a dedicated service account + PAT is the right approach.
“API endpoints that require user level permissions require the use of Personal access tokens (PATs).”
Source: https://developer.sailpoint.com/docs/api/authentication/
-
Is there any official guidance on when to prefer PAT over OAuth client credentials in ISC?
Ans: Again, this comes back to context.
Client Credentials → system-to-system, no user context (Simple scripts, quick testing, read-only operations that don’t need user permissions)
PAT → when the API needs user-level permissions (External apps, long-running integrations, anything touching admin operations)
for your external application? Go PAT. You’ll hit fewer walls. The only reason to use pure Client Credentials is if you’re building something super simple and you want to avoid creating a service account. Not worth the hassle for most integrations.
PAT works for identity or admin-related APIs. where, Client credentials work fine for simple automation where user context is not needed
”Clients use the Client Credentials grant type to obtain access tokens without user involvement.”
Source: https://developer.sailpoint.com/docs/api/authentication/
-
ISC have a concept of a “machine identity,” or is a service account (non-human identity) the standard approach?
Machine Identity and service account are different things.
Machine Identity is a governance feature. You use it to organize and track service accounts, bots, and machine accounts in your org. Super useful for compliance and audit. But it’s not for API authentication.
For API integration? You still need a traditional service account (a regular ISC user). Generate a PAT from that user, and you’re good to go.
I heard that SailPoint’s working on making Machine Identity support API authentication directly, but for now you still need a standard service account & generate a PAT from it.
"An application identity is a type of machine identity that represents a program or service that related machine accounts are grouped within...allows users to organize and oversee their organization's service accounts, bots, and other machine accounts"
Hope this helps 