I put together several scripts I found on the internet to have a proper JWT bash decoder:
https://gist.github.com/thomasdarimont/46358bc8167fce059d83a1ebdb92b0e7
decode_base64_url() { local len=$((${#1} % 4)) local result="$1" if [ $len -eq 2 ]; then result="$1"'==' elif [ $len -eq 3 ]; then result="$1"'=' fi echo "$result" | tr '_-' '/+' | base64 -d } decode_jwt(){ JWT=`decode_base64_url $(echo -n $2 | cut -d "." -f $1)` if [[ "X$(echo $JWT | jq 'has("exp")')" == 'Xtrue' ]]; then JWT=`echo $JWT | jq '.exp |= (. | strflocaltime("%Y-%m-%d %H:%M:%S"))'` fi if [[ "X$(echo $JWT | jq 'has("iat")')" == 'Xtrue' ]]; then JWT=`echo $JWT | jq '.iat |= (. | strflocaltime("%Y-%m-%d %H:%M:%S"))'` fi if [[ "X$(echo $JWT | jq 'has("auth_time")')" == 'Xtrue' ]]; then JWT=`echo $JWT | jq '.auth_time |= (. | strflocaltime("%Y-%m-%d %H:%M:%S"))'` fi echo "$JWT" | jq . } # Decode JWT header alias jwth="decode_jwt 1" # Decode JWT Payload alias jwtp="decode_jwt 2"