Skip to content

Issue Mandates

STS authenticates application or workload proof, evaluates current authority, and issues short-lived mandates or configured provider credentials.

RouteCaller
POST /oauth/2/tokenSDK, documented token client, Gateway
POST /v1/run/manifestcaracal run
POST /v1/run/credentialcaracal run
GET /.well-known/jwks.json?zone_id=...Verifiers
GET /approvals/{id}Waiting client with the required hold context
POST /approvals/{id}/decisionFederated user decision flow

Routes under /internal/ for policy simulation/status and zone signing-key rotation are service-to-service APIs. Do not call or expose them as workload APIs; the API service owns those operations.

ItemLocal value
Port8080
LivenessGET /health
ReadinessGET /ready
MetricsGET /metrics, /metrics.json

Service environment variables are cataloged in Configure Service Environment.

STS does not authenticate end users and does not invent a user sub. It accepts a Federated user’s token only from a registered Federated user issuer, then treats its stable sub as opaque. Without a subject token, the application’s own identity is the Subject.

Issuance needs Postgres product, policy, authority, Session, Delegation, approval, signing, and secret state. It also consumes Redis invalidation and revocation state, requires the Secret Store KEK, verifies Gateway HMAC proof on the Gateway path, and emits audit evidence to Redis or replay storage.

Invalid client proof, Federated user issuer, resource, policy, operation, scope, Authority record, Session, Delegation, approval, signing key, or Gateway signature denies issuance. There is no fallback token. Resource mandates are capped at 15 minutes and Session mandates at 60 minutes.

An interaction_required response means policy raised an Approval hold. Approval alone is not issuance; the client retries and consumes the hold once.

Use Use STS Endpoint for exact request and error contracts and Exchange Tokens for the trust flow.

Protect Upstreams.