localzet / lwt
Localzet LWT is a library for working with Localzet Web Tokens, which are based on JWT (JSON Web Tokens). It provides functionality for creating, verifying, and handling tokens using modern technologies and standards.
Requires
- php: ^8.2
- ext-mbstring: *
- ext-openssl: *
Suggests
- ext-sodium: For EdDSA
README
Класс LWT
предоставляет методы для кодирования и декодирования LWT-токенов. Он использует алгоритмы шифрования AES и RSA для шифрования данных в токене.
Использование
Кодирование LWT-токена
Чтобы кодировать LWT-токен, используйте метод encode()
класса LWT
. Этот метод принимает данные, закрытый ключ и алгоритм шифрования (по умолчанию ES512
) в качестве аргументов.
Если закрытый ключ и алгоритм шифрования не указаны, используются значения, определенные в классе.
$data = ['username' => 'localzet', 'email' => 'creator@localzet.com']; $tokenPrivateKey = '...'; // Закрытый ключ для шифрования токена (рекомендую ECDSA) $tokenEncryption = 'HS256'; // Алгоритм шифрования (по умолчанию ES512) $encodedToken = LWT::encode($data, $tokenPrivateKey, $tokenEncryption);
Декодирование LWT-токена
Чтобы декодировать LWT-токен и получить расшифрованные данные, используйте метод decode()
класса LWT
. Этот метод принимает закодированный токен, публичный ключ и алгоритм шифрования в качестве аргументов.
Если публичный ключ и алгоритм шифрования не указаны, используются значения, определенные в классе.
$encodedToken = '...'; // Закодированный LWT-токен $tokenPublicKey = '...'; // Публичный ключ для шифрования токена (рекомендую ECDSA) $tokenEncryption = 'HS256'; // Алгоритм шифрования (по умолчанию ES512) $decodedData = LWT::decode($encodedToken, $tokenPublicKey, $tokenEncryption);
Кодирование данных в LWT-токене
Чтобы закодировать данные в LWT-токене и дополнительно обезопасить их, используйте методы encode()
и decode()
класса LWT
с дополнительными аргументами.
Эти методы принимают дополнительные ключи для шифрования данных в полезной нагрузке комбинацией ассиметричного (RSA) и симметричного (AES-256-CBC) алгоритмов.
Если дополнительные ключи для шифрования данных не указаны, данные загружаются в полезную нагрузку в неизменном виде.
$encodedToken = '...'; // Закодированный LWT-токен $tokenPublicKey = '...'; // Публичный ключ для шифрования токена (рекомендую ECDSA) $tokenEncryption = 'HS256'; // Алгоритм шифрования (по умолчанию ES512) $decodedData = LWT::decode($encodedToken, $tokenPublicKey, $tokenEncryption);
Настройка
Класс LWT
имеет несколько статических свойств и констант, которые можно настроить для изменения поведения кодирования и декодирования токенов.
Настройка JWT-совместимого алгоритма шифрования LWT-токена
Чтобы изменить алгоритм шифрования для сигнатуры, измените значение константы LWT_ENCRYPTION
.
Возможные значения:
HMAC-based: HS256, HS384, HS512
RSA-based: RS256, RS384, RS512
ECDSA-based: ES256, ES384, ES512
// Изменение алгоритма шифрования для сигнатуры LWT-токена (рекомендую ES512) LWT::LWT_ENCRYPTION = 'ES512';
Настройка закрытого и публичного ключей LWT-токена
Чтобы изменить закрытый или публичный ключи для кодирования или декодирования LWT-токена, измените значения статических свойств $LWT_PRIVATE_KEY
и $LWT_PUBLIC_KEY
соответственно.
// Изменение закрытого ключа для кодирования LWT-токена LWT::$LWT_PRIVATE_KEY = '...'; // Закрытый ключ в формате PEM (рекомендую ECDSA) // Изменение публичного ключа для декодирования LWT-токена LWT::$LWT_PUBLIC_KEY = '...'; // Публичный ключ в формате PEM (рекомендую ECDSA)
Настройка закрытого и публичного ключей данных
Чтобы изменить закрытый или публичный ключи для шифрования или расшифровки данных, измените значения статических свойств $DATA_PRIVATE_KEY
и $DATA_PUBLIC_KEY
соответственно.
// Изменение закрытого ключа для шифрования данных LWT::$DATA_PRIVATE_KEY = '...'; // Закрытый ключ RSA // Изменение публичного ключа для расшифровки данных LWT::$DATA_PUBLIC_KEY = '...'; // Публичный ключ RSA