Спецификация: RFC 7519
JSON Web Token (JWT) используется как формат для access-токенов (профиль RFC 9068) и ID-токенов OpenID Connect. JWT содержит подписанные claims, которые можно верифицировать без обращения к серверу авторизации при каждом запросе.
Алгоритмы подписи
-
RS256— RSA PKCS#1 v1.5 с SHA-256 (основной, для access-токенов и ID-токенов) -
HS256— HMAC с SHA-256 (для внутренних служебных токенов) -
ES256— ECDSA with P-256 — не реализован -
EdDSA— Ed25519 — не реализован
Стандартные claims (раздел 4.1)
-
iss— издатель -
sub— субъект (идентификатор пользователя или клиента) -
aud— аудитория -
exp— время истечения -
iat— время выдачи -
jti— уникальный идентификатор JWT -
nbf— не ранее (включается в ответы интроспекции)
Поля заголовка JOSE
-
alg— алгоритм подписи -
typ— тип токена (JWTилиat+jwtдля access-токенов) -
kid— идентификатор ключа для поддержки ротации ключей
Валидация
- Верификация подписи через JWKS (поиск по kid)
- Проверка истечения срока действия (claim
exp) - Валидация заголовка типа (
typ) - Алгоритм
noneотклоняется (неподписанные JWT не принимаются) - Проверка claim
nbfво входящих токенах — не применяется - JWE (зашифрованный JWT) — не поддерживается
Профиль access-токена
Access-токены следуют профилю JWT для OAuth 2.0 access-токенов (тип at+jwt) — client, scope и user claims встроены в payload.