ホームページ  >  記事  >  バックエンド開発  >  PHP 入門: JWT トークン

PHP 入門: JWT トークン

PHPz
PHPzオリジナル
2023-05-21 08:07:351414ブラウズ

最新の Web アプリケーションが進化し続けるにつれて、認証とセキュリティの重要性がますます高まっています。一般的な方法の 1 つは、認証に JWT (JSON Web トークン) トークンを使用することです。この記事では、PHP を使用して JWT トークンを実装するための基本とテクニックを紹介します。

  1. JWT トークンの概要

JWT は、ネットワーク上で JSON オブジェクトを送信することにより、クレームを安全かつ効率的に送信する方法を定義するオープン スタンダードです。 JWT は、ヘッダー、ペイロード、署名の 3 つの部分で構成されます。ヘッダーにはトークンのタイプと使用されるハッシュ アルゴリズムが含まれ、ペイロードには認証と認可の情報が含まれ、署名はヘッダーとペイロードのハッシュとキーを組み合わせた文字列です。

JWT はステートレスなサーバー側認証をサポートしており、サーバー セッションや Cookie を使用する必要がありません。また、標準化された JSON 形式であるため、拡張も簡単です。

  1. PHP 実装プロセス

PHP 言語には、JWT タグを簡単に生成および検証できるクラスが多数用意されています。 PHP で JWT を作成するにはライブラリを使用する必要があります。ここでは GitHub で無料で入手できる php-jwt ライブラリを使用します。

php-jwt ライブラリをインストールします:
composer require firebase/php-jwt

JWT トークンの作成は簡単です。サンプル コードは次のとおりです:

require_once('vendor/autoload.php');
use FirebaseJWTJWT;

$key = "example_key";
$payload = array(
    "iss" => "http://example.org",
    "aud" => "http://example.com",
    "iat" => 1356999524,
    "nbf" => 1357000000
);

$jwt = JWT::encode($payload, $key);
print_r($jwt);

Inこの例では、キー example_key と、トークン iss の発行者やトークン aud を使用できる受信者などのいくつかの手がかりを使用します。また、JWT のライフ サイクルも定義します。つまり、トークン発行時刻 iat 後、現在の時点 nbf までに JWT を使用できるようにする必要があります。

JWT の最終結果は、AAA.BBB.CCC の形式の長い文字列です。 AAA はヘッダー、BBB はペイロード、CCC はキーによって生成される署名です。

JWT トークンの検証には同じキーを使用する必要があります。サンプル コードは次のとおりです。

require_once('vendor/autoload.php');
use FirebaseJWTJWT;

$key = "example_key";
$jwt = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vZXhhbXBsZS5vcmciLCJhdWQiOiJodHRwOi8vZXhhbXBsZS5jb20iLCJpYXQiOjEzNTY5OTk1MjQsIm5iZiI6MTM1NzAwMDAwMCwiZXhwIjoxMzU3MDAwMDAwfQ.kn4N5lvvvdQhL7rEixJOaYWKQZ3GzrCc8REIzc2Kw8c";

$decoded = JWT::decode($jwt, $key, array('HS256'));

print_r($decoded);

トークンが正常にデコードできた場合、コードは同じ連想配列を出力します。ペイロードと同様に。認証が失敗すると、例外がスローされます。

  1. 結論

この記事では、PHP を使用して JWT トークンを実装する方法について説明します。 JWT は、アプリケーションの安全性を高め、従来のセッション メカニズムの使用を回避できる、シンプルですが便利なツールです。この記事が JWT と PHP アプリケーションでの JWT の使用方法をより深く理解するのに役立つことを願っています。

以上がPHP 入門: JWT トークンの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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