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.

v1.2.1 2023-11-19 21:46 UTC

This package is auto-updated.

Last update: 2024-04-25 22:22:27 UTC


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