How it works
Most CI/CD platforms (GitHub Actions, GitLab CI, HCP Terraform) can issue short-lived OIDC tokens that identify the running workload. Workload federation lets ConductorOne trust these tokens directly:- Your CI/CD platform issues a signed JWT (JSON Web Token) for the current workflow run
- Your workflow sends this JWT to ConductorOne’s token exchange endpoint
- ConductorOne validates the token: issuer, signature, audience, freshness, and your conditions
- ConductorOne issues a short-lived access token scoped to the service principal’s roles
Two building blocks
Workload federation has two layers:Providers
A provider represents an OIDC token issuer, for example GitHub Actions or HCP Terraform. Providers are created once at the tenant level and shared across service principals. Each provider has:- An issuer URL (for example
https://token.actions.githubusercontent.comfor GitHub Actions) - A public JWKS (JSON Web Key Set) endpoint for signature verification
| Provider | Issuer URL | Notes |
|---|---|---|
| GitHub Actions | https://token.actions.githubusercontent.com | Fixed issuer URL |
| GitLab CI/CD | https://gitlab.com (or self-managed URL) | Editable issuer URL |
| HCP Terraform | https://app.terraform.io (or custom hostname) | Editable issuer URL |
| AWS IAM Outbound | Account-specific issuer URL | Editable issuer URL |
| Custom OIDC | Any HTTPS issuer URL | For other OIDC-capable platforms |
Trusts
A trust binds a provider to a specific service principal with conditions. It controls which tokens from that provider are accepted and what permissions they receive. Each trust has:- A client ID (for example
swift-otter-19384@yourcompany.conductor.one/wfe) - A CEL condition expression that the JWT claims must satisfy
- Optional IP restrictions and scoped roles
Supported platforms
GitHub Actions
Use the conductorone/oidc-token-action for one-step setup.
GitLab CI
Use GitLab’s built-in id_tokens with a curl exchange.
HCP Terraform
Auto-detected from TFC_WORKLOAD_IDENTITY_TOKEN.
Custom OIDC
Any platform with OIDC support.
Next steps
- Set up federation — step-by-step wizard walkthrough
- Security controls — scoped roles, IP restrictions, and CEL expressions
Frequently asked questions about workload federation
What OIDC providers are supported?
What OIDC providers are supported?
Any OIDC-compliant provider that serves a
/.well-known/openid-configuration document, has a public JWKS endpoint, and issues JWTs with standard claims (iss, aud, exp, iat). Built-in presets are available for GitHub Actions, GitLab CI/CD, HCP Terraform, and AWS IAM. Use “Custom OIDC” for any other provider.Can I restrict which branches or environments can authenticate?
Can I restrict which branches or environments can authenticate?
Yes. The CEL condition expression controls exactly which tokens are accepted. For GitHub Actions, restrict by
claims.repository, claims.ref, and claims.environment. For GitLab, use claims.project_path and claims.ref_protected.How do scoped roles work with federation trusts?
How do scoped roles work with federation trusts?
The trust’s scoped roles are intersected with the service principal’s assigned roles at token issuance time. For example, if the service principal has [Super Admin, Basic User] and the trust has [Basic User], the token’s effective permissions are [Basic User] only.