Decodificar e imprimir o token JWT

Dê uma rápida olhada no conteúdo do token jwt

Conteúdo da página

Aqui estão alguns métodos eficazes para decodificar e imprimir tokens JWT diretamente a partir da linha de comando:

homem com uma tela grande com coisas incompreensíveis

1. Usando jq

A ferramenta jq pode ser usada para decodificar e formatar tokens JWT de forma legível:

  • Comando:

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

    Isso divide o JWT em seus componentes (cabeçalho e carga útil), decodifica-os do Base64 e os formata como JSON.

  • Exemplo:

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

2. Script Bash

Um script personalizado de Bash pode decodificar tokens JWT usando base64 e jq:

  • Script:

    #!/usr/bin/env bash
    function decode_jwt() {
        IFS='.' read -ra PARTS "
    
  • Salve este script em um arquivo (por exemplo, decode_jwt.sh), torne-o executável (chmod +x decode_jwt.sh) e execute-o com seu token como argumento.


3. Função Zsh

Adicione a seguinte função ao seu arquivo .zshrc para acesso rápido:

  • Função:
    function jwt() {
        for part in 1 2; do
            b64="$(cut -f$part -d. "
    

Esta função decodifica o cabeçalho e a carga útil usando OpenSSL e formata-os com json.tool do Python.


4. Usando jwt-cli

Instale a ferramenta jwt-cli para decodificar JWTs de forma fácil:

  • Instalação:

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

    jwt-cli decode 
    

Esta ferramenta também suporta codificação e assinatura de JWTs[2].


5. Linha de Comando Mínima com OpenSSL

Para uma solução rápida sem ferramentas adicionais:

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

Isso usa awk para dividir o token, base64 para decodificar e Python para formatar a saída.