Prerequisites
What it is
A JSON Web Token is a compact signed token containing claims such as subject, issuer, audience, scopes, and expiration time.
Why it matters
JWTs let services verify identity or authorization claims without calling a central session store on every request.
How it works
The issuer signs a header and payload. Recipients verify the signature, validate issuer and audience, check expiration, and then use the claims.
function verify(token, expected_issuer, expected_audience, public_key):
header, payload, signature = split(token, ".")
# 1. verify signature (prevents tampering)
expected_sig = sign(header + "." + payload, public_key)
if not constant_time_eq(signature, expected_sig):
raise InvalidSignature
claims = decode_json(payload)
# 2. validate time bounds
if claims.exp < now():
raise TokenExpired
if claims.nbf > now():
raise TokenNotYetValid
# 3. validate issuer and audience (prevents token reuse across apps)
if claims.iss != expected_issuer:
raise InvalidIssuer
if expected_audience not in claims.aud:
raise InvalidAudience
return claims # trusted: sub, scope, roles, etc.
Signature verification proves the token was not modified. The claim checks prevent a token issued for one application from being replayed against another.
When to use it
Use JWTs for short-lived access tokens, service-to-service identity, and distributed API authorization where stateless verification is useful.
Tradeoffs / failure modes
JWTs are hard to revoke before expiration. Long-lived JWTs, weak signing keys, missing audience checks, and storing sensitive data in payloads are common mistakes.
Tiny example
An API gateway verifies a bearer JWT, extracts sub and scope, and forwards the authenticated request to a backend.
Related guides and systems
See OAuth2 & Social Login, API Versioning, RBAC, GitHub, Slack, and Google Drive.
Seen in deeper dives
Capability
API Versioning
Backward-compatible API evolution with URL, header, and content negotiation strategies
Capability
OAuth2 & Social Login
Authorization code flow, token refresh, and provider federation for third-party authentication
Capability
Role-Based Access Control
Permission models, policy engines, and row-level security for multi-user applications
Case Study
GitHub
The world's largest code hosting platform powered by Git at scale
Case Study
Google Drive
Cloud file storage and real-time collaboration at planetary scale
Case Study
Slack
Channel-based messaging for the enterprise workplace