Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

jwt_verify

Verifies a JWS mid-workflow (provider id_tokens for social login, refresh tokens, partner assertions) against static keys, a JWKS, or both. The JWKS cache is the process-wide one the channel’s jwt mode uses: single-flight refresh, stale-serve, kid-rotation refetch. Rejections are typed task errors that continue_on_error branches on; the reason is named, the token never is.

Synopsis

{
  "name": "jwt_verify",
  "input": {
    "token": {
      "var": "data.id_token"
    },
    "algorithms": [
      "RS256"
    ],
    "keys": [],
    "jwks_url": "https://provider.example.com/certs",
    "issuer": "https://accounts.provider.example.com",
    "audience": "env://OAUTH_CLIENT_ID",
    "leeway_secs": 30,
    "require_exp": true,
    "output": "temp_data.verified_claims"
  }
}

Description

jwt_verify is a utility function: self-contained, with no connector and no egress, so dry-run and orion-server test execute it for real.

Retry safety: read. See Retry safety for what the answer costs.

Fields

FieldTypeRequiredDefaultDescription
tokenstringyesThe compact JWS
algorithmsarrayyesMandatory non-empty allowlist — alg: none and downgrades are unrepresentable
keysarrayone of[{algorithm, key, kid?, key_encoding?}] — public halves for the asymmetric families. Each key takes {"secret": "name"}, a reference, or a literal
jwks_urlstringone ofHTTPS JWKS URL
issuer / audiencestring | arraynoAccepted iss/aud values; {"secret": "name"} and env:// references resolve (OAuth client ids)
leeway_secsnumberno30Clock-skew allowance, capped at 300
require_expbooleannotrueRFC 8725: tokens must expire unless deliberately opted out
outputstring | JSONLogicno"data"Where the verified claims object is stored

Examples

{
  "name": "jwt_verify",
  "input": {
    "token": { "var": "data.id_token" },
    "algorithms": ["RS256"],
    "jwks_url": "https://provider.example.com/certs",
    "issuer": "https://accounts.provider.example.com",
    "audience": "env://OAUTH_CLIENT_ID",
    "output": "temp_data.verified_claims"
  }
}

Last verified 14 September 2026