JWTを読む:見えるクレームは検証済みとは限らない
連携の開発ではJWTの項目を調べたいことがあります。読むことは診断に役立ちますが、内容を確認済みの事実や行動の許可にはしません。
読み取りで分かること
3部分のコンパクト形式では、符号化されたヘッダーとペイロードを読めます。アルゴリズム名、対象者、想定受信者、期限などの主張が含まれる場合があります。
このツールは構造をローカル表示し、JWEの復号は行いません。読めるペイロードに情報を置いても、トークンを持つ人から隠せません。
参考資料: RFC 7519 — JSON Web Token claims, NumericDate and trust decisions
デコードは発行元の認証ではない
信頼の判断には暗号学的検証とアプリが想定する文脈が必要です。ヘッダーの方式名やペイロードの権限だけでは、正しい発行者から来た証明になりません。
ここでは常にverified=falseです。署名、発行元の身元、期限、認可は確認しません。アクセス判断は表示された文章ではなく、アプリの所定の検証機構で行ってください。
参考資料: RFC 7519 — JSON Web Token claims, NumericDate and trust decisions
時刻を理解し、トークンを慎重に扱う
標準のexpはUnix基点からの秒で、ミリ秒や現地の日付ではありません。期限を読めても、現在時刻と比較して判定したことにはなりません。
実トークンを会話、サポート資料、公開画像に貼らないでください。構造は合成データで学び、編集後に読めることを受理される証拠としないでください。
参考資料: RFC 7519 — JSON Web Token claims, NumericDate and trust decisions
権限を与えない診断例
合成ペイロード{"sub":"example-reader","exp":1893456000}のexpは2030-01-01T00:00:00Zを表します。項目の解釈であって、信頼するシステムの発行証明ではありません。
署名が暗号学的に不正でも読めるペイロードはデコードでき、結果はverified=falseのままです。subやexpを変えても新しいトークンは認可されず、長い署名を目で見て検証することもできません。