JSON Web Token 看着像乱码,其实大部分是可读的:三个部分里有两个只是经 base64 编码的 JSON。这个解码器把它们打开,让你看到令牌发给谁、声明了什么,以及确切何时过期——通常是在排查某个请求为何被拒的时候。如果你有密钥,它还能校验 HMAC 签名,从而确认令牌真的出自你以为的那个系统。令牌是活的凭据,所以它在页面内运行这件事很要紧:令牌和密钥都不会被发送到任何地方。
比多数地方安全,因为解码发生在你的浏览器里,也不会有任何东西经过网络。但仍要把令牌当成它本来的身份——凭据:任何看到你屏幕或剪贴板的人就等于拿到了它;如果那是一个活的会话令牌,它到过期前一直有效。
不是,这一点常让人意外。头部和载荷只是经过 base64 编码——任何持有令牌的人都能不用密钥读出来。签名阻止内容被改动,而不是被读取。永远不要把机密放进 JWT 的载荷。
因为它们用共享密钥签名,而你可以把密钥粘进来。RS256、ES256 等则用私钥签名、用配对的公钥校验,而那个公钥通常得从签发方的 JWKS 端点取回——那意味着要发请求,而本工具不发请求。
最常见的是这个密钥并非签名所用的那个,或者粘贴时带进了多余的空格或换行。也可能令牌实际用的算法与头部声称的不同,或者它被人改动过——而后者正是校验存在的意义。
它们是标准的时间声明,都是以秒为单位的 Unix 时间戳。exp 是令牌失效的时刻,iat 是它签发的时刻,nbf 是最早可以使用它的时刻。本页把三者都显示为普通日期,并对 exp 已过的令牌加上标记。