These examples use
conductor.one. If your organization is on the EU data residency instance, substitute c1eu.ai in URLs, client IDs, and hostnames.Prerequisites
- A service principal with an AWS IAM federation trust. See set up federation if you haven’t created one yet. Use the AWS IAM Outbound preset.
- The trust’s client ID (for example
calm-wolf-40291@yourcompany.conductor.one/wfe) - AWS IAM outbound identity federation enabled in your AWS account
Step 1: Enable outbound identity federation in AWS
Before your workloads can request tokens, enable the feature in your AWS account. This generates a unique OIDC issuer URL for your account.- AWS CLI
- Terraform
get-outbound-web-identity-federation-info response includes your account-specific issuer URL, for example https://abc123-def456.tokens.sts.global.api.aws.Step 2: Configure IAM permissions
Create an IAM policy that grantssts:GetWebIdentityToken with your C1 tenant domain as the audience. Attach this policy to the IAM role used by your workload.
Step 3: Create a federation trust in C1
When creating the provider in C1, select the AWS IAM Outbound preset and enter the issuer URL from Step 1. Then create a trust with a CEL expression to control which AWS principals can authenticate. See set up federation for the full walkthrough.Step 4: Request and exchange the token
From your AWS workload, callGetWebIdentityToken to get a signed JWT, then exchange it for a C1 access token:
Authorization: Bearer header for C1 API calls:
Using with C1 tools
When using C1 tools (cone, Terraform provider), you must set both of these environment variables. The tools require them to handle the token exchange internally:
CEL expression examples
When creating the federation trust, the CEL expression controls which AWS principals can authenticate. The expression evaluates against the JWT’s claims. AWS-specific claims are nested under thehttps://sts.amazonaws.com/ namespace — use bracket notation to access them.
Restrict to an AWS account
Restrict to a specific IAM role
Restrict to an account and organization
Restrict using principal tags
Common AWS OIDC claims
Standard claims
AWS identity claims (under https://sts.amazonaws.com/)
Session context claims (under https://sts.amazonaws.com/)
Request tags (under https://sts.amazonaws.com/)
Custom claims passed via the Tags parameter of GetWebIdentityToken appear in the request_tags field:
Security best practices for AWS IAM
- Bind to account and role: Use both
aws_accountandsubto ensure only specific roles in specific accounts can authenticate. - Use principal tags: Tag IAM roles with metadata like
environmentorteamand validate them in CEL for fine-grained control. - Limit token lifetime: Configure the IAM policy to enforce a short
DurationSecondsonGetWebIdentityTokencalls. - Scope trust roles: Use scoped roles on the federation trust to limit what the exchanged token can do. See security controls for details.