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

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

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

  1. Header (Заголовок):

    • Содержит тип токена (JWT) и используемый алгоритм шифрования, например, HMAC SHA256 или RSA.

    Пример:

    {
      "alg": "HS256",
      "typ": "JWT"
    }
  2. Payload (Нагрузка):

    • Содержит утверждения (claims). Утверждения бывают заранее определенными (registered claims), частными (private claims), и зарезервированными (public claims).

    Пример:

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

    • Создается путем кодирования заголовка и нагрузки с использованием секретного ключа (если используется алгоритм симметричного шифрования) или путем использования закрытого ключа (если используется асимметричное шифрование).

    Пример:

    HMACSHA256(
      base64UrlEncode(header) + "." +
      base64UrlEncode(payload),
      secret
    )

Процесс работы:

  1. Генерация токена:

    • Сервер создает JWT, включая заголовок, нагрузку и подпись.

  2. Отправка токена клиенту:

    • Токен отправляется клиенту, например, в заголовке HTTP-запроса или внутри тела запроса.

  3. Получение и проверка токена:

    • Клиент получает токен и может декодировать его, чтобы получить информацию в нагрузке. Заголовок и нагрузка декодируются, но подпись остается недоступной.

  4. Проверка подписи:

    • Если подпись не совпадает с подписью, рассчитанной клиентом с использованием того же ключа, токен считается недействительным.

Last updated