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 onlysub, aud and exp. Reducto also needs:
- An
issclaim with an HTTPS issuer URL. - An
iatclaim. - A
kidheader that names a key in the issuer’s JWKS.
jwt_issuer on the server and on the OIDC Discovery Provider:
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:REDUCTO_IDENTITY_TOKEN_FILE=/var/run/spiffe/reducto.jwt next to REDUCTO_IDENTITY_PROVIDER_ID and create the client with no arguments.
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.