JWT-token decoderen en afdrukken

Kijk snel naar binnen in een JWT-token

Inhoud

Hier zijn enkele effectieve methoden voor het decoderen en afdrukken van JWT tokens rechtstreeks vanaf de command line:

man met een groot scherm met onbegrijpelijke dingen

1. Gebruik van jq

Het jq-hulpprogramma kan gebruikt worden om JWT-tokens te decoderen en netjes af te drukken:

  • Opdracht:

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

    Dit splitst het JWT in zijn onderdelen (header en payload), decodeert ze vanuit Base64 en vormt ze om naar JSON.

  • Voorbeeld:

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

2. Bash-script

Een aangepast Bash-script kan JWT-tokens decoderen met behulp van base64 en jq:

  • Script:

    #!/usr/bin/env bash
    function decode_jwt() {
        IFS='.' read -ra PARTS "
    
  • Sla dit script op in een bestand (bijvoorbeeld decode_jwt.sh), maak het uitvoerbaar (chmod +x decode_jwt.sh) en voer het uit met je token als argument.


3. Zsh-functie

Voeg de volgende functie toe aan je .zshrc-bestand voor snelle toegang:

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

Deze functie decodeert de header en payload met behulp van OpenSSL en vormt ze om met Python’s json.tool.


4. Gebruik van jwt-cli

Installeer het jwt-cli-hulpprogramma om JWTs gemakkelijk te decoderen:

  • Installatie:

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

    jwt-cli decode 
    

Dit hulpprogramma ondersteunt ook het coderen en ondertekenen van JWTs[2].


5. Minimalistische enkelregel met OpenSSL

Voor een snelle oplossing zonder extra tools:

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

Deze methode gebruikt awk om het token te splitsen, base64 om het te decoderen en Python om het resultaat af te drukken.