解码并打印JWT令牌

快速查看 jwt 令牌内部结构

目录

以下是直接从命令行解码和打印 JWT 令牌的一些有效方法:

一个男人面对一个显示不可理解内容的大屏幕

1. 使用 jq

jq 工具可用于解码并美化打印 JWT 令牌:

  • 命令

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

    该命令将 JWT 分割成其组成部分(头部和负载),从 Base64 解码,并将其格式化为 JSON。

  • 示例

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

2. Bash 脚本

一个自定义的 Bash 脚本可以使用 base64jq 来解码 JWT 令牌:

  • 脚本

    #!/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 解码头部和负载,并使用 Python 的 json.tool 进行格式化。

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 格式化输出

有用的链接