jwt

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

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

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

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

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

    • issIssuer?издатель токена
    • subSubject?субъект, для которого выпущен токен
    • audAudience?получатели, для которых предназначен токен
    • expExpiration Time?время, после которого токен перестанет быть действителен
    • nbfNot Before?время, до которого токен не должен приниматься к обработке
    • iatIssued At?время, когда токен был выпущен
    • jtiJWT ID?уникальный идентификатор токена

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

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

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

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

Пример 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

БАЗЫ ДАННЫХ

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

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

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

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