2026年8月2日
2026年8月2日
WordPressのJWTトークン認証を実装する方法
はじめに
JWT(JSON Web Token)認証は、Webアプリケーション間でのセキュアな通信を可能にする標準的な方法です。WordPressサイトでAPIベースのアクセスやモバイルアプリとの連携を行う際には、JWTトークン認証が有効な選択肢となります。
症状・背景
このテーマが必要になる主な場面:
- APIエンドポイントをセキュアに保護する必要がある
- モバイルアプリからWordPressサイトのデータを取得したい
- 単一サインオン(SSO)機能を実装したい
- 既存ユーザーに対してJWTトークンでアクセス権限を与える
手順・設定方法
ステップ1: WordPressプラグイン「JWT Authentication for WP REST API」のインストールと有効化
# WordPress管理画面からプラグイン検索窓に"jwt authentication"を入力します。
# "JWT Authentication for WP REST API"という名前のプラグインを探し、インストールして有効化します。
# ターミナルまたはFTPクライアントを使用して、wp-content/pluginsディレクトリへ移動
cd wp-content/plugins
# プラグインのソースコードを取得する(必要に応じて)
git clone https://github.com/trostj/wp-api-jwt-auth.git
# WordPress管理画面からプラグインの有効化を行います。
ステップ2: カスタムJWTトークン生成設定
# ファイルエディタを使用して、wp-content/plugins/jwt-auth/class-wp-api-jwt-auth-plugin.phpを編集します。
# JWTトークンの有効期限を30日間に設定する場合
define( 'JWT_AUTH_EXPIRATION', 2592000 );
# ハッシュアルゴリズムを変更する(デフォルトはHS256)
define( 'JWT_AUTH_SECRET_KEY', 'your_secret_key_here' );
ステップ3: APIエンドポイントのセキュア化
# WordPressのREST APIエンドポイントに対して認証トークンを必要とする設定を行います。
# .htaccessファイルに以下のように記述します。
RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
ステップ4: ユーザー認証のテストとトラブルシュート
# カスタムAPIエンドポイントを作成し、JWTトークンを用いてアクセスします。
curl --request GET \
--url https://example.com/wp-json/wp/v2/posts \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c'
注意事項
- JWT認証は、適切なセキュリティ対策が施されている場合にのみ推奨されます。
- トークンのシークレットキーを厳密に管理し、定期的に更新すること。
- APIエンドポイントへのアクセス制限を設けることで追加の安全性を確保します。
- パフォーマンス上の観点から、JWTトークンの有効期限は短めに設定することが望ましい。
まとめ
1. JWT認証とは: セキュアなトークンベース認証方式で、APIエンドポイントへのアクセスを保護します。
2. プラグインの選択: "JWT Authentication for WP REST API"を使用して簡単にJWT認証を実装できます。
3. カスタマイズ: JWTトークン生成設定を調整し、セキュリティとパフォーマンスを最適化します。
4. テストとトラブルシュート: カスタムAPIエンドポイントを作成して、JWT認証が正しく機能していることを確認します。
5. セキュリティ対策: トークンのシークレットキーを厳重に管理し、定期的に更新することで追加の保護を得ます。
関連記事: