JWT

JSON Web Token

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

БАЗЫ ДАННЫХ

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

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

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

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