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

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *