Apidog

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

API設計

APIドキュメント

APIデバッグ

APIモック

API自動テスト

マニュアル:Node.jsにおけるJWT認証と認可

この記事では、JWTの動作の概要、そのメリットの説明、Node.jsでJWTベースの認証を実装するための操作手順を皆さんに紹介します。この記事から、Node.jsで開発されたAPIでの保護されたリソースにシームレスにアクセスするために、JWT認証を簡単に実装するワークフローを手に入れましょう。

中村 拓也

中村 拓也

Updated on 11月 12, 2024

JSON Web Token(JWT)は、Node.jsアプリにおける認証と認可を処理するためによく利用される方法としています。JWTはシンプルでコンパクトなトークンで、ユーザーを認証し情報を安全に送信するためにHTTPリクエストで簡単に渡すことができます。

この記事では、JWTの動作の概要、そのメリットの説明、Node.jsでJWTベースの認証を実装するための操作手順を皆さんに紹介します。この記事から、Node.jsで開発されたAPIでの保護されたリソースにシームレスにアクセスするために、JWT認証を簡単に実装するワークフローを手に入れましょう。

button

JWT (Json Web Token)とは

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

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

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

xxxxx.yyyyy.zzzzz

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

JWTの利用シーン

JWTは、ステートレスでドメイン間対応の認証方式として、多くのwebアプリケーションでJWTが活用されています。次は、JWTの主な利用シーンを紹介します。

  • API認証
  • SPA(Single Page Application)の認証
  • マイクロサービス間での認証
  • クロスドメインシングルサインオン(SSO)

API認証では、クライアントからアクセストークンとしてJWTを送信することで、APIサーバー側でユーザーの認証/認可を実現できます。

SPAでは、WebアプリケーションのフロントエンドとバックエンドでCORS対応の認証が必要になりますが、JWTならクロスドメインでも利用できます。

マイクロサービス間では、各サービスがユーザー情報を直接管理せずとも、JWTに含まれる情報を利用できるため有用です。

SSOでは異なるドメイン間でのシームレスな認証が必要で、ドメイン間でJWTを共有することで実現できます。

このように、様々な認証・認可のユースケースでJWTが活用されています。ステートレスでスケーラブルなのが特徴です。

Node.jsでJWT認証と認可の実装方法

Node.jsの公式サイトから、Node.jsでJWT認証と認可を行うために、次の手順に従って操作することができると思います。

JWTの生成

jsonwebtokenライブラリを使用してJWTを生成します。 まずは次のコマンドでライブラリをインストールします。

npm install jsonwebtoken

そして、次のようなJWTを生成します:

const jwt = require('jsonwebtoken');

const payload = { userId: 123, role: 'admin' };
const secretKey = 'your-secret-key';
const token = jwt.sign(payload, secretKey, { expiresIn: '1h' });

JWTの検証

サーバー側はJWTを受け取る場合は、JWTの真実性が検証されます。次のコマンドでJWTの検証を行うことができます:

const jwt = require('jsonwebtoken');

const token = 'your-jwt-token';
const secretKey = 'your-secret-key';
try {
  const decoded = jwt.verify(token, secretKey);
  console.log(decoded);
} catch (error) {
  console.error('JWT verification failed');
}

Middlewareを作成

Express.jsフレームワークの場合、JWT検証のmiddlewareを作成して、ルート(routes)を保護できます:

const jwt = require('jsonwebtoken');
const secretKey = 'your-secret-key';
function authenticateToken(req, res, next) {
  const token = req.header('Authorization');
  if (!token) return res.status(401).send('Access denied');
try {
    const decoded = jwt.verify(token, secretKey);
    req.user = decoded;
    next();
  } catch (error) {
    res.status(403).send('Invalid token');
  }
}

実用例

次は、JWT認証と認証を行うためのExpress.jsのアプリのサンプルになります:

// Import libraries
const express = require('express');
const jwt = require('jsonwebtoken');
// App setup
const app = express();
const secretKey = 'your-secret-key';
// Login route, generate JWT
app.post('/login', (req, res) => {
  // Authenticate credentials and create token
  const token = jwt.sign({ username: 'user' }, secretKey);   
  res.json({ token });
});
// Protected route, verify JWT
app.get('/protected', authenticateToken, (req, res) => {
  res.json({ message: 'Protected data' });
});
// JWT verification middleware
function authenticateToken(req, res, next) {
  // Verify JWT and decode payload
  const decoded = jwt.verify(token, secretKey);  
  req.user = decoded;
  next(); 
}
app.listen(3000);
button

Apidog:JWT認証を数クリックで行う

もしより簡単にJWT認証を行う必要がある場合、Apidogという非常に使いやすいAPI管理ツールがおすすめです。Apidogは、JWT認証を完璧に対応できるので、リクエストをサーバー側に送信する前に、直感的な操作でJWT認証を行えるAPIクライアントツールです。使い方は非常に簡単です:

apidogでJWT認証を

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

また、APIをより効率的に管理したり、テストしたりする必要がある場合は、Apidogはそれをサポートできます。

まとめ

Node.jsでのアプリケーション開発において、JWT(JSON Web Token)を用いた認証はセキュリティ確保のために非常に重要な技術です。しかしながら、JWT自体の仕組みや、コードベースでの実装方法は複雑で、開発者にとっての導入障壁が高いという課題がありました。

この問題を解決するために、近年GUIベースのAPI開発プラットフォーム「Apidog」が注目されています。Apidogを利用することで、いくつかのクリック操作だけで直感的にJWTの発行や検証を試すことができます。

button

Postmanの基本的な使い方を(初心者向け)チュートリアル

Postmanの基本的な使い方を(初心者向け)

Postmanは、APIテストなどを行うための定番のツールになります。API戦略を実施する場合は、Postmanを利用することで、その効率性を大幅に向上できます。そこで、本文では、基本的なPostmanの使い方を皆さんに紹介して、Postmanを全く使ったことがないユーザーでも、本文の内容を参照して、Postmanを使いこなすことができると思います。

中村 拓也

4月 8, 2025

Clineで無料体験!Gemini 2.5 Proが今すぐ試せる方法チュートリアル

Clineで無料体験!Gemini 2.5 Proが今すぐ試せる方法

Clineを通じてGoogleのGemini 2.5 Proに無料でアクセスできることで、生産性を向上させ、複雑な問題解決に役立つ強力なAIアシスタントを提供。制約はあるものの、無料の利点は大きい。

中村 拓也

3月 28, 2025

Cloudflareで実現する高性能MCPサーバー構築ガイド:7ステップ完全解説チュートリアル

Cloudflareで実現する高性能MCPサーバー構築ガイド:7ステップ完全解説

このガイドに従えば、Cloudflareで高性能なMCPサーバーをデプロイし、拡張性、安全性、パフォーマンスを向上させることができます。すべての工程を詳細に解説します。

中村 拓也

3月 24, 2025