Base64URL と JWT:読めても信頼は別
JWT は通常の Base64 ではなく Base64URL を使います。読む部分と検証する部分を分けます。
3つの部分
署名付き JWT は多くの場合、header、payload、signature の3部分をドットでつなぎます。
2文字が違う
Base64URL は + を -、/ を _ に変えます。JWT は末尾の = も省きます。
デコードは検証ではない
payload から iss、sub、aud、exp などを読めます。しかし署名や発行者を証明したことにはなりません。サーバーが鍵とアルゴリズムで検証します。
alg に注意
受け入れるアルゴリズムはアプリ側が決めます。想定外の alg は失敗にします。
調査手順
ドットで分け、最初の2つを Base64URL として読む。必要なら padding を戻し、署名、発行者、audience、時刻を確認します。