レッスン 4
よくある JWT のミス
JSON Web Token の検証と取り扱いで避けるべき問題。
JWT バグは、コンパクトなトークンを信頼できるセッション記録のように扱うことから多く生じます。形式はシンプルですが、検証ルールが重要です。
デコード payload を信頼する
payload は読める JSON です。誰でも任意フィールドのトークン形文字列を作れます。デコード payload に admin: true や馴染みの sub があるだけでアクセスを付与しないでください。
audience と issuer を無視する
1 つの API 向けに発行されたトークンが別 API で自動的に動くべきではありません。IdP とサービス境界に従い、常に iss と aud を確認してください。
想定外のアルゴリズムを受け入れる
アプリケーションは期待するアルゴリズムのみ許可すべきです。アルゴリズム混乱バグは、署名チェック方法を変える header 値を verifier が受け入れるときに起きます。
有効期限の誤処理
exp をミリ秒ではなく秒で現在時刻と比較してください。また、分散サービス間で許容するクロックスキューを決めてください。
トークンの漏洩
JWT はしばしば bearer 資格情報です。トークンを使えれば、失効または期限切れまで subject として振る舞える可能性があります。ログ、スクリーンショット、issue tracker、分析イベントにトークンを入れないでください。