Веб-токены PHP JSON (JWT) Firebase: методы и примеры

Вот несколько методов PHP для работы с веб-токенами JSON (JWT) и Firebase:

  1. Создание токена 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');
  2. Проверка токена 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
    }
  3. Проверка токена 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);
    }
  4. Разбор и доступ к утверждениям токена 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