【面接対策】JWTとは?中学生でもわかる例え話と理想的な回答例

認証・認可
博士
【JWT(読み方:ジェイダブリューティー)】って、お店の会員証みたいなものです。会員証(JWT)を見せれば、受付(サーバー)は「ああ、〇〇さんね!」ってすぐ分かって、色々なサービス(API)を使わせてくれるんです。でも、会員証を落とすと悪用される危険も!だから、JWTは大切に管理する必要があるんですね。
💡 面接でのベスト回答
想定質問:「JWTについて教えてください」

面接官:JWTについて説明してください。

私:JWT (JSON Web Token) は、JSON形式で表現された情報を安全に伝達するための規格です。認証認可の仕組みでよく使われ、クライアントとサーバー間で信頼できる情報をやり取りできます。

以前のプロジェクトで、マイクロサービス間の認証を改善するためにJWTを導入しました。API Gatewayを介して各マイクロサービスにアクセスする際に、ユーザー認証情報をJWTとして発行し、サービス間の通信で検証することで、セキュリティレベルを向上させ、シングルサインオンに近い体験を提供することができました。具体的には、セッションIDベースの認証と比較して、サーバー側のステートレス化が進み、スケーラビリティが向上しました。

現役エンジニアによる深掘り解説

メリット

ステートレス: JWTはサーバーにセッション情報を保持する必要がないため、サーバーのスケーラビリティが向上します。サーバーはJWTに含まれる情報に基づいて認証を行うため、負荷分散が容易になります。

分散システムへの対応: 複数のドメインやサービス間で認証情報を共有しやすいため、マイクロサービスアーキテクチャに適しています。

柔軟なペイロード: JWTには、ユーザーIDや権限情報など、必要な情報を自由に含めることができます。この情報は、サーバーやクライアントが利用できます。

検証の容易さ: デジタル署名によって改ざんを検知できるため、安全性が高いです。

デメリット

トークンのサイズ: JWTはヘッダー、ペイロード、署名を含むため、Cookieなどの他の認証方法に比べてサイズが大きくなる傾向があります。

トークンの失効: 一度発行されたJWTは、有効期限が切れるまで有効です。トークンを即時失効させるには、追加の仕組み(ブラックリストなど)が必要になります。

クレーム情報の漏洩リスク: ペイロードは暗号化されていないため、機密情報をJWTに含めることは避けるべきです。

リプレイアタック: 盗まれたJWTが悪用される可能性があります。有効期限を短くしたり、追加のセキュリティ対策(トークンバインディングなど)を講じる必要があります。

⚠️ 面接突破のワンポイント

  • 面接では、JWTの構造(ヘッダー、ペイロード、署名)とそれぞれの役割を説明できるように準備しましょう。また、どのような署名アルゴリズムが利用されているのか(HS256, RS256など)についても理解しておきましょう。
  • セキュリティ上の注意点(トークン失効、クレーム情報の保護など)について、具体的な対策と合わせて説明できるようにしておきましょう。
タイトルとURLをコピーしました