What’s a service principal?
A service principal is a dedicated, non-human identity purpose-built for automation. It appears in the user directory alongside human users, but it’s designed for scripts, CI/CD pipelines, Terraform runs, and API integrations. Each service principal:- Has a display name and unique ID
- Can be assigned C1 roles, just like a human user
- Has owners who manage it
- Can have multiple credentials or federation trusts
- Has its own C1 account, so entitlements work the same way as for a human user’s account
Two ways to authenticate
Service principals support two authentication methods. You can use either one, or both on the same service principal.Choosing the right method
- Use client credentials if you want a straightforward path to calling the API. Best for scripts, local development, and environments where storing a secret is acceptable.
- Use workload federation for production CI/CD. No secrets to rotate, tighter scoping, and tokens are tied to individual workflow runs.
Environment variables
All C1 client tools (Go SDK, Terraform provider, Cone CLI, oidc-token-action) recognize the same environment variables:
When multiple variables are set, tools use this priority order:
CONDUCTORONE_ACCESS_TOKEN— static bearer token, no exchange neededCONDUCTORONE_OIDC_TOKEN— token exchange usingCONDUCTORONE_CLIENT_IDCONDUCTORONE_CLIENT_ID+CONDUCTORONE_CLIENT_SECRET— Ed25519 JWT assertion
Before you begin
Before creating service principals:- Contact your C1 account team to enable the feature.
- You need Super Admin permissions to create and manage service principals.
Next steps
Quick start: Client credentials
Get from zero to a working API call in under 5 minutes.
Workload federation
Set up secretless authentication from CI/CD platforms.
Service principal limits
Credential expiration can’t be extended after creation. To continue access, create a new credential with the desired expiration and revoke the old one. See credential rotation.