vujicicdragan/secure-php-jwt-auth-api-public

GitHub: vujicicdragan/secure-php-jwt-auth-api-public

一个生产级PHP JWT认证核心,提供refresh token轮换和数据库级token失效控制,用于构建安全的API认证系统。

Stars: 0 | Forks: 0

# 安全 PHP JWT Auth API 为真实后端应用设计的生产级 PHP 认证核心。 Secure PHP JWT Auth API 提供了一个结构化的后端认证系统,采用简洁的模块化架构构建。 它实现了短期 access token、refresh token 轮换、基于数据库的 token 失效以及基于 middleware 的请求保护。 该项目旨在作为一个可复用的认证核心,可集成到 SaaS 平台、管理面板、移动端后端或任何 PHP API 环境中。 * 网站: * 在线 API 演示: # 核心功能 • JWT Access Token 认证 • Refresh Token 轮换 • 基于数据库的 token 失效 • 集中式登出控制 • 基于 middleware 的授权 • Rate limiting(限速)保护 • CORS middleware 支持 • 清晰的路由架构 • 环境配置系统 • 模块化服务层 # 架构概览 系统采用分层架构组织,以保持职责清晰分离。 ``` Client ↓ Router ↓ Middleware ↓ Controller ↓ Service ↓ Repository ↓ Database ``` 这种结构确保了认证逻辑在不同应用间保持可复用性和可扩展性。 # 项目结构 ``` src/ Controllers/ AuthController.php UserController.php HealthController.php Core/ Router.php Database.php Response.php Env.php Validator.php ApiException.php Http/ Request.php Middleware/ AuthMiddleware.php CorsMiddleware.php RateLimitMiddleware.php Repositories/ UserRepository.php RefreshTokenRepository.php Services/ JwtService.php ``` 附加目录: ``` database/ database schema storage/ token storage / runtime data tools/ CLI utilities vendor/ composer dependencies ``` # 认证流程 认证模型遵循现代 token 安全实践。 ### 登录 1. 用户发送凭证 2. 服务器验证凭证 3. 服务器生成 • 短期 access token • 长期 refresh token 4. Refresh token 存储在数据库中 5. Access token 返回给客户端 ### Token 刷新 当 access token 过期时: 1. 客户端发送 refresh token 2. 服务器在数据库中验证 token 3. 旧的 refresh token 失效 4. 签发新的 refresh token 5. 生成新的 access token 此过程可防止 token 重放攻击。 ### 登出 登出操作使数据库中的 refresh token 失效。 这将立即撤销后续的会话续期。 # 安全功能 ### Refresh Token 轮换 每次刷新操作都会替换之前的 refresh token。 优点: • 防止重放攻击 • 保护被盗 token • 改进会话控制 ### 数据库 Token 失效 Refresh token 在数据库中存储并验证。 优势: • 集中登出控制 • 会话撤销 • 被盗 token 保护 ### Rate Limiting(限速) Rate limiting middleware 可防止暴力破解攻击。 典型保护场景: • 登录尝试 • Token 刷新滥用 • API 泛洪攻击 ### CORS 保护 CORS middleware 确保安全的跨域 API 使用。 # 环境配置 环境变量通过内部 `Env` 系统加载。 示例 `.env`: ``` DB_HOST=localhost DB_NAME=auth_db DB_USER=root DB_PASS=password JWT_SECRET=your_secret_key JWT_EXPIRE=900 REFRESH_EXPIRE=604800 ``` # 安装 ### 1 克隆仓库 ``` git clone https://github.com/vujicicdragan/secure-php-jwt-auth-api-public.git ``` ### 2 安装依赖 ``` composer install ``` ### 3 配置环境 复制示例环境文件。 ``` cp .env.example .env ``` 编辑数据库凭证和 JWT 配置。 ### 4 导入数据库 从以下位置导入 schema: ``` database/ ``` ### 5 启动服务器 使用 PHP 内置服务器: ``` php -S localhost:8000 ``` # API 端点 ### 认证 ``` POST /api/v1/auth/register POST /api/v1/auth/login POST /api/v1/auth/refresh POST /api/v1/auth/logout ``` ### 用户 ``` GET /api/v1/auth/me ``` 需要有效的 access token。 ### 健康检查 ``` GET /api/v1/health ``` 用于服务监控。 # 示例登录请求 ``` POST /api/v1/auth/login Content-Type: application/json { "email": "user@example.com", "password": "password" } ``` 响应: ``` { "access_token": "JWT_TOKEN", "refresh_token": "REFRESH_TOKEN" } ``` # CLI 工具 仓库中包含用于开发的 CLI 实用工具。 ``` tools/cli.php tools/seed_user.php ``` 示例: ``` php tools/seed_user.php ``` 创建一个用于开发的测试用户。 # 使用场景 Secure PHP JWT Auth API 可作为以下场景的认证核心: • SaaS 平台 • 管理仪表盘 • 移动应用后端 • REST API 服务 • 微服务架构 # 开发理念 本项目专注于: • 安全优先的认证设计 • 最小化依赖 • 模块化架构 • 后端可复用性 该系统旨在作为实际生产应用的基础,而非教程项目。 # 许可证 MIT License # 作者 SecureCoreAuth
标签:API 安全, CORS, DNS解析, JWT, MVC 架构, OpenVAS, PHP, RESTful API, SaaS, Streamlit, Web 安全, 中间件, 令牌轮换, 会话管理, 后端开发, 开源项目, 提示词优化, 数据库, 访问控制