Вот несколько методов PHP для работы с веб-токенами JSON (JWT) и Firebase:
-
Создание токена JWT с использованием PHP-библиотеки Firebase:
use Firebase\JWT\JWT; $privateKey = 'your_private_key'; $payload = array( "sub" => "1234567890", "name" => "John Doe", "iat" => 1516239022 ); $jwt = JWT::encode($payload, $privateKey, 'RS256');
-
Проверка токена JWT с использованием PHP-библиотеки Firebase:
use Firebase\JWT\JWT; $publicKey = 'your_public_key'; $jwt = 'your_encoded_jwt'; try { $decoded = JWT::decode($jwt, $publicKey, array('RS256')); // Token is valid // Access token claims can be accessed using $decoded->sub, $decoded->name, etc. } catch (\Firebase\JWT\ExpiredException $e) { // Token has expired } catch (\Firebase\JWT\SignatureInvalidException $e) { // Token signature is invalid } catch (\Firebase\JWT\BeforeValidException $e) { // Token is not yet valid } catch (\Exception $e) { // Other error occurred }
-
Проверка токена JWT без использования библиотеки:
function verifyJwt($jwt, $publicKey) { $segments = explode('.', $jwt); if (count($segments) !== 3) { return false; } list($header, $payload, $signature) = $segments; $decodedSignature = base64_decode(str_replace(['-', '_'], ['+', '/'], $signature)); $decodedPublicKey = openssl_get_publickey($publicKey); return openssl_verify($header . '.' . $payload, $decodedSignature, $decodedPublicKey, OPENSSL_ALGO_SHA256); }
-
Разбор и доступ к утверждениям токена JWT:
$jwt = 'your_encoded_jwt'; $decoded = JWT::decode($jwt, $publicKey, array('RS256')); $sub = $decoded->sub; $name = $decoded->name; $iat = $decoded->iat; // Access the claims as needed