ホームページ >バックエンド開発 >PHPチュートリアル >PHP で API 認証に JSON Web トークンを使用する方法
JSON Web トークン (JWT) は、Web アプリケーションで情報を転送する安全な方法です。これは、すべての関係者間で通信するためのコンパクトで自己完結型の安全な方法を定義するオープン標準 (RFC 7519) です。 JSON オブジェクトの形式。 JWT の使用は、認証に API を使用する場合に特に重要です。 PHP では、いくつかの簡単な手順で JWT 認証を実装できます。
まず、Composer を通じて JWT ライブラリをインストールする必要があります。次のコードをcomposer.jsonファイルに追加します:
{ "require": { "firebase/php-jwt": "3.0.*" } }
または、次のコマンドを使用してターミナルにインストールします:
composer require firebase/php-jwt
進行中 API認証の前に、JWTを作成する必要があります。 PHP では、次のコードを使用して JWT を作成できます:
use FirebaseJWTJWT; $key = "example_key"; $payload = array( "iss" => "http://example.org", "aud" => "http://example.com", "iat" => 1356999524, "nbf" => 1357000000 ); $jwt = JWT::encode($payload, $key);
この例では、$key という名前のキーを作成し、$payload 配列を JWT のペイロードとして使用します。ペイロードには、API 認証で使用される「iss」(発行者)、「aud」(受信者)、「iat」(発行時刻)、「nbf」(有効期間) などの基本情報が含まれています。
JWT を検証するプロセスは、JWT を作成するプロセスの逆です。秘密キーと元の JWT を使用して JWT をデコードし、その中に含まれる情報を検証する必要があります。 PHP では、次のコードを使用して JWT を検証できます:
use FirebaseJWTJWT; $key = "example_key"; $jwt = $_POST["jwt"]; try { $decoded = JWT::decode($jwt, $key, array('HS256')); return $decoded; } catch (Exception $e) { return false; }
ここでは、$_POST["jwt"] を使用して生の JWT をサーバーに送信します。次に、キーと暗号化ルールをパラメータとして JWT::decode() メソッドに渡します。検証が成功すると、このメソッドは JWT ペイロード データを返します。
PHP では、JWT をクライアントに送信し、クライアントがすべてのリクエストで JWT を認証資格情報として送信できるようにします。次の例では、JWT を $_SESSION に保存し、クライアントに送り返します。
use FirebaseJWTJWT; $key = "example_key"; $payload = array( "iss" => "http://example.org", "aud" => "http://example.com", "iat" => 1356999524, "nbf" => 1357000000 ); $jwt = JWT::encode($payload, $key); $_SESSION["jwt"] = $jwt; header('Content-Type: application/json'); echo json_encode(array("jwt" => $jwt));
ここでは、$_SESSION["jwt"] を使用して JWT を保存し、JSON として送信します。オブジェクトが送信されます。クライアントに戻ります。クライアントは JWT をローカルに保存し、認証のために API に送信できます。
概要
PHP で API 認証に JWT を使用するプロセスは非常に簡単で、上記の手順に従うだけです。認証に JWT を使用すると、セキュリティが向上するだけでなく、リクエストごとに認証が必要なくなるため、アプリケーションのパフォーマンスも向上します。ただし、ハッカーによってキーが紛失または盗難された場合、アプリケーションに致命的な影響を与える可能性があるため、キーは必ず安全な場所に保管してください。
以上がPHP で API 認証に JSON Web トークンを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。