nicetool.dev logo

Что такое JWT?

JSON Web Token (JWT) - это открытый стандарт (RFC 7519), который определяет компактный и автономный способ безопасной передачи информации между сторонами в виде объекта JSON. Эта информация может быть проверена и ей можно доверять, поскольку она имеет цифровую подпись.

Структура JWT

JWT - это строка, состоящая из трех частей, закодированных в Base64URL: Заголовок (Алгоритм и Тип), Полезная нагрузка (Данные/Claims) и Подпись. Эти части объединены через точку (.):

header.payload.signature

Общие случаи использования

  • Авторизация: Наиболее распространенный сценарий. После входа пользователя каждый последующий запрос будет включать JWT, позволяя пользователю получать доступ к маршрутам, сервисам и ресурсам.
  • Обмен информацией: JWT отлично подходят для безопасной передачи информации между сторонами.
  • Сессии без состояния: Нет необходимости хранить данные сессии на сервере; токен содержит всю необходимую информацию о пользователе.

Конфиденциальность и безопасность

Ваша безопасность - наш приоритет. Вся логика декодирования и проверки JWT происходит на стороне клиента в JavaScript вашего браузера. Никакие токены, заголовки или полезные нагрузки никогда не отправляются на наши серверы.

100% на основе браузера

Как пользоваться: JWT отладчик

  1. 1

    Вставьте токен (начинается с eyJ) в поле Encoded. Заголовок и полезная нагрузка сразу декодируются и показываются как отформатированный JSON.

  2. 2

    Проверьте стандартные claims. Время в exp, iat и nbf отображается в виде понятных дат, так что сразу видно, истёк ли токен или ещё не вступил в силу.

  3. 3

    Для проверки подписи введите HMAC-секрет (HS256/384/512) или открытый ключ в формате PEM (RS256/384/512, ES256/384/512). Инструмент сообщит, совпадает ли подпись.

  4. 4

    В режиме Generator можно создать тестовый токен: отредактируйте payload, выберите алгоритм, введите секрет или закрытый ключ и скопируйте подписанный JWT.

Практические примеры

Отладка ошибок 401

API отклоняет запрос с 401 Unauthorized. Декодируйте токен и ищите истёкший exp, неверный aud (audience) или отсутствующий scope.

Проверка токенов провайдера

Изучите ID-токены от Auth0, Keycloak, Firebase или Azure AD, чтобы увидеть, какие claims (email, roles, groups) реально получает приложение.

Тестирование доступа по ролям

Сгенерируйте токены с role "admin" и role "viewer", подписанные dev-секретом, чтобы проверить обе ветки проверки прав.

Проверка ротации ключей

После смены ключей вставьте свежий токен и новый открытый ключ, чтобы убедиться, что kid в заголовке и подпись соответствуют новому ключу.

Частые вопросы

JWT зашифрован?+

Обычно нет. Стандартный JWT (JWS) только закодирован в Base64URL и подписан. Payload может прочитать любой, поэтому не кладите туда пароли и чувствительные персональные данные. Зашифрованные токены (JWE) - другой формат.

Что означают три части?+

header.payload.signature: заголовок указывает алгоритм и тип, payload содержит claims, а подпись доказывает, что первые две части созданы владельцем ключа и не изменены.

Безопасно ли вставлять сюда боевой токен?+

Декодирование и проверка полностью выполняются в браузере, на наш сервер ничего не отправляется. Но действующий токен работает как пароль до истечения срока, поэтому лучше использовать тестовые токены или отзывать настоящие после отладки.

HS256 или RS256?+

HS256 использует один общий секрет для подписи и проверки, это просто для одного сервиса. RS256 и ES256 подписывают закрытым ключом и проверяют открытым, что удобно, когда токены одного издателя проверяют многие сервисы.