Apidog

オールインワン協働API開発プラットフォーム

API設計

APIドキュメント

APIデバッグ

APIモック

API自動テスト

JWT (Json Web Token)とは?JWT認証を行う方法はこちら

多くのWebアプリケーションでは、JWT (Json Web Token)が活用されています。JWT認証は現在主流の認識方式として、多くの開発者に利用されています。本文では、JWTの構成、仕組みなどの基本情報を紹介した上、使いやすいツールを使って、JWT認証を簡単に行う方法を皆さんに紹介していきたいと思います。

中村 拓也

中村 拓也

Updated on 11月 12, 2024

多くのWebアプリケーションでは、JWT (Json Web Token)が活用されています。JWT認証は現在主流の認識方式として、多くの開発者に利用されています。本文では、JWTの構成、仕組みなどの基本情報を紹介した上、使いやすいツールを使って、JWT認証を簡単に行う方法を皆さんに紹介していきたいと思います。

button

JWT (Json Web Token)とは

JWT (JSON Web Token) とは、JSON形式で記述されたトークンの一種です。JWTには3つの要素が含まれています。

  • ヘッダー (Header): トークンのタイプとハッシュアルゴリズムなどのメタデータ
  • ペイロード (Payload): トークンに含まれる実際のデータ
  • 署名 (Signature): ヘッダーとペイロードを元に計算される電子署名

これらはドット(.)で区切った文字列として表現されます。

xxxxx.yyyyy.zzzzz

JWT の特徴として、独自の署名機能によりデータの改ざん検知が可能であることがあげられます。またトークン単体でデータを含むため、サーバーでのデータ参照が不要なステートレスな認証が実現できます。これらの利点から、Web API等での認証・認可によく利用されるようになっています。

JWTの構成

上記の内容から、JWTは、ヘッダー、ペイロードと署名といった3つの要素から構成されています。次は、JWTの構成要素をサンプル付きで詳しく解説していきます。

JWTのヘッダー

JWTの先頭部分になります。トークンのメタデータがJSON形式で記述されます。

{
  "alg": "HS256",
  "typ": "JWT"
}
  • alg: ハッシュアルゴリズム(この例ではHMAC SHA-256)
  • typ: トークンのタイプを示す

JWTのペイロード

JWTの中身の部分です。クレームと呼ばれる名前と値のペアのJSONオブジェクトになります。

{
  "sub": "1234567890",
  "name": "John Doe",
  "admin": true
}
  • sub: subjectの略。ユーザーを特定するid
  • name: ユーザー名
  • admin: 管理者アクセスの可否

JWTの署名

JWTの署名は、ヘッダーとペイロードに基づいて生成される電子署名になります。次は、ヘッダーとペイロードを連結し、秘密鍵(secret)を使ってHMACで署名した例になります。また、base64 encode/decodeも行っていることもよく見られます。

HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  secret)

このようにして、ヘッダー、ペイロード、署名をドットで区切って連結することでJWTが完成します。

JWT認証の仕組み

JWT認証の仕組みは以下のような流れで行われます。

  1. ユーザーが認証情報(ID/パスワードなど)を送信してログイン
  2. サーバーが認証情報を検証し、正しい場合にJWTを発行
  3. 発行されたJWTにはヘッダー、ペイロード、署名の要素が入っている
  4. ユーザーは発行されたJWTをリクエストヘッダーに含めてサーバーに送信
  5. サーバーはJWTの署名を検証し、内容が改ざんされていなければトークンは有効と判断
  6. 有効なJWTが送信されていれば、ペイロードに含まれるユーザー情報などを利用して認証済みとしてリソース提供可
  7. JWTの有効期限が切れると無効として扱われ、再ログインが必要になる
JWT認証の仕組み
画像出典:https://developer.mamezou-tech.com/blogs/2022/12/08/jwt-auth/

つまり、事前に発行されたJWTを利用してAPIなどサーバーリソースにアクセスし、トークンベースの認証を実現しているので、すーと(状態)をサーバー側で保持する必要がないためスケールしやすいアーキテクチャとなっています。

button

一番簡単な方法でJWT認証を行う方法

それでは、Webアプリを実際に開発する際に、JWT認証を行う必要がある場合、どうしたらいいですか?次は、Apidogという非常に使いやすいAPI管理ツールを使って、簡単にJWT認証を行うことができます。

ApidogでJWT認証を行う

Apidogを開き、APIリクエストの送信画面で「Auth」タブに切り替えると、タイプを「JWT」に指定することができます。そして、同じ画面でJWTの詳細情報を記入して、「送信」ボタンをクリックすれば、簡単にJWT認証を行うことができます。

ApidogというGUIツールを使って、非常に直感的な操作でJWT認証を行うことができるので、開発者にとって非常に重宝のツールになるのでしょう。

まとめ:JWTとJWT認証を実践的に理解

WebアプリケーションやAPIサービス等で広く採用されているJWT(JSON Web Token)を用いた認証は、ステートレスなトークンベース認証を実現できるため、スケーラブルな認証インフラストラクチャを提供します。しかし、JWT認証を初めて導入する際には、その仕組みや構成要素(ヘッダー、ペイロード、署名)の理解が必要で敷居が高くなりがちです。

そこでオススメなのが、Apidogという使いやすいGUIベースのAPI管理ツールを利用することです。Apidogであれば、直感的なUI操作だけで簡単にJWTトークンの発行や送信、検証を試すことができます。JWT認証時のリクエストヘッダーやレスポンス、ステータスコードなども確認できるので、開発者にとって丁度いい実践的な学習ツールになります。

button

高度なRAGシステムをDeepSeek R1とOllamaで構築観点

高度なRAGシステムをDeepSeek R1とOllamaで構築

DeepSeek R1とOllamaを用いて、高度な機能を持つRAGシステムを構築できます。質問への解答に加え、自律的に論理を議論することで、AIアプリケーションの新たな可能性を開拓します。

中村 拓也

1月 24, 2025

革新的技術を体験!DeepSeek R1 APIの価格と活用の秘訣観点

革新的技術を体験!DeepSeek R1 APIの価格と活用の秘訣

DeepSeek-R1は最先端のパフォーマンスとオープンソースの利点を兼ね備え、AI技術における大きな進歩です。連鎖推論やコンテキスト長サポートなどの機能により、開発者と企業に柔軟な選択肢を提供します。MITライセンスと透明な価格設定が革新を促進します。

中村 拓也

1月 20, 2025

初めてのRESTful API:Flask-RESTXとApidogで実現する効率的文書化観点

初めてのRESTful API:Flask-RESTXとApidogで実現する効率的文書化

本ガイドでは、Flask-RESTXを用いてRESTful APIを構築するプロセスを詳説し、開発環境のセットアップやエンドポイント管理、インタラクティブな文書生成を扱いました。さらに、Apidogを利用してAPI開発を強化する方法を紹介しました。

中村 拓也

1月 15, 2025