JWT (JSON Web Token) — это открытый стандарт (RFC 7519) для создания токенов доступа, которые передают информацию между сторонами в виде JSON-объекта. Токен подписывается цифровой подписью (например, HMAC или RSA), что гарантирует его подлинность и целостность данных.
JWT состоит из трех частей, разделенных точками:
Пример структуры:
Header.Payload.Signature
Authorization: Bearer <token>
).Генерация JWT (с использованием библиотеки firebase/php-jwt
):
<?php
use Firebase\JWT\JWT;
$key = "ваш_секретный_ключ";
$payload = [
"user_id" => 123,
"exp" => time() + 3600 // Токен действителен 1 час
];
$jwt = JWT::encode($payload, $key, 'HS256');
echo $jwt;
?>
Проверка JWT на сервере:
<?php
try {
$decoded = JWT::decode($jwt, $key, ['HS256']);
print_r($decoded);
} catch (Exception $e) {
http_response_code(401);
echo "Ошибка аутентификации: " . $e->getMessage();
}
?>
JWT — это удобный и безопасный способ аутентификации, особенно для RESTful API и SPA. Важно правильно настраивать срок жизни токена и использовать HTTPS для защиты передаваемых данных.