Skip to content
Back to skills

Jwt Handling

ASecurity

Use JSON Web Tokens safely by pinning the algorithm, keeping lifetimes short, and pairing them with a revocation path. Use when issuing or validating JWTs, designing a session scheme around them, or reviewing token-based auth.

  • 7 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 5, 2026
ai-agentsrustgodatabase

Security analysis

A100/100

Scanned September 5, 2026

npx -y skills add Amey-Thakur/AI-SKILLS --skill jwt-handling --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Jwt Handling?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Jwt Handling
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/amey-thakur-jwt-handling/badge)](https://www.skillsdirectory.com/skills/amey-thakur-jwt-handling)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: jwt-handling
description: Use JSON Web Tokens safely by pinning the algorithm, keeping lifetimes short, and pairing them with a revocation path. Use when issuing or validating JWTs, designing a session scheme around them, or reviewing token-based auth.
---

# JWT handling

A JSON Web Token is a signed claim the server trusts without a database
lookup, which is exactly what makes it dangerous when handled loosely. The
classic failures are letting the token pick its own algorithm, trusting a
token that never expires, and having no way to kill a session before it
does. Safe handling pins the algorithm, keeps access lifetimes short, and
gives you a way to revoke.

## Method

1. **Pin the accepted algorithm server-side.** Configure the verifier with
   an explicit allowlist such as `algorithms=["RS256"]` and reject anything
   else. Never trust the token header's `alg`: the `alg: none` bypass and
   the RS256-to-HS256 confusion attack both come from letting the token
   choose.
2. **Verify the signature before reading any claim.** Validate the
   signature, `iss`, `aud`, and `exp` in one vetted call, for example
   `jwt.decode` with verification on and required claims listed, before
   trusting the payload. A decoded but unverified token is attacker
   controlled JSON.
3. **Keep access tokens short-lived.** Set `exp` to 5 to 15 minutes for
   access tokens. A short window bounds how long a stolen token works and
   pushes long-lived state onto a refresh token you can revoke.
4. **Use refresh tokens for longevity and rotate them.** Issue an opaque
   refresh token stored server-side, rotate it on each use, and treat reuse
   of a rotated token as theft by revoking the whole family. This gives you
   the revocation JWTs lack.
5. **Build a revocation path, do not rely on expiry alone.** Keep a denylist
   of token IDs (`jti`) or a per-user token version checked on refresh, so
   logout, password change, and compromise invalidate immediately. Bumping
   the user's token version kills every outstanding session at once.
6. **Sign asymmetrically and keep the payload public-safe.** Use RS256 or
   ES256 so verifiers hold only the public key, keep the private key in a
   KMS, and put no secrets in the payload: a JWT is signed, not encrypted,
   and anyone can read it.

## Litmus tests

- Does the verifier reject a token with `alg: none` and one re-signed under
  a different algorithm?
- Does an access token expire within minutes, not days?
- Can you invalidate a specific user's sessions right now, before their
  tokens expire?
- Is the payload free of secrets, given anyone holding the token can decode
  it?

## Boundaries

This covers issuing and validating JWTs, not the login that authenticates
the user or the OAuth flow that may mint them (see oauth-flows). Whether to
use stateless JWTs at all versus server-side sessions is a trade-off:
sessions revoke more simply. Library choice and claim conventions follow
your framework.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…