jwt

JSON Web Token — это закодированная строка в формате JSON.

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

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

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

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

    • issиздатель токена
    • subсубъект, для которого выпущен токен
    • audполучатели, для которых предназначен токен
    • expвремя, после которого токен перестанет быть действителен
    • nbfвремя, до которого токен не должен приниматься к обработке
    • iatвремя, когда токен был выпущен
    • jtiуникальный идентификатор токена

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

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

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

    • HMAC использует хэш-функцию и секретный ключ для создания подписи.
    • RSA использует пару ключей (открытый и закрытый) для создания и проверки подписи.
    • ECDSA алгоритм цифровой подписи, основанный на эллиптических кривых.

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

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

заголовок                                данные                                 подпись
eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyMTIzIiwiZXhwIjoxOTE2MjM5MDIyfQ.5bK9CxN8h9430ugDlLR_35r8jjkQEfywv
{
    "alg": "HS256",
    "typ": "JWT"
}
{
    "sub": "user123",
    "exp": 1916239022
}

Не расшифровывается

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

Задача

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

Воспользуйтесь официальным сайтом jwt.io, вставьте токен в поле Encoded. Результат отобразится в поле Decoded.

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

ВВЕДЕНИЕ

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

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

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

ТЕХНИКИ ТЕСТ ДИЗАЙНА

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

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

POSTMAN

БАЗЫ ДАННЫХ

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

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

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

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