The algorithm is PINNED: only alg: "HS256" verifies — none and every
negotiated value are rejected before any cryptography runs, so a token
cannot choose its own verification scheme. Signature comparison goes
through crypto.subtle.verify (constant-time), never a hand-rolled string
compare. Claims checked: exp (required), nbf (when present), iss, aud
(string or array), then sub/role/tenantId through toApprovalActor.
HS256 JWT verifier over Worker-secret keys.
The algorithm is PINNED: only
alg: "HS256"verifies —noneand every negotiated value are rejected before any cryptography runs, so a token cannot choose its own verification scheme. Signature comparison goes through crypto.subtle.verify (constant-time), never a hand-rolled string compare. Claims checked: exp (required), nbf (when present), iss, aud (string or array), then sub/role/tenantId through toApprovalActor.