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-приложении.