JWT を貼ると、3つの部分に分けて1つずつ日本語に読み下し、実際に何が起きるかを見せる道具です。
JWT でいちばん多い誤解は「中身は暗号化されている」で、実際は
base64 で書いてあるだけです。誰でも読めます。
exp をミリ秒で入れて期限が数万年先になっていても、エラーは出ません。
この道具は、そういうところを57種類、名指しします。
いまのところ指摘はありません。
atob を使わず自分で書いています。
RFC 4648 の 5 節(url-safe な字表)と RFC 7515 の決まり(詰めの = を書かない)
をなぞった実装です。余ったビットが0でないときも見ています。
そこが0でないと、別の文字列を書いても同じバイト列に戻るので、
署名の対象と読んだ中身が食い違う余地が生まれます。JSON.parse は同じ名前が2回出てきたことを教えてくれない(後ろ勝ちで黙って潰す)ためです。
受け手のライブラリによって前勝ち・後ろ勝ちが割れるので、そこは名指ししたい。atob・TextDecoder・JSON.parse と突き合わせ、
結果を自己検査の欄に出しています。crypto.subtle を使います。
暗号の実装を自前で書くのは、この道具の目的(読み下し)に対して危ないほうに倒れるからです。
鍵もトークンも外に出ません(crypto.subtle はブラウザの中の計算です)。x5c の証明書の中身も見ていません。