header.payload.signature
Декодер JWT
JSON Web Token (JWT) — это 3 части в Base64url, разделённые точками: заголовок, payload и подпись. Вставьте токен, чтобы прочитать его claims и время; он здесь декодируется, а не проверяется.
- iat 1700000000 = 2023-11-14 22:13:20 UTC
- exp 1700003600 = 2023-11-14 23:13:20 UTC
- HS256 = 32 B
Токен остаётся в этой вкладке и никуда не отправляется. Декодированный токен — не доверенный токен: подпись здесь никогда не проверяется.
Scanned by NortonTM Safe Web
Коротко
- Цена
- Без оплаты
- Аккаунт
- Не нужен
- Стандарты
- RFC 7519 (JWT), RFC 7515 (JWS), RFC 7516 (JWE)
- Подпись
- Не проверяется — токен только декодируется
- Время
- exp, nbf и iat показаны в UTC и сравниваются с вашими часами
- Загрузка
- Нет — токен остаётся во вкладке вашего браузера
Пример токена и распространённые алгоритмы
Пример токена на этой странице подписан HMAC-SHA-256 с одноразовым ключом. Страница декодировала его, чтобы получить первую таблицу.
| Claim | Значение | Время (UTC) |
|---|---|---|
| iss | auth.example.com | — |
| sub | user-42 | — |
| aud | api | — |
| iat | 1700000000 | 2023-11-14 22:13:20 UTC |
| exp | 1700003600 | 2023-11-14 23:13:20 UTC |
| alg | Семейство | Хеш | Размер подписи |
|---|---|---|---|
| HS256 | HMAC | SHA-256 | 32 B |
| HS512 | HMAC | SHA-512 | 64 B |
| RS256 | RSASSA-PKCS1-v1_5 | SHA-256 | 256 B (2048-bit key) |
| ES256 | ECDSA P-256 | SHA-256 | 64 B |
| ES512 | ECDSA P-521 | SHA-512 | 132 B |
| EdDSA | EdDSA | — | 64 B (Ed25519) |
Как декодировать JWT
Вставьте токен
Вставьте токен целиком, с Bearer в начале или без него. В нём 3 части, разделённые точками, или 5, если это зашифрованный JWE.
Прочитайте части
Заголовок и payload показаны как отформатированный JSON, а каждый claim указан в таблице. Время exp, nbf и iat показывается в UTC.
Проверьте время
Страница сравнивает exp и nbf с часами вашего устройства и сообщает, истёк ли срок действия токена. Подлинность токена она не проверяет.
Как устроен JWT
JWT (RFC 7519) записывается как header.payload.signature. Заголовок и payload — это JSON-объекты, каждый закодирован в Base64url без дополнения (RFC 4648, раздел 5), а подпись — сырые байты в той же кодировке. Декодирование лишь меняет кодировку, поэтому любой, у кого есть токен, может прочитать его payload: не помещайте в него секреты. Заголовок называет алгоритм подписи в поле alg, например HS256 (HMAC с SHA-256, подпись 32 байта) или RS256 (RSA с SHA-256, 256 байт для ключа 2048 бит).
Эта страница декодирует токен и больше ничего не делает. Она не проверяет подпись, потому что для этого нужен ключ, и не может сказать, подлинен ли токен, отозван ли он или принимается ли сервером. Она сравнивает claims exp, nbf и iat, которые считают секунды с 1970-01-01 UTC, с часами вашего устройства и выводит их как дату и время в UTC. Токен из 5 частей — это JWE: его содержимое зашифровано, поэтому можно показать только заголовок.
Вопросы о JWT
Как декодировать JWT?
Вставьте токен в поле. Страница разделяет его по точкам, преобразует первые две части из Base64url и показывает их как JSON. Bearer в начале игнорируется. Для примера токена заголовок — {"alg":"HS256","typ":"JWT"}.
Проверяет ли эта страница подпись?
Нет. Для проверки нужен секрет или открытый ключ, а эта страница никогда не запрашивает его. Токен, который здесь декодируется, всё равно может быть подделан, изменён или отозван. Проверяйте подпись в коде своего сервера с помощью поддерживаемой библиотеки JWT.
Что означают exp, iat и nbf?
Это время в секундах с 1970-01-01 UTC (RFC 7519). exp — когда токен истекает, nbf — время, раньше которого его нельзя принимать, а iat — когда он выпущен. В примере токена iat 1700000000 — это 2023-11-14 22:13:20 UTC, а exp 1700003600 — на один час позже.
Безопасно ли вставлять сюда настоящий токен?
Токен остаётся во вкладке вашего браузера и никуда не отправляется. Но действующий токен — это учётные данные: любой, у кого он есть, может использовать его до истечения срока. Вставляйте токены, которыми владеете, и по возможности предпочитайте истёкшие или тестовые.
Почему в моём токене 5 частей?
Токен из 5 частей — это JWE, зашифрованный JSON Web Token (RFC 7516). Его payload зашифрован для получателя, поэтому эта страница показывает только заголовок и размеры частей. Содержимое здесь прочитать нельзя.
Что значит «not Base64url» или «not JSON»?
Каждая из первых двух частей должна быть текстом Base64url, который декодируется в JSON-объект. Страница называет часть, которая не прошла, и причину: символ вне алфавита, байты не в UTF-8 или JSON с ошибкой в указанной строке и столбце. Обычная причина — обрезанный токен или лишние символы.