Перейти к содержимому
ecdsa.com

JWT (JSON Web Token)

Компактный токен, безопасный для URL (RFC 7519), который несёт JSON-объект с утверждениями и подписывается как JWS или шифруется как JWE; используется в ID-токенах, токенах доступа и многих API-сессиях.
Другие написанияJSON Web TokenJWT tokenRFC 7519

Подписанный JWT имеет вид header.payload.signature, где каждая часть закодирована в base64url без дополнения: заголовок указывает алгоритм (alg), ключ (kid) и тип (typ), а полезная нагрузка содержит утверждения, например iss, sub, aud, exp, nbf, iat и jti (RFC 7519, § 4.1), и утверждения приложения. У зашифрованных JWT пять частей. Полезную нагрузку подписанного JWT может прочитать любой, у кого есть токен: подпись защищает целостность, а не конфиденциальность.

Проверка состоит из двух частей: сначала подпись, с алгоритмом и ключом, которые проверяющая сторона выбрала заранее, затем утверждения — издатель, аудитория, срок действия с небольшим допуском на расхождение часов и тип токена, чтобы ID-токен не приняли там, где ожидается токен доступа. Эти правила перечислены в RFC 8725 (JWT Best Current Practices); большинство уязвимостей JWT возникает из-за того, что одно из них пропущено.

Выбор алгоритма — компромисс, который разобран в статьях ES256 или RS256 и HS256 или RS256. Отладчик JWT декодирует и проверяет токены локально.

Стандарты и ссылки

Все термины