JWT

JWT (JSON Web Token, RFC 7519) — компактный формат передачи claims в подписанном JSON. Используется в OIDC, OAuth, session tokens, service-to-service auth.

Структура

Три части через точку: header.payload.signature. Все — base64url.

eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjMifQ.h8_S3...

# декодировано:
{"alg":"HS256","typ":"JWT"}.{"sub":"123"}.<signature>

Header

Standard claims (RFC 7519)

ClaimЧто
ississuer
subsubject (user ID)
audaudience (для кого)
expexpiry (unix time)
nbfnot before
iatissued at
jtiJWT ID (уникальный)

Алгоритмы

Классические уязвимости

JWS vs JWE

Не для сессий (мнение)

Многие эксперты (например, Cross) считают что JWT для сессий — плохая идея: нельзя отозвать без списка revoked-tokens (что убивает stateless-выигрыш). Для сессий лучше opaque + сервер БД. См. сессия vs токен.

См. также