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 安全, 中间件, 令牌轮换, 会话管理, 后端开发, 开源项目, 提示词优化, 数据库, 访问控制