Skip to content

Latest commit

 

History

History
89 lines (59 loc) · 5.82 KB

README.md

File metadata and controls

89 lines (59 loc) · 5.82 KB

LWT - Localzet Web Tokens (JWT-based)

Класс 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