Skip to main content
OIDC federation lets a workload exchange an OIDC token it already has for a short-lived Nuon API token — with no long-lived secret stored anywhere. You configure a trust policy that tells Nuon which issuer to trust and which token claims to require; any workload presenting a matching token gets a short-lived token in return. This works with any OIDC-compatible identity, and from any client, since the exchange is a plain API call. Unlike an API token or a token minted for a service account, there is no credential to store, distribute, or rotate.

How it works

  1. A workload obtains its ambient OIDC token from its platform (for example, the ID token GitHub Actions issues to a job).
  2. It calls the Nuon token-exchange endpoint with that token and your org ID.
  3. Nuon verifies the token’s signature against the issuer’s JWKS and checks its issuer, audience, and claims against your trust policies.
  4. On a match, Nuon mints a short-lived API token bound to the policy’s service account and returns it. The workload uses it like any other Nuon API token.
The exchange endpoint requires no Nuon credentials — trust is established entirely by the OIDC token and your trust policy.

Trust policy properties

Each trust policy is backed by a dedicated service account that carries its role. Creating and managing trust policies requires org admin access.

Claim matching

Every claim condition must match the presented token for a policy to apply — conditions are combined with AND. A sub condition is always required, so a policy can never trust every token from an issuer. Values support glob patterns. The * wildcard does not cross : segment boundaries, which makes it safe to match structured subjects like GitHub’s repo:acme/app:ref:refs/heads/main:

Managing trust policies

You can manage trust policies in the Dashboard under Settings → OIDC federation, or with the CLI.

Creating a policy

Pass --claim multiple times to require additional claims. Use --ttl to set a custom token duration in seconds.

Listing and inspecting

Updating and deleting

Exchanging a token

Direct API exchange

The exchange is a single unauthenticated API call — use it from any language or runtime. Send the workload’s OIDC token and your org ID:
A successful response returns a short-lived token:
Use the returned token as a Bearer credential on subsequent requests, exactly like an API token:

Using the CLI

The Nuon CLI can perform the exchange for you. In GitHub Actions it detects the ambient OIDC token automatically — set your org ID and run any command:
In other environments, provide the OIDC token yourself via NUON_OIDC_TOKEN (a raw JWT) or NUON_OIDC_TOKEN_FILE (a path to one), and the CLI will exchange it the same way. You can also exchange explicitly and capture the token, for example to export it for other tools:

Example issuers

Any OIDC provider that exposes a discovery document and JWKS can be used as a trust policy issuer, including:
  • GitHub Actionshttps://token.actions.githubusercontent.com (see the GitHub Actions guide)
  • GitLab CI/CD — your GitLab instance URL
  • Buildkitehttps://agent.buildkite.com
  • Cloud workloads and Kubernetes service accounts with OIDC-issued tokens
Set the policy’s issuer to the provider’s iss and its claim conditions to whatever uniquely identifies the workload you want to trust.

Revocation

Deleting a trust policy revokes its outstanding tokens immediately — the backing service account is removed, so any token minted through the policy stops working at once. Disabling a policy only stops new exchanges; tokens already issued remain valid until they expire.