Bench
Select an operation.
Setup
Sign a payload
Protocol
X.509 / mTLSIN PIPELINE
Case
A well-formed payload, signed with a key that is in date and published.
Sign with
billing-api · bill-02ES256 · published JWKS
Input
Claims
{
"sub": "acct_8812",
"scope": "billing.read",
"iss": "https://billing.acme.test",
"exp": ${now+15m}
}
Worked example
Signed token
SIGNED
Token signed
Signed with bill-02. Any verifier resolving your JWKS URL accepts it until 2026-08-09 22:29:07Z, with no code change: bill-02 is already published there.
header 42Bpayload 124Bsignature 86B
eyJhbGciOiJFUzI1NiIsImtpZCI6ImJpbGwtMDIifQ.eyJzdWIiOiJhY2N0Xzg4MTIiLCJzY29wZSI6ImJpbGxpbmcucmVhZCIsImlzcyI6Imh0dHBzOi8vYmlsbGluZy5hY21lLnRlc3QiLCJleHAiOjE3ODYzMTQ1NDd9.LwDM__PastYxNtToFWjh1aIbbpf-tuebJEKAcI5XVfgP-bXFYMf5H0gca0cpS3BcZobYppD_fFWnSE9xx2a6f5
What happened
- Read the claims and resolved the template values.
- ${now+15m} became 2026-08-09 22:29:07Z, 15 minutes after this run.
- Chose ES256 from the keyset. Its private half never leaves storage.
- Signed header and payload together, so neither can be edited alone.
- Named the key as kid bill-02 in the header, so a verifier knows which one to fetch.