Any platform that issues OIDC tokens can be used with workload federation. This guide covers the generic token exchange flow for providers that don’t have a built-in preset.Documentation Index
Fetch the complete documentation index at: https://conductorone-groman-network-requirements-updates.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Provider requirements
Your OIDC provider must:- Serve a
/.well-known/openid-configurationdocument at the issuer URL - Have a publicly accessible JWKS (JSON Web Key Set) endpoint
- Issue JWTs with standard claims:
iss,aud,exp,iat
Prerequisites
- A service principal with a Custom OIDC federation trust. See set up federation if you haven’t created one yet. Use the Custom OIDC preset and enter your provider’s issuer URL.
- The trust’s client ID (for example
quiet-bear-88456@yourcompany.conductor.one/wfe)
Exchange the token
Send the external OIDC JWT to C1’s token exchange endpoint:access_token in an Authorization: Bearer header for API calls.
Token requirements
The JWT must satisfy these requirements:| Requirement | Detail |
|---|---|
Issuer (iss) | Must match the provider’s issuer URL exactly |
Audience (aud) | Must contain your C1 tenant domain (for example yourcompany.conductor.one) |
Expiration (exp) | Must not be expired |
Issued at (iat) | Must be within the last 10 minutes |
| Signature | Must be verifiable via the provider’s JWKS endpoint |
Writing CEL expressions
The CEL expression evaluates against the JWT’s decoded claims. Write an expression that validates thesub claim and any additional claims for defense-in-depth scoping:
Tips for writing expressions
- Always validate the
subclaim or an equivalent unique identifier - Use additional claims for defense-in-depth: organization, project, environment
- CEL string functions are available:
contains(),startsWith(),endsWith(),matches(),size() - For namespaced claims (like AWS), use bracket notation:
claims["https://example.com/"].field - Expressions are limited to 1,024 bytes
Using with C1 tools
Once you have the access token, set theCONDUCTORONE_ACCESS_TOKEN environment variable and all C1 tools pick it up automatically:
CONDUCTORONE_OIDC_TOKEN with the raw JWT and CONDUCTORONE_CLIENT_ID with the trust client ID. The Go SDK, Cone CLI, and Terraform provider all support this pattern and handle the token exchange internally.