Web アプリケーションの開発に伴い、API 認証は最新の Web アプリケーションに不可欠な部分になりました。 JSON Web Token (JWT) は、ユーザーを認証し、シングル サインオンを実装するための安全で信頼性の高い方法を提供する認証と認可のオープン スタンダードです。この記事では、PHP で API 認証に JWT を使用する方法を説明します。
JWT とは何ですか?
JSON Web Token (JWT) は、JSON 形式に基づく標準であり、インターネット上で情報を安全に送信するために使用できます。 JWT は通常、ヘッダー、ペイロード、署名の 3 つの部分で構成されます。
JWT ワークフロー
ユーザーがログインすると、サーバーは JWT をユーザーに割り当てます。この JWT はクライアントに送信され、クライアントの Cookie またはローカル ストレージに保存されます。ユーザーが保護された API にアクセスしたい場合、クライアントは JWT をサーバーに送り返します。サーバーは JWT の署名をチェックし、ペイロード内のデータを検証して、ユーザーが API にアクセスする権限を持っていることを確認します。 JWT が検証に合格すると、サーバーはユーザーに API へのアクセスを許可します。
PHP を使用した JWT 認証の実装
PHP では、いくつかの一般的なオープン ソース ライブラリを使用して JWT 認証を実装できます。この記事では、JWT を作成および検証するためのシンプルな API を提供する Firebase の JWT ライブラリを使用します。これは簡単な例です:
composer require firebase/php-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');
以下のコードは、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;
JWT を作成した後、それをクライアントに送信し、Cookie またはローカル ストレージに保存できます。
// Set JWT as a cookie setcookie('token', $jwt, time()+3600, '/');
サーバー側と同様のコードを使用して、クライアントから送信された 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 サイトの他の関連記事を参照してください。