Декодер JWT
Посмотрите, что внутри JSON Web Token.
Claims
| Claim | Значение | Смысл |
|---|
Этот инструмент декодирует токены, но никогда не проверяет подписи. Ваш токен остаётся в этой вкладке браузера.
Работает в браузере. То, что вы вводите, никуда не отправляется.
- Читаемые даты exp и iat
- Статус истечения с первого взгляда
- Токен остаётся на вашем устройстве
Как декодировать JWT
- Вставьте токен, с префиксом Bearer или без него.
- Прочитайте заголовок и payload в виде отформатированного JSON.
- Проверьте таблицу claims: издателя, аудиторию и время истечения.
Три части JWT
| Часть | Кодировка | Содержит |
|---|---|---|
| Заголовок | JSON в base64url | Алгоритм подписи (alg) и тип токена (typ) |
| Payload | JSON в base64url | Claims: собственно данные токена |
| Подпись | Байты в base64url | Доказательство, что заголовок и payload не изменились |
Частые алгоритмы подписи
| Значение alg | Тип | Примечание |
|---|---|---|
| HS256 | Симметричный, общий секрет | Частый выбор для одного приложения, которое само выдаёт и проверяет свои токены |
| RS256 | Асимметричный, RSA | Частый выбор, когда токен должна проверять другая сторона, например в OAuth |
| ES256 | Асимметричный, эллиптическая кривая | Более короткие подписи, чем у RSA, при том же уровне безопасности |
| none | Без подписи | Проверяющая сторона всегда должна отклонять этот алгоритм |
Стандартные claims из RFC 7519
- exp, nbf и iat все являются значениями NumericDate: целые секунды с начала эпохи Unix, никогда не миллисекунды.
- aud может быть одной строкой или массивом строк, когда токен предназначен для нескольких аудиторий.
- jti должен быть уникальным для каждого токена, что и делает возможным блокировку одного конкретного токена.
- Ни один из стандартных claims не обязателен. Токен может нести только пользовательские claims, определённые приложением.
Частые вопросы о Декодер JWT
Что такое три части JWT?
Заголовок, payload и подпись, каждая закодирована в base64url и соединена точками. Заголовок называет алгоритм подписи, payload содержит claims, а подпись позволяет серверу проверить, кто выдал токен.
Этот инструмент проверяет подпись?
Нет. Он декодирует заголовок и payload и никогда не проверяет подпись. Проверяйте токены на своём сервере с секретным или публичным ключом, прежде чем им доверять. Токен, который вы вставляете, никогда не покидает браузер.
Payload JWT зашифрован?
Не в обычном подписанном JWT. Он только закодирован, поэтому его может прочитать любой, у кого есть токен, поэтому пароли и личные данные никогда не должны туда попадать. У зашифрованных токенов (JWE) пять частей, и им нужен ключ.
Что означают exp, iat и nbf?
Это время в секундах с 1 января 1970 года (UTC). exp это когда токен истекает, iat это когда он был выпущен, а nbf это время, раньше которого его нельзя принимать.
Почему мой токен показывается как истёкший?
Его время exp раньше, чем часы на вашем устройстве. Токены доступа часто живут всего 5-60 минут, поэтому запросите новый и проверьте, что часы на компьютере выставлены верно.
Что определяет RFC 7519?
Он определяет сам формат JWT: три части в base64url, соединённые точками, и значение стандартных claims вроде iss, sub, exp и aud. Он не требует какого-то конкретного алгоритма подписи.
Можно отозвать JWT до истечения срока?
Не сам по себе, ведь это просто подписанные данные. Досрочный отзыв требует поддержки на сервере, например чёрного списка по claim jti, или короткого срока действия в паре с отдельным refresh-токеном.
Почему exp и iat показываются как большие числа, а не даты?
Они хранятся в токене как значения NumericDate, целые секунды с начала эпохи Unix (1 января 1970 UTC). Эта страница для удобства показывает необработанное число рядом с читаемой датой.