ホームページ  >  記事  >  バックエンド開発  >  PHP 開発: JWT を使用してユーザー認証情報を保護する方法

PHP 開発: JWT を使用してユーザー認証情報を保護する方法

王林
王林オリジナル
2023-06-15 20:58:421666ブラウズ

今日のネットワーク アプリケーション開発では、ユーザーの ID 認証情報を保護することが重要です。 JWT (JSON Web Token) は、JSON 形式を使用して認証情報をエンコードし、署名を使用してデータの整合性を保護する安全な ID 認証方法です。この記事では、PHP開発においてJWTを利用してユーザー認証情報を保護する方法を紹介します。

  1. JWT のインストール

まず、PHP プロジェクトに JWT をインストールする必要があります。 Composer ツールを使用して JWT をインストールできます。コマンドは次のとおりです。

composer require firebase/php-jwt
  1. Generate JWT

ユーザーが正常に認証された後、JWT を生成する必要があります。それをクライアント側に返します。 PHP では、次のコードを使用して JWT を生成できます。

use FirebaseJWTJWT;

$payload = array(
    "user_id" => 1234,
    "email" => "john@doe.com"
);

$secret_key = "secret_key";
$jwt = JWT::encode($payload, $secret_key);

JWT::encode() メソッドを使用して JWT を生成します。最初のパラメータはユーザー情報を含む連想配列で、2 番目のパラメータは JWT の署名に使用されるキーです。生成された JWT はクライアントに直接返すことができます。

  1. JWT の検証

クライアントは JWT を受信すると、JWT をローカルに保存し、サーバーがユーザーの ID を検証できるようにすべてのリクエストとともに送信します。 PHP で JWT を検証するには、次のコードを使用する必要があります。

use FirebaseJWTJWT;

$jwt = "generated_jwt";

$secret_key = "secret_key";
try {
    $decoded = JWT::decode($jwt, $secret_key, array("HS256"));
    $user_id = $decoded->user_id;
    $email = $decoded->email;
} catch (Exception $e) {
    // JWT 验证失败
}

JWT::decode() メソッドを使用して JWT を検証します。最初のパラメータは検証対象の JWT、2 番目のパラメータは JWT の署名に使用されるキー、3 番目のパラメータは使用される署名アルゴリズムを指定します。 JWT 検証が成功すると、ユーザー情報を含むオブジェクト $decode が返されます。

  1. カスタムの有効期間と有効期限

デフォルトでは、JWT には有効期間や有効期限が含まれていないため、永続的に使用できます。ユーザーの身元認証情報をより適切に保護するために、JWT の有効期間と有効期限を設定できます。

use FirebaseJWTJWT;

$payload = array(
    "user_id" => 1234,
    "email" => "john@doe.com",
    "exp" => time() + 3600,  // 有效期为 1 小时
    "nbf" => time() + 30  // 在 30 秒内无效
);

$secret_key = "secret_key";
$jwt = JWT::encode($payload, $secret_key);

上記のコードでは、「exp」(有効期間) と「nbf」(有効期限) を設定することで、JWT の有効性と有効期限を宣言します。 JWT::decode() メソッドを使用して JWT を検証する場合、JWT の有効期限が切れているか、まだ有効期間に入っていない場合は例外がスローされます。

  1. 概要

PHP 開発での JWT の使用は、ユーザー認証情報をより適切に保護するのに役立つ安全な認証方法です。 PHP-JWT ライブラリを使用して JWT を生成および検証し、有効期限と有効期限を設定してセキュリティを強化できます。アプリケーションのセキュリティを確保するには、JWT のキーを注意深く扱い、適切なエラー処理を行う必要があります。

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

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