Как декодировать JWT-токены и безопасно проверять claims
Быстрый ответ
Чтобы декодировать JWT: вставьте токен в JWT Decoder и header и payload появятся как форматированный JSON. Инструмент декодирует Base64URL-части локально —токен не покидает браузер. Помните: декодирование только показывает содержимое; не проверяет signature.
Введение
JWT (JSON Web Token) — компактный, URL-safe формат токена для аутентификации и обмена информацией. JWT имеет три части, разделённые точками: header.payload.signature. Header указывает алгоритм, payload содержит claims (user ID, roles, expiration), а signature доказывает, что токен не был изменён. Декодирование позволяет проверить содержимое для отладки —но не проверяет подлинность.
Шаг за шагом
-
Откройте инструмент декодера JWT.
Перейдите на страницу инструмента декодера JWT. Инструмент принимает любую строку JWT (три части в кодировке Base64URL, разделенные точками).
-
Вставьте свой токен JWT
Вставьте JWT в поле ввода. Типичный JWT выглядит так: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyMSJ9.signature. Инструмент автоматически определяет три части.
-
Просмотрите декодированный заголовок
Инструмент Base64URL декодирует первую часть и отображает ее как JSON. Заголовок обычно содержит «alg» (алгоритм, например HS256) и «typ» (тип, обычно «JWT»).
-
Просмотрите декодированные полезные данные (заявки)
Инструмент декодирует вторую часть и отображает претензии в формате JSON. Общие претензии включают «sub» (идентификатор субъекта/пользователя), «iat» (дата выдачи), «exp» (срок действия) и «role» (роль пользователя).
-
Проверьте подпись (третья часть)
Инструмент показывает часть подписи. Примечание: декодирование НЕ проверяет подпись. Для проверки вам понадобится ключ подписи и библиотека проверки. Никогда не доверяйте заявлениям JWT без проверки подписи на стороне сервера.
Примеры
Раскодируйте простой JWT
Вход: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyMSIsIm5hbWUiOiJBbGljZSIsImlhdCI6MTY5MzUyNjQwMH0.signature
Выход: Header: {"alg":"HS256","typ":"JWT"}
Payload: {"sub":"user1","name":"Alice","iat":1693526400}
JWT с заявлением об истечении срока действия
Вход: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhZG1pbiIsImV4cCI6MTY5MzYxMjgwMH0.sig
Выход: Header: {"alg":"HS256"}
Payload: {"sub":"admin","exp":1693612800}
Распространенные проблемы
- Путаница декодирования с проверкой: при декодировании JWT только считывается его содержимое; это НЕ доказывает подлинность токена. Всегда проверяйте подпись на стороне сервера с помощью ключа подписи.
- Доверие токенам с истекшим сроком действия — проверьте утверждение «exp» и отклоните токены с истекшим сроком действия. Значение «exp» — это временная метка Unix в секундах.
- Base64 против Base64URL — JWT использует кодировку Base64URL (без заполнения, - и _ вместо + и /). Стандартный декодер Base64 не работает на деталях JWT.
- Конфиденциальные данные в полезных данных — полезные данные JWT доступны для чтения любому, у кого есть токен. Не храните в полезных данных пароли, номера кредитных карт и другие секреты.
Советы
- Всегда проверяйте подпись JWT на стороне сервера, прежде чем доверять каким-либо утверждениям — декодирование само по себе не является аутентификацией.
- Проверьте утверждения «exp» (срок действия) и «nbf» (не раньше), чтобы убедиться, что токен действителен для текущего времени.
- Используйте токены с коротким сроком действия (15–60 минут) с токенами обновления для длительных сеансов — минимизирует ущерб в случае утечки токена.
- Используйте наш декодер JWT для безопасной локальной отладки — ваш токен никогда не покидает ваш браузер.