JWT認証の使用中止を提唱するGitHub Gist

原題: Stop Using JWTs

なぜ重要か

JWT使用の危険性を指摘する記事として、セキュリティ意識の高い開発者向けに重要な参考資料。認証実装の誤りは大規模なセキュリティ侵害につながるため、業界全体の慣行改善に寄与する可能性がある。

開発者向けプラットフォームGitHubのGistで、ユーザーログイン維持のためのJWT(JSON Web Token)使用の中止を主張する記事が公開された。著者は、JWTは設計上短命トークン向けであり、セッション管理に不適切で、セキュリティ専門家からも信頼されていないと指摘。代わりに従来のクッキーベースセッション使用を推奨している。

GitHubユーザーsamschによって公開されたこのGistは、ユーザー認証にJWTを使用することの問題点を詳しく解説している。記事は複数の理由を列挙している。

第一に、JWT仕様は5分以下の極めて短寿命トークン向けに設計されており、セッション管理のような長期的な使用には適さないと主張。第二に、「ステートレス」認証は実際には完全に実装不可能であり、トークンを安全に管理するには何らかのサーバー側の状態管理が必須だと指摘。第三に、シンプルなセッショントークンとしてのJWTは、従来のセッションクッキーより効率が悪く柔軟性に欠けると批判。

最も重要な指摘として、JWT仕様自体がセキュリティ専門家から信頼されていないと述べている。原仕様では偽造トークン生成が可能だったほか、他の欠陥も含まれている可能性があるという。

記事はJWT推奨者からの反論にも応答している。Googleを例に挙げる主張に対しては、Googleはブラウザ内のユーザーセッションにはJWTを使用せず、代わりに従来のクッキーセッションを採用していることを指摘。JWTの適切な用途はシングルサインオン転送など限定的だと明確にしている。また、ローカルストレージへの認証認証情報保存も避けるべき慣行として警告している。このGistは328のスター評価を受けており、開発コミュニティで相応の支持を得ている。

出典

gist.github.com — 元記事を読む →