Skip to content

Repository files navigation

WebAuth Verification Platform

现代化 Web 验证与卡密授权系统,提供用户自助中心、开发者控制台、管理员后台、客户端 HMAC 验证 API 和内置 API 文档站点。

核心改造

  • 全面移除旧机器人通道,统一使用自写 Web + JWT 身份认证。
  • User/Admin/Developer 均采用 access token + refresh token 轮换。
  • 用户自助敏感接口必须携带 Bearer Token,不能再仅凭用户名调用。
  • 客户端 SDK 通道 /public/* 使用 HMAC-SHA256、Nonce 和时间窗防篡改/防重放。
  • 生产环境限制 CORS、启用安全响应头、强制配置 SECRET_KEY
  • 数据模型增加关键索引和唯一约束,提升查询与一致性。
  • 内置 /docs 文档网站和 /api/openapi.json OpenAPI 规格。

快速开始

pip install -r requirements.txt
python seed.py
python app.py

访问:

  • 首页:http://127.0.0.1:5000/
  • API 文档:http://127.0.0.1:5000/docs
  • 管理员:http://127.0.0.1:5000/admin/login
  • 开发者:http://127.0.0.1:5000/dev/login
  • 用户中心:http://127.0.0.1:5000/user/dashboard

测试账号由 seed.py 创建:

角色 账号 密码
管理员 admin admin12345
开发者 dev_001 dev12345
用户 testuser1 / testuser2 / testuser3 test123456

新密码策略要求 8 位以上;测试数据仍可登录,注册和改密会按新规则校验。

环境变量

变量 默认值 说明
FLASK_ENV development production 时启用生产校验
SECRET_KEY dev-only-change-me JWT/Flask 密钥;生产必须设置
DATABASE_URL sqlite:///data.db SQLAlchemy 数据库连接
CORS_ORIGINS http://127.0.0.1:5000,http://localhost:5000 允许的前端来源,逗号分隔
JWT_ACCESS_EXPIRE 900 access token 秒数
JWT_REFRESH_EXPIRE 604800 refresh token 秒数
HMAC_TIME_WINDOW 30 HMAC 请求时间窗
HMAC_NONCE_EXPIRE 300 Nonce 防重放缓存时间
RATE_LIMIT_ENABLED true 是否启用接口限流
RATE_LIMIT_DEFAULT_REQUESTS / RATE_LIMIT_DEFAULT_WINDOW 300 / 60 普通接口限流次数/窗口秒数
RATE_LIMIT_AUTH_REQUESTS / RATE_LIMIT_AUTH_WINDOW 20 / 300 登录和 refresh 限流次数/窗口秒数
RATE_LIMIT_2FA_REQUESTS / RATE_LIMIT_2FA_WINDOW 8 / 300 2FA 验证限流次数/窗口秒数
RATE_LIMIT_REGISTRATION_REQUESTS / RATE_LIMIT_REGISTRATION_WINDOW 5 / 3600 注册发码限流次数/窗口秒数
RATE_LIMIT_VERIFY_CODE_REQUESTS / RATE_LIMIT_VERIFY_CODE_WINDOW 8 / 900 注册验证码确认限流次数/窗口秒数
RATE_LIMIT_PUBLIC_LOGIN_REQUESTS / RATE_LIMIT_PUBLIC_LOGIN_WINDOW 60 / 60 Public 登录限流次数/窗口秒数
RATE_LIMIT_PUBLIC_HEARTBEAT_REQUESTS / RATE_LIMIT_PUBLIC_HEARTBEAT_WINDOW 240 / 60 Public 心跳限流次数/窗口秒数
ACCOUNT_LOCK_MAX_ATTEMPTS 5 单账号失败尝试达到该次数后临时管控
ACCOUNT_LOCK_WINDOW_SECONDS 900 失败尝试统计窗口秒数
ACCOUNT_LOCK_DURATION_SECONDS 900 临时管控持续秒数
MAIL_SERVER smtp.qq.com SMTP 服务器
MAIL_PORT 587 SMTP 端口
MAIL_USERNAME SMTP 用户
MAIL_PASSWORD SMTP 授权码
MAIL_FROM_NAME WebAuth 邮件发件显示名

API 分组

Client API /public/*

这些接口面向客户端程序,需要 HMAC 请求头:

  • POST /public/login:客户端登录与 HWID 校验
  • POST /public/heartbeat:心跳保活

请求头:

X-App-ID: <app_id>
X-Timestamp: <unix_seconds>
X-Nonce: <random_nonce>
X-Signature: HMAC_SHA256("timestamp:nonce:raw_body", app_secret)

User API /user/*

  • POST /user/web_login:用户登录,返回 token pair
  • POST /user/refresh:刷新 token
  • POST /user/logout:登出并撤销 token
  • GET /user/info:当前用户信息,需要 Bearer
  • POST /user/pay_key:兑换卡密,需要 Bearer
  • POST /user/reset_password:修改密码,需要 Bearer
  • POST /user/reset_hwid:重置 HWID,需要 Bearer
  • POST /user/register / POST /user/confirm_register:注册流程

Developer API /dev/*

  • POST /dev/login / POST /dev/refresh / POST /dev/logout
  • GET /dev/get_app
  • POST /dev/create_app
  • POST /dev/create_key
  • GET /dev/get_key_list
  • GET /dev/groups
  • POST /dev/create_group
  • POST /dev/delete_group
  • POST /dev/check_user
  • POST /dev/ban / POST /dev/unban

Admin API /admin/*

  • POST /admin/login / POST /admin/refresh / POST /admin/logout
  • GET /admin/get_stats
  • GET /admin/get_all_users
  • POST /admin/check_user
  • POST /admin/ban / POST /admin/unban
  • POST /admin/reset_hwid
  • POST /admin/set_vip_level
  • GET /admin/get_all_apps
  • POST /admin/delete_app
  • POST /admin/create_key
  • GET /admin/get_key_list
  • GET /admin/get_online_user
  • GET /admin/get_devs
  • POST /admin/add_dev / POST /admin/delete_dev
  • GET /admin/get_audit_logs

生产部署建议

  1. 设置强随机 SECRET_KEY,例如 openssl rand -hex 32
  2. 使用 HTTPS 反代,并在 FLASK_ENV=production 下运行。
  3. 设置明确的 CORS_ORIGINS,不要使用通配符。
  4. 使用 PostgreSQL/MySQL 等生产数据库并配置 DATABASE_URL
  5. 配置 SMTP,生产环境不会在邮件失败时生成可用测试验证码。
  6. instance/data.db 纳入备份与访问控制。

验证

python -m compileall .
python seed.py
python app.py
python test_client.py

About

现代化 Web 验证与卡密授权系统,包含用户中心、开发者控制台、管理员后台、客户端 HMAC 验证 API、2FA 双重验证、App Secret 管理、HWID 绑定/重置和内置 API 文档。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages