你从请求头或日志文件中获取JWT。它是一个长的点分隔符字符串,对人眼来说没有意义。你需要检查过期声明、验证发行者或查看嵌入的范围。所以你打开jwt.io、粘贴令牌、在右侧窗格中读取解码的有效负载。
这个工作流有一个问题:你刚才通过网络发送了有效的身份验证令牌到你不控制的网站。JWT有效负载通常包含用户ID、电子邮件地址、角色和权限。令牌本身可能仍然有效。即使jwt.io是可信的,你的公司安全策略可能不同意。
JWT实际上包含什么
JSON Web Token有三个由点分隔的部分:头(算法和类型)、有效负载(声明 — 过期、发行者、主题、自定义数据)和签名。头和有效负载只是Base64url编码的JSON。你不需要服务器或特殊库来读取它们 — 你需要一个Base64解码器和JSON格式化工具。但每次都在Terminal中手动执行这个操作很繁琐。
在你的Mac上本地解码JWT
Bellows包括一个专用的JWT解码器,将令牌拆分为三个部分并将解码的头和有效负载显示为格式化的JSON。粘贴令牌、看到声明。没有网络请求、没有第三方服务器、没有泄露有效令牌的风险。
剪贴板感知
从浏览器开发工具、日志文件或Slack消息中复制JWT。打开Bellows,它检测剪贴板上的令牌格式,立即建议JWT解码器。解码的有效负载出现在一步中。
一目了然检查过期
解码JWT最常见的原因是检查它是否已过期。exp声明是Unix时间戳 — 对机器很容易,对人类毫无意义。看到解码的有效负载让你快速读取过期时间,同时还能看到其他声明如iss、sub和aud,无需在你的头脑中转换时间戳。
更大工具包的一部分
JWT解码通常导致相关任务:解码声明内的Base64值、对字符串进行哈希以与指纹比较或URL解码有效负载中存储的重定向URI。有了应用中的41个工具,这些后续任务不需要切换到不同的实用工具。