JWT (JSON Web Token)
JWT (JSON Web Token) — это стандартизированный способ передачи безопасной информации между двумя сторонами в виде JSON объекта. Для работы с JWT в PHP существует популярная библиотека firebase/php-jwt
, которую мы будем использовать в примерах ниже.
Установка библиотеки
Для начала установите библиотеку через Composer:
composer require firebase/php-jwt
Генерация токена (encode)
Вот пример простого сценария для генерации JWT-токена:
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Firebase\JWT\JWT;
// Настройки ключа шифрования
$key = 'your_secret_key'; // Замените на ваш секретный ключ
$payload = [
'iss' => 'example.com', // issuer
'aud' => 'client.example.com', // audience
'iat' => time(), // issued at
'exp' => time() + 3600, // expiration time (через один час)
];
// Генерируем JWT-токен
$jwt = JWT::encode($payload, $key);
echo 'Generated JWT token: ' . $jwt;
?>
Проверка валидности токена (decode)
Чтобы проверить и декодировать полученный JWT-токен, используйте следующий код:
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Firebase\JWT\JWT;
// Ваш секретный ключ должен совпадать с тем, который использовался при создании токена
$key = 'your_secret_key';
try {
// Получаем JWT токен (например, из заголовков HTTP-запроса)
$token = $_GET['token'];
// Декодируем и проверяем токен
$decoded = JWT::decode($token, $key, ['HS256']);
echo 'Token is valid!';
print_r($decoded); // Выведет содержимое payload-а
} catch(Exception $e) {
echo 'Error decoding token: ', $e->getMessage();
}
?>
Примечания:
issuer (iss)
— источник выдачи токена.audience (aud)
— адресат токена.issued at (iat)
— метка времени, когда токен был выдан.expiration time (exp)
— срок истечения токена (UNIX timestamp).
Таким образом, используя библиотеку Firebase\JWT
, легко интегрировать работу с JWT в вашем PHP-приложении.