HMAC с SHA-256. Общая симметричная ключ. Рекомендуется для общего использования.
Как это работает
JSON Web Token (JWT) — компактный подписанный токен, переносящий информацию (claims) между двумя сторонами. Он состоит из трёх частей, разделённых точками —заголовок, полезная нагрузка и подпись—, каждая закодирована в Base64URL.
В режиме «Создать» вы задаёте заголовок и полезную нагрузку в JSON и подписываете секретным ключом (HMAC) или закрытым ключом (RSA/ECDSA). В режиме «Читать» вы вставляете существующий токен, чтобы изучить его содержимое и проверить подпись.
Полезная нагрузка не зашифрована: любой может прочитать её, декодировав Base64URL. Подпись лишь гарантирует, что токен не изменялся, но не скрывает его. Никогда не помещайте конфиденциальные данные в JWT.
Примеры
header{"alg":"HS256","typ":"JWT"} → eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9payload{"sub":"1234567890","name":"John Doe","iat":1516239022} → eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQtokeneyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5cПодпись (третья часть) зависит от алгоритма и ключа; в этом примере используется HS256 с ключом "your-256-bit-secret".Сценарии использования
- Аутентифицировать пользователей в API: сервер выдаёт подписанный токен и проверяет его при каждом запросе, не храня сессию.
- Изучать и отлаживать токены аутентификации, чтобы увидеть их claims (sub, exp, роли) и даты.
- Проверить подпись токена секретным или открытым ключом, чтобы убедиться, что он не был подделан.
- Генерировать тестовые токены с разными алгоритмами (HMAC, RSA, ECDSA) при разработке процесса аутентификации.
Часто задаваемые вопросы
Зашифровано ли содержимое JWT?
Нет. Заголовок и полезная нагрузка лишь закодированы в Base64URL, что любой может декодировать. Подпись гарантирует целостность (что не изменялось), а не конфиденциальность.
В чём разница между HS256 и RS256?
HS256 использует один общий секретный ключ для подписи и проверки (HMAC). RS256 асимметричен: подписывает закрытым ключом и проверяет открытым, что идеально, когда многим сервисам нужно проверять без возможности выпускать токены.
Что означают claims iat, exp и nbf?
Это стандартные метки времени: iat (когда выпущен), exp (когда истекает) и nbf (недействителен до). Выражаются в секундах с 1970 года (эпоха Unix).
Почему алгоритм "none" не рекомендуется?
Потому что он создаёт токен без подписи: любой может изменить полезную нагрузку, и он всё равно будет принят. Он годится только для тестов, никогда для продакшена.
Отправляется ли мой токен на сервер?
Нет. Создание, декодирование и проверка происходят полностью в браузере; токен и ключи никогда не покидают ваше устройство.