jwt

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

JWT часто применяется при аутентификации и авторизации. Сервер выдает клиенту токен, а клиент затем использует его для доступа к ресурсам.

Формат JSON Web токена

  • Заголовок (header) содержит название алгоритма, которым зашифрован токен и тип токена

    {
      "alg": "",
      "typ": "JWT"
    }
  • Полезная нагрузка (payload) может хранить любые данные под любыми ключами и служебную информацию о токене в специальных полях:

    • iss Issuer ? — издатель токена
    • sub Subject ? — субъект, для которого выпущен токен
    • aud Audience ? — получатели, для которых предназначен токен
    • exp Expiration Time ? — время, после которого токен перестанет быть действителен
    • nbf Not Before ? — время, до которого токен не должен приниматься к обработке
    • iat Issued At ? — время, когда токен был выпущен
    • jti JWT ID ? — уникальный идентификатор токена

    Все приведенные специальные поля являются опциональными, то есть необязательными к заполнению.

    {
      "sub": "user123",
      "name": "vasyapupkin",
      "iat": 1516239022
    }
  • Подпись (signature) используется для проверки целостности токена и обеспечивает подлинность данных. Подпись формируется из заголовка, полезной нагрузки и ключа, известного только серверу, выпускающему токен.

    Для создания подписи применяют алгоритмы:

    • HMAC Hash-based Message Authentication Code ? использует хэш-функцию и секретный ключ для создания подписи.
    • RSA Rivest–Shamir–Adleman ? использует пару ключей (открытый и закрытый) для создания и проверки подписи.
    • ECDSA Elliptic Curve Digital Signature Algorithm ? алгоритм цифровой подписи, основанный на эллиптических кривых.

Пример JSON Web токена

В итоге, сформированный JWT токен состоит из трёх частей, разделённых точками. Заголовок и данные зашифрованы по умолчанию в формате base64, который, как мы увидим в задаче, может быть легко расшифрован.


             заголовок                          данные                            подпись
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.OYkcX0_sy5JLWoEOrVkzajdLIB52q1550J411XzBgBk

Важно помнить, что JWT токен не предназначен для передачи чувствительной (конфиденциальной) информации, так как его содержимое не зашифровано по умолчанию. Подпись лишь обеспечивает защиту от подмены токена.

Задача

Расшифруйте сгенерированный сервером JWT токен и проверьте, что он соответствует приведённым ниже требованиям.

Для расшифровки JWT токена можно воспользоваться официальным сайтом jwt.io, вставив токен в поле Encoded.

Задача доступна премиум пользователям!

ВВЕДЕНИЕ

БАЗОВЫЕ ЗНАНИЯ

УРОВНИ ТЕСТИРОВАНИЯ

UI ТЕСТИРОВАНИЕ

ТЕСТ ДИЗАЙН

ТЕСТОВАЯ ДОКУМЕНТАЦИЯ

АУТЕНТИФИКАЦИЯ И АВТОРИЗАЦИЯ

POSTMAN

БАЗЫ ДАННЫХ

ТЕСТИРОВАНИЕ РЕЛИЗА

АНАЛИЗ РАБОТЫ ПРИЛОЖЕНИЯ

ПОДГОТОВКА К СОБЕСЕДОВАНИЮ

Как составить резюме Топ вопросов Собеседование