Руководство по генератору JWT: Создание токенов с подписью HS256/RS256

Утилиты

Что такое JWT

JSON Web Token (JWT) — это компактный автономный формат токена, широко используемый для аутентификации и обмена информацией:

eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNzAwMDAwMDAwLCJleHAiOjE3MDAwMDgwMDB9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
↑ Header              ↑ Payload                    ↑ Signature

JWT состоит из трёх строк в кодировке Base64URL, разделённых ..


Трёхчастная структура

{
  "alg": "HS256",
  "typ": "JWT"
}
Поле Значение
alg Алгоритм подписи: HS256, RS256 и т.д.
typ Тип токена, всегда JWT

Payload

{
  "sub": "1234567890",
  "name": "John Doe",
  "role": "admin",
  "iat": 1700000000,
  "exp": 1700008000
}
Поле Значение Обязательное
sub Субъект (ID пользователя) Рекомендуется
iat Временная метка выдачи Рекомендуется
exp Срок действия Обязательное
iss Издатель Необязательное
aud Аудитория Необязательное
nbf Не ранее (время вступления в силу) Необязательное

Signature

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

Подпись гарантирует, что токен не был изменён, но Payload НЕ зашифрован по умолчанию — никогда не помещайте в него конфиденциальные данные!


HS256 vs RS256

Сравнение HS256 RS256
Тип алгоритма Симметричный (HMAC) Асимметричный (RSA)
Ключ Общий секрет (строка) Открытый ключ + Закрытый ключ
Верификатор Нужен тот же секрет Нужен только открытый ключ
Сценарий использования Один сервис, внутренние микросервисы Многосервисная архитектура, верификация третьими сторонами
Управление ключами Простое, но выше риск утечки Безопаснее, открытый ключ можно распространять

Рекомендация: Используйте HS256 для монолитов, RS256 для микросервисов/открытых API.


Использование генератора JWT

Шаг 1: Откройте инструмент

Перейдите к Генератору JWT, чтобы войти в интерфейс создания токенов.

Шаг 2: Выберите алгоритм подписи

  • Один сервис: Выберите HS256 и введите общий секрет
  • Несколько сервисов: Выберите RS256 и вставьте закрытый ключ

Шаг 3: Заполните Payload

Добавьте claims в редакторе payload:

{
  "sub": "user_10086",
  "name": "John Doe",
  "role": "admin",
  "iat": 1700000000,
  "exp": 1700008000
}

iat и exp используют временные метки Unix (секунды). Инструмент поддерживает визуальную настройку срока действия.

Шаг 4: Сгенерируйте токен

Нажмите «Сгенерировать». Инструмент автоматически:

  1. Кодирует Header в Base64URL
  2. Кодирует Payload в Base64URL
  3. Вычисляет подпись с использованием ключа
  4. Объединяет в полную строку JWT

Шаг 5: Проверьте токен

Вставьте сгенерированный токен в Декодер JWT и убедитесь:

  • Header и Payload декодируются корректно
  • Верификация подписи проходит успешно
  • Время exp не истекло

Рекомендации по сроку действия

Сценарий Рекомендуемый exp Причина
Access Token 15-30 минут Короткий срок, снижает риск утечки
Refresh Token 7-30 дней Длинный срок, используется для обновления
Ссылка для подтверждения по email 1-24 часа Одноразовое использование
API Key Без exp или 1+ год Долгосрочные учётные данные

Рекомендация: Используйте подход с двумя токенами — Access Token + Refresh Token.


Примечания по кодировке Base64URL

JWT использует кодировку Base64URL, которая отличается от стандартного Base64:

Отличие Стандартный Base64 Base64URL
+ + -
/ / _
Паддинг = Да Нет

При использовании инструмента кодирования/декодирования Base64 убедитесь, что выбран URL-безопасный режим.


Частые проблемы

Проблема Причина Решение
Верификация подписи не удалась Несовпадение ключей Убедитесь, что для генерации и верификации используется один и тот же ключ
Токен истёк Время exp прошло Перегенерируйте или используйте Refresh Token
Payload нечитаемый Не декодирован в Base64URL Используйте Декодер JWT
Конфиденциальные данные раскрыты Payload не зашифрован Никогда не помещайте пароли или секреты в Payload
Верификация RS256 не удалась Несовпадение открытого ключа Убедитесь, что открытый ключ соответствует закрытому

Заключение

JWT — это ключевая технология современной веб-аутентификации. Понимание трёхчастной структуры и различий между HS256/RS256, а также правильная настройка claims и срока действия — залог безопасного использования JWT. Генератор JWT и Декодер JWT позволяют выполнить полный цикл создания, декодирования и верификации токенов прямо в браузере.

#JWT#Token生成#HS256#RS256#认证