Декодер JWT

Посмотрите, что внутри JSON Web Token.

Вставьте токен, чтобы декодировать его.
Заголовок
Полезная нагрузка
Подпись

Этот инструмент декодирует токены, но никогда не проверяет подписи. Ваш токен остаётся в этой вкладке браузера.

Работает в браузере. То, что вы вводите, никуда не отправляется.

Как декодировать JWT

  1. Вставьте токен, с префиксом Bearer или без него.
  2. Прочитайте заголовок и payload в виде отформатированного JSON.
  3. Проверьте таблицу claims: издателя, аудиторию и время истечения.

Три части JWT

ЧастьКодировкаСодержит
ЗаголовокJSON в base64urlАлгоритм подписи (alg) и тип токена (typ)
PayloadJSON в base64urlClaims: собственно данные токена
ПодписьБайты в 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). Эта страница для удобства показывает необработанное число рядом с читаемой датой.

Похожие инструменты