Skip to main content
Early access. This feature is in early access, which means it’s undergoing ongoing testing and development while we gather feedback, validate functionality, and improve outputs. Contact the C1 Support team if you’d like to try it out or share feedback.
AWS IAM outbound identity federation lets your AWS workloads (EC2 instances, Lambda functions, ECS tasks, and more) obtain signed JWTs that C1 can trust directly. No long-lived API keys to store or rotate.

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.
The 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 grants sts: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, call GetWebIdentityToken to get a signed JWT, then exchange it for a C1 access token:
Use the access token in an 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 the https://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

Always bind to a specific AWS account ID and IAM role ARN. A CEL expression that only checks one claim may be too permissive. For production workloads, use principal tags and organization constraints for defense-in-depth.
  • Bind to account and role: Use both aws_account and sub to ensure only specific roles in specific accounts can authenticate.
  • Use principal tags: Tag IAM roles with metadata like environment or team and validate them in CEL for fine-grained control.
  • Limit token lifetime: Configure the IAM policy to enforce a short DurationSeconds on GetWebIdentityToken calls.
  • Scope trust roles: Use scoped roles on the federation trust to limit what the exchanged token can do. See security controls for details.