Decodificar e imprimir el token JWT

Echa un vistazo rápido al interior de un token jwt

Índice

Aquí hay algunos métodos efectivos para decodificar e imprimir tokens JWT directamente desde la línea de comandos:

hombre con una gran pantalla con cosas incomprensibles

1. Usando jq

La herramienta jq se puede usar para decodificar y formatear de manera legible los tokens JWT:

  • Comando:

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

    Esto divide el JWT en sus componentes (encabezado y carga útil), los decodifica desde Base64 y los formatea como JSON.

  • Ejemplo:

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

2. Script de Bash

Un script personalizado de Bash puede decodificar tokens JWT usando base64 y jq:

  • Script:

    #!/usr/bin/env bash
    function decode_jwt() {
        IFS='.' read -ra PARTS "
    
  • Guarda este script en un archivo (por ejemplo, decode_jwt.sh), hazlo ejecutable (chmod +x decode_jwt.sh) y ejecútalo con tu token como argumento.


3. Función de Zsh

Agrega la siguiente función a tu archivo .zshrc para acceso rápido:

  • Función:
    function jwt() {
        for part in 1 2; do
            b64="$(cut -f$part -d. "
    

Esta función decodifica el encabezado y la carga útil usando OpenSSL y las formatea con json.tool de Python.


4. Usando jwt-cli

Instala la herramienta jwt-cli para decodificar JWT fácilmente:

  • Instalación:

    brew tap sgaunet/homebrew-tools
    brew install sgaunet/tools/jwt-cli
    
  • Comando:

    jwt-cli decode 
    

Esta herramienta también admite codificar y firmar JWTs[2].


5. Línea de comandos mínima con OpenSSL

Para una solución rápida sin herramientas adicionales:

  • Comando:
    echo "" | awk -F'.' '{print $1, $2}' | tr ' ' '\n' | base64 -d | python -mjson.tool
    

Esto usa awk para dividir el token, base64 para decodificarlo y Python para formatear la salida.

Enlaces útiles