a4sex / jwt-manager
jwt-manager for FreedomSex project
v1.1.1
2023-09-15 12:09 UTC
Requires
- php: ^8.2
- firebase/php-jwt: ^6.0
- symfony/deprecation-contracts: *
Requires (Dev)
- phpunit/phpunit: ^9.5
Suggests
This package is auto-updated.
Last update: 2025-09-09 05:59:11 UTC
README
PHP библиотека для работы с JSON Web Tokens в проектах FreedomSex
Описание
JWT Manager — это современная PHP библиотека для создания и валидации JWT токенов с поддержкой стандартов RFC 7517 (JWK) и RFC 7519 (JWT). Библиотека предоставляет высокоуровневый API для безопасной работы с токенами в enterprise-приложениях.
Возможности
- ✅ Полная поддержка JWT стандартов (RFC 7517, RFC 7519)
- ✅ Управление JSON Web Keys (JWK) через JWKManager
- ✅ Гибкая структура payload с поддержкой пользовательских данных
- ✅ Интеграция с Symfony Security
- ✅ Поддержка PHP 8.2+
- ✅ Полное тестовое покрытие
Содержание
Установка
composer require a4sex/jwt-manager
Быстрый старт
Генерация ключей
# Создание директории для ключей
mkdir -p config/keys
cd config/keys
# Генерация RSA ключей
openssl genrsa -out private.key 2048
openssl rsa -in private.key -pubout -out public.key
Использование
use A4Sex\Services\JWTManager;
// Создание менеджера
$manager = new JWTManager(
'/path/to/private.key',
'/path/to/public.key',
3600, // TTL в секундах
'your-app-issuer'
);
// Генерация токена
$token = $manager->create($user);
// Валидация токена
$payload = $manager->load($token);
Подробное использование
Базовый пример
<?php
use A4Sex\Services\JWTManager;
$manager = new JWTManager('/path/to/private.key', '/path/to/public.key', 3600);
class User {
public function getId() { return 123; }
public function getRoles() { return ['ROLE_USER']; }
}
$user = new User();
$token = $manager->create($user);
$payload = $manager->load($token);
echo $payload->uid; // 123
echo $payload->roles; // ['ROLE_USER']
Интеграция с Symfony
# config/services.yaml
services:
A4Sex\Services\JWTManager:
arguments:
- '%jwt_private_key_path%'
- '%jwt_public_key_path%'
- '%jwt_ttl%'
- '%jwt_issuer%'
Документация
Основные разделы
Конфигурация
Требования
- PHP: 8.2 или выше
- Composer: для управления зависимостями
- OpenSSL: для генерации RSA ключей
Зависимости
{
"php": "^8.2",
"firebase/php-jwt": "^6.0",
"symfony/deprecation-contracts": "*"
}
Переменные окружения
# JWT ключи
JWT_PRIVATE_KEY_PATH=/secure/path/to/private.key
JWT_PUBLIC_KEY_PATH=/secure/path/to/public.key
JWT_TTL=3600
JWT_ISSUER=my-app-production
Вклад
Мы приветствуем вклад в развитие проекта! Пожалуйста, ознакомьтесь с нашими правилами:
- Следуйте стандартам PSR-12 для PHP кода
- Добавляйте тесты для новых функций
- Обновляйте документацию при внесении изменений
- Используйте conventional commits для сообщений
Разработка
# Клонирование репозитория
git clone https://github.com/a4sex/jwt-manager.git
cd jwt-manager
# Установка зависимостей
composer install
# Запуск тестов
./vendor/bin/phpunit
# Линтинг Markdown (локально)
composer lint:md
# Авто‑исправление Markdown
composer fix:md
Безопасность
Рекомендации по безопасности
- Хранение ключей: Никогда не коммитите ключи в систему контроля версий
- Права доступа: Ограничьте доступ к файлам ключей (600)
- Ротация ключей: Регулярно обновляйте ключи (рекомендуется каждые 3-6 месяцев)
- HTTPS: Всегда используйте HTTPS для передачи токенов
Лицензия
GPL-3.0-or-later — см. LICENSE
Благодарности
- Firebase PHP-JWT — базовая библиотека JWT
- Symfony — компоненты и лучшие практики
Поддержка
- 🐛 Issues: Создавайте issues для отчетов об ошибках
- 💬 Discussions: Обсуждайте идеи и задавайте вопросы