Apidog

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

API設計

API仕様書生成

APIデバッグ

API Mock

APIテスト自動化

無料登録
Home / 観点 / JWT (Json Web Token)とは?JWT認証を行う方法はこちら

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

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

多くの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

Apidogのニュースレターを購読する

今すぐ購読すると、いつでもApidogから更新情報と最新観点を手に入れることができます。