Skip to main content
A SPIFFE provider such as SPIRE gives each workload a SPIFFE ID and can issue it a JWT-SVID, a signed JWT whose sub is the SPIFFE ID. Reducto verifies the JWT-SVID and returns an access token. For Idira Secure Workload Access, see the Idira guide. Reducto accepts JWT-SVIDs only. X.509-SVIDs are not supported.

Requirements for the JWT-SVID

The SPIFFE specification requires only sub, aud and exp. Reducto also needs:
  • An iss claim with an HTTPS issuer URL.
  • An iat claim.
  • A kid header that names a key in the issuer’s JWKS.
The issuer URL is not the trust domain. In SPIRE, set the same jwt_issuer on the server and on the OIDC Discovery Provider:
If the discovery provider is not reachable from the internet, upload the JWKS to Reducto instead.

Get and inspect a token

From the workload, fetch a JWT-SVID with the Reducto audience:

Configure Reducto

In Studio, open Settings > Workload identity and create a provider with the SPIFFE preset: Add a mapping for the SPIFFE ID: To allow every workload under a path, use a trailing wildcard, for example spiffe://acme.com/ns/payments/*.

Call Reducto

The simplest setup writes the JWT-SVID to a file and refreshes it, for example with spiffe-helper:
Then pass a token provider that reads the file. The SDK reads it on every exchange. Instead of code, you can set REDUCTO_IDENTITY_TOKEN_FILE=/var/run/spiffe/reducto.jwt next to REDUCTO_IDENTITY_PROVIDER_ID and create the client with no arguments.
If your language has a SPIFFE Workload API client, you can pass a custom provider that fetches the JWT-SVID in get_token (getToken in Node.js) instead of reading a file.

SPIFFE best practices

  • Request JWT-SVIDs with one audience, the Reducto audience, and no others.
  • Match exact SPIFFE IDs. Use wildcards only for paths where every workload should have the same access.
  • Keep JWT-SVID lifetimes short. The Reducto access token never outlives the JWT-SVID.
  • During signing key rotation, publish both keys through discovery, or upload both keys before you sign with the new one.
  • Keep server and workload clocks in sync. Reducto allows 30 seconds of skew.
  • Protect the Workload API socket. Any process that can fetch the JWT-SVID can exchange it.