Skip to main content

Okta as Token Issuer

Learn how to configure Okta to issue OIDC tokens that your services can use to authenticate to cloud providers and APIs.

Overview

Okta can issue OIDC tokens for service applications, enabling your services to authenticate to:

  • AWS (via IAM OIDC provider)
  • Google Cloud Platform (via Workload Identity Federation)
  • Azure (via federated credentials)
  • Your own APIs accepting OIDC

Use Cases

Enterprise Service Authentication

Use Okta for enterprise-grade service-to-service auth:

Service → Okta (get token) → AWS/GCP/Azure (use token)

OAuth2 Client Credentials

Standard OAuth2 flow for machine-to-machine:

Service → Okta (client credentials) → Protected API

Multi-Org Services

Services authenticate with org-specific tokens:

Org A Service → Okta → Cloud (org-scoped access)

Coming Soon

This guide is under development. Topics will include:

  • Creating OAuth2 service applications
  • Configuring custom authorization servers
  • Custom scopes and claims
  • Client Credentials flow
  • Token inline hooks for customization
  • Token lifetime and policies
  • Integration guides (Okta → AWS, etc.)

Token Structure

Okta-issued service tokens contain:

{
"iss": "https://YOUR_DOMAIN.okta.com/oauth2/default",
"sub": "client_id",
"aud": "api://your-service",
"iat": 1735686000,
"exp": 1735689600,
"cid": "client_id",
"scp": ["api.read", "api.write"],
// Custom claims via inline hooks
"tenant_id": "tenant-123",
"environment": "production"
}

Quick Example

# Get token from Okta
curl --request POST \
--url 'https://YOUR_DOMAIN.okta.com/oauth2/default/v1/token' \
--header 'content-type: application/x-www-form-urlencoded' \
--data 'client_id=YOUR_CLIENT_ID' \
--data 'client_secret=YOUR_CLIENT_SECRET' \
--data 'grant_type=client_credentials' \
--data 'scope=api://your-service'

# Use token to authenticate
curl https://api.yourservice.com/endpoint \
-H "Authorization: Bearer $TOKEN"

Resources

Contributing

Want to help complete this guide? Contribute on GitHub.