·4 мин. чтения

Декодер JWT для Mac — вставить и изучить

Вставка JWT на jwt.io для чтения claims работает — пока вы не осознаёте, что только что отправили действующий токен на сторонний сайт.

Вы берёте JWT из заголовка запроса или из лог-файла. Это длинная строка, разделённая точками, которая ничего не значит для человеческого глаза. Вам нужно проверить claim с датой истечения, убедиться в издателе или увидеть, какие scope зашиты внутри. Поэтому вы открываете jwt.io, вставляете токен и читаете раскодированный payload в правой панели.

У этого рабочего процесса есть проблема: вы только что отправили действующий токен аутентификации по сети на сайт, который вам не подконтролен. Payload JWT часто содержит ID пользователей, email-адреса, роли и права доступа. Сам токен может быть всё ещё действителен. Даже если jwt.io заслуживает доверия, политика безопасности вашей компании может быть с этим не согласна.

Что на самом деле содержит JWT

JSON Web Token состоит из трёх частей, разделённых точками: заголовка (алгоритм и тип), payload (claims — истечение срока, издатель, субъект, произвольные данные) и подписи. Заголовок и payload — это просто JSON, закодированный в Base64url. Чтобы их прочитать, не нужен сервер или специальная библиотека — нужен декодер Base64 и форматтер JSON. Но делать это вручную в терминале каждый раз утомительно.

Декодируйте JWT локально на своём Mac

Bellows включает специализированный декодер JWT, который разбивает токен на три части и отображает раскодированные заголовок и payload в виде отформатированного JSON. Вставьте токен — увидите claims. Никаких сетевых запросов, никакого стороннего сервера, никакого риска утечки действующего токена.

Bellows JWT decoder showing decoded header and payload on macOS

Учитывает буфер обмена

Скопируйте JWT из инструментов разработчика браузера, лог-файла или сообщения в Slack. Откройте Bellows — приложение распознает формат токена в буфере обмена и сразу предложит декодер JWT. Раскодированный payload появится за один шаг.

Проверка истечения срока в одно мгновение

Самая частая причина декодировать JWT — проверить, истёк ли его срок. Claim exp — это Unix-таймстамп: удобно для машин, бессмысленно для людей. Раскодированный payload позволяет быстро прочитать срок истечения вместе с другими claims вроде iss, sub и aud, не пересчитывая таймстампы в уме.

Часть большего набора инструментов

Декодирование JWT часто ведёт к смежным задачам: декодировать значение Base64 внутри claim, захешировать строку для сравнения с отпечатком или декодировать URL redirect URI, хранящийся в payload. С 41 доступным инструментом в одном приложении эти последующие задачи не требуют перехода к другой утилите.

Получить Bellows в Mac App Store

Следующая статья

Bellows

41 developer tools in one native Mac app — JSON, JWT, Base64, hashes, and more.

Get Bellows on the Mac App Store