Что такое jwt токен и как он работает?

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


1️⃣ Структура JWT

JWT состоит из трёх частей, разделённых точками:

<Header>.<Payload>.<Signature>
  1. Header (заголовок)

    • Указывает алгоритм подписи и тип токена.

    {
      "alg": "HS256",
      "typ": "JWT"
    }
  2. Payload (полезная нагрузка)

    • Содержит данные пользователя или другие claims (например, user_id, роль, срок действия).

    {
      "sub": "1234567890",
      "name": "John Doe",
      "role": "admin",
      "exp": 1715199300
    }
  3. Signature (подпись)

    • Создаётся с помощью секретного ключа и header + payload.

    • Проверяет, что токен не был изменён.


2️⃣ Принцип работы

  1. Пользователь логинится → сервер проверяет логин и пароль.

  2. Сервер создаёт JWT и отправляет клиенту.

  3. Клиент сохраняет токен (например, в localStorage или cookie).

  4. Для запросов к API клиент отправляет токен в заголовке:

Authorization: Bearer <jwt_token>
  1. Сервер проверяет подпись и срок действия (exp).

  2. Если токен валиден → запрос выполняется; иначе → 401 Unauthorized.


3️⃣ Преимущества

  • Stateless: сервер не хранит сессию, все данные в токене.

  • Мобильность: токен можно использовать между сервисами.

  • Защита от подделки: подпись проверяет целостность данных.


4️⃣ Недостатки

  • Нельзя легко отозвать токен до истечения срока действия.

  • Хранение в localStorage уязвимо к XSS, в cookie — к CSRF (если не использовать HttpOnly).


5️⃣ QA-проверки

  • Корректность создания токена и срок действия.

  • Доступ к защищённым эндпоинтам с валидным и просроченным токеном.

  • Проверка невозможности подмены данных или подписи.

Last updated

Was this helpful?