ホームページ  >  記事  >  バックエンド開発  >  PHP での API 認証に JWT を使用する方法

PHP での API 認証に JWT を使用する方法

PHPz
PHPzオリジナル
2023-06-17 22:04:281130ブラウズ

Web アプリケーションの開発に伴い、API 認証は最新の Web アプリケーションに不可欠な部分になりました。 JSON Web Token (JWT) は、ユーザーを認証し、シングル サインオンを実装するための安全で信頼性の高い方法を提供する認証と認可のオープン スタンダードです。この記事では、PHP で API 認証に JWT を使用する方法を説明します。

JWT とは何ですか?

JSON Web Token (JWT) は、JSON 形式に基づく標準であり、インターネット上で情報を安全に送信するために使用できます。 JWT は通常、ヘッダー、ペイロード、署名の 3 つの部分で構成されます。

  • ヘッダー: HMAC SHA256 や RSA など、JWT で使用されるアルゴリズムが含まれます。
  • ペイロード: ユーザー、権限、またはその他の関連情報に関するデータが含まれます。
  • 署名: トークンの信頼性と完全性を検証するために使用されます。

JWT ワークフロー

ユーザーがログインすると、サーバーは JWT をユーザーに割り当てます。この JWT はクライアントに送信され、クライアントの Cookie またはローカル ストレージに保存されます。ユーザーが保護された API にアクセスしたい場合、クライアントは JWT をサーバーに送り返します。サーバーは JWT の署名をチェックし、ペイロード内のデータを検証して、ユーザーが API にアクセスする権限を持っていることを確認します。 JWT が検証に合格すると、サーバーはユーザーに API へのアクセスを許可します。

PHP を使用した JWT 認証の実装

PHP では、いくつかの一般的なオープン ソース ライブラリを使用して JWT 認証を実装できます。この記事では、JWT を作成および検証するためのシンプルな API を提供する Firebase の JWT ライブラリを使用します。これは簡単な例です:

  1. Firebase JWT ライブラリをインストールします:

composer require firebase/php-jwt

  1. JWT を作成します:

次のコードは、署名とカスタム ペイロード データを含む JWT を作成します。

use FirebaseJWTJWT;

// Set the payload data (custom data)
$payload = [
    "user_id" => 1,
    "username" => "john.doe",
];
 
// Generate JWT using secret key
$jwt = JWT::encode($payload, 'secret_key');
  1. JWT の検証:

以下のコードは、JWT の署名を検証し、ペイロード データが有効かどうかを確認します。

use FirebaseJWTJWT;

// Verify JWT using secret key
try {
    $decoded = JWT::decode($jwt, 'secret_key', array('HS256'));
} catch (Exception $e) {
    // Handle invalid JWT
}
 
// Access the payload data
$user_id = $decoded->user_id;
$username = $decoded->username;
  1. JWT をクライアントに送信する:

JWT を作成した後、それをクライアントに送信し、Cookie またはローカル ストレージに保存できます。

// Set JWT as a cookie
setcookie('token', $jwt, time()+3600, '/');
  1. クライアントから送信された JWT を確認する:

サーバー側と同様のコードを使用して、クライアントから送信された JWT を確認できます。

use FirebaseJWTJWT;

// Get JWT from cookie or local storage
$jwt = $_COOKIE['token'];
 
// Verify JWT using secret key
try {
    $decoded = JWT::decode($jwt, 'secret_key', array('HS256'));
} catch (Exception $e) {
    // Handle invalid JWT
}
 
// Access the payload data
$user_id = $decoded->user_id;
$username = $decoded->username;

概要

JWT は、最新の Web アプリケーションに適した安全で信頼性の高い認証メカニズムです。 JWT 認証は、PHP と Firebase JWT ライブラリを使用して簡単に実装できます。 API 認証を実装する場合は、JWT のみを安全な場所に保存し、保護された送信には HTTPS を使用してください。

以上がPHP での API 認証に JWT を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。