Декодирование и вывод JWT-токена

Быстро заглянем внутрь JWT-токена.

Содержимое страницы

Вот несколько эффективных методов декодирования и вывода JWT-токенов непосредственно из командной строки:

Это руководство является частью кластера Инструменты разработчика: Полное руководство по современным рабочим процессам.

мужчина перед большим экраном с непонятными данными

1. Использование jq

Инструмент jq можно использовать для декодирования и форматирования JWT-токенов:

  • Команда:

    echo "" | jq -R 'split(".") | .[0:2] | map(@base64d) | map(fromjson)'
    

    Эта команда разбивает JWT на его компоненты (заголовок и полезную нагрузку), декодирует их из Base64 и форматирует как JSON. Подробнее о операциях с Base64 см. Кодирование и декодирование Base64 на Windows, Linux и Mac.

  • Пример:

    echo "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" \
      | jq -R 'split(".") | .[0:2] | map(@base64d) | map(fromjson)'
    

2. Bash-скрипт

С помощью кастомного Bash-скрипта можно декодировать JWT-токены, используя base64 и jq:

  • Скрипт:

    #!/usr/bin/env bash
    function decode_jwt() {
        IFS='.' read -ra PARTS "
    
  • Сохраните этот скрипт в файл (например, decode_jwt.sh), сделайте его исполняемым (chmod +x decode_jwt.sh) и запустите, передав ваш токен в качестве аргумента.


3. Функция Zsh

Добавьте следующую функцию в ваш файл .zshrc для быстрого доступа:

  • Функция:
    function jwt() {
        for part in 1 2; do
            b64="$(cut -f$part -d. "
    

Это декодирует заголовок и полезную нагрузку с помощью OpenSSL и форматирует их с помощью json.tool Python.


4. Использование jwt-cli

Установите инструмент jwt-cli для легкого декодирования JWT:

  • Установка:

    brew tap sgaunet/homebrew-tools
    brew install sgaunet/tools/jwt-cli
    
  • Команда:

    jwt-cli decode 
    

Этот инструмент также поддерживает кодирование и подписывание JWT[2].


5. Минимальный однострочник с OpenSSL

Для быстрого решения без дополнительных инструментов:

  • Команда:
    echo "" | awk -F'.' '{print $1, $2}' | tr ' ' '\n' | base64 -d | python -mjson.tool
    

Здесь используется awk для разделения токена, base64 для декодирования и Python для форматирования вывода.

Полезные ссылки