Прочитайте заголовок и полезную нагрузку JWT в JSON. Изучите поля токена при разработке, отделяя декодирование от проверки.
Как пользоваться
Вставьте токен из трёх частей через точки. Просмотрите данные, а проверку выполняйте доверенным механизмом авторизации приложения.
Пример
Поля sub и exp показывают заявленные субъект и срок действия. Само наличие полей не доказывает их подлинность.
Вопросы и ответы
Проверяется ли подпись?
Нет. Подлинность и права доступа не проверяются. Не принимайте токен только потому, что он декодируется, и не передавайте действующие секреты.
Связанные инструменты
Практическая задача
Проверяйте только разрешённый токен. Полезная нагрузка может содержать личные сведения без шифрования. При отказе приложения изучайте его проверку, а не считайте декодирование доказательством ошибки.
Дополнительный вопрос
Правка данных исправит доступ?
Нет. Она не создаёт доверенную подпись. Разрешения задают системы выпуска и проверки, а не декодер текста.
Детали для проверки результата
| Деталь | Пояснение |
|---|---|
| Чтение и проверка токена | Чтение показывает лишь заявленные данные. Проверка подтверждает подпись и правила доверия приложения. Срок, издатель, аудитория и разрешения требуют отдельных проверок после разбора. |
| Обычный Base64 и вариант URL | JWT использует вариант Base64 для URL. Два символа алфавита отличаются, дополнение часто отсутствует. Часть токена и обычную строку Base64 нельзя бездумно менять местами. |
| Размер Base64 | Base64 обычно записывает три исходных байта четырьмя видимыми знаками. Неполная последняя группа дополняется. Поэтому результат обычно длиннее исходных байтов: это не сжатие. |
| Дополнение Base64 | Знак равенства в конце Base64 дополняет последнюю группу и не входит в сообщение. Не удаляйте знаки из середины строки, пытаясь заставить повреждённые данные пройти проверку. |
| Строгий синтаксис JSON | JSON требует двойных кавычек для ключей и строк. Объекты заключаются в фигурные скобки, массивы в квадратные. Комментарии и завершающие запятые не относятся к этому формату. |
| Строки и значения | Строка JSON "12" отличается от числа 12, а "false" от false. Смена типа влияет на сравнение и импорт. Коды храните строками, если важны начальные нули и точные цифры. |
| Кодирование и шифрование | Кодирование меняет представление данных для чтения другой системой и не требует секретного ключа. Шифрование защищает сведения ключом, а хеширование создаёт отпечаток для другой задачи. |
| Байты UTF8 | UTF8 записывает символы байтами. Базовая латиница занимает один байт на букву, многие другие знаки занимают больше. Число байтов не равно числу видимых символов. |