本次更新合计72项,包含功能性更新40项,安全和性能更新32项
功能性更新
统一认证能力
- 新增 OpenID Connect 统一认证服务,可用于第三方平台的统一登录入口。
- 新增 OIDC Discovery、公钥、授权、令牌、用户信息等标准端点。
- 新增对外认证服务域名配置,支持后台管理域名与公开认证域名分离部署。
- 新增 Web 服务器转发部署支持,适配 Apache 与 Nginx 场景。
通用通行认证管理
- 新增“通用通行认证”管理模块。
- 支持认证应用的创建、编辑、启用、停用和删除。
- 支持 OIDC 客户端密钥生成、重置、删除。
- 客户端密钥创建或重置后通过页内弹窗一次性展示。
- 授权范围支持手动输入与常用范围下拉勾选。
Passkey 登录
- 新增 Passkey 登录能力。
- 支持用户绑定、管理和删除多个 Passkey。
- 只要用户存在至少一个 Passkey,即可使用 Passkey 登录。
- Passkey 登录复用统一登录页的 ID、用户名或邮箱输入框。
- 超级管理员和管理员也支持 Passkey 登录。
- 超级管理员可重置成员 Passkey 设置。
后台与权限管理
- 新增超级管理员后台。
- 新增成员管理、部门管理、认证记录、事件记录和通用通行认证管理。
- 新增管理员权限模型。
- 支持为管理员分配成员管理、部门管理、日志查看、事件记录、认证密钥管理等权限。
- 支持按管理范围限制管理员可操作的成员和部门。
- 被授权管理员可进入通用通行认证管理界面,并看到与超级管理员一致的认证应用管理功能。
成员、部门与记录
- 新增成员添加、修改、停用、重置 OTP、重置密码、重置 Passkey 功能。
- 新增部门树管理。
- 新增成员部门分配。
- 新增旧数据部门信息扫描与回填。
- 新增事件记录能力。
- 新增按成员、部门和事件类型查看认证记录。
页面与交互体验
- 后台登录页升级为统一登录入口。
- 优化个人资料页文案和管理入口命名,统一使用“通用通行证”相关表述。
- 删除适用于全站的CloudFlare人机验证,改为特定操作触发多数情况下无需认为干涉的全自动人机验证。
- 优化登录、验证、注册、Passkey 登录页面的 Cloudflare Turnstile 交互。
- Turnstile 统一为点击操作按钮后显示并自动执行。
- 优化移动端资料预览页顶部操作栏显示。
- 页内弹窗新增动画过渡。
- 修改密码流程新增二次确认输入。
- 登录失败后保留已输入的账号和密码,仅清空 OTP。
项目结构与部署
- 重构项目目录结构,将 Python、PHP、MySQL 文件分别归类到独立目录。
- Python 与 PHP 运行时配置拆分,分别使用各自目录下的 .env。
- 新增数据库自动迁移能力,支持旧数据库自动补齐新版所需表和字段。
- 更新项目说明文档,补充统一认证、Passkey、权限模型、数据库迁移和部署说明。
安全和性能更新
登录与会话安全
- 统一后台登录失败提示,不再暴露具体失败原因。
- 注销流程由 GET 链接改为 POST + CSRF 校验。
- 关键 POST 操作增加 CSRF 校验。
- 后台接口由旧的账号密码式校验升级为登录令牌校验。
- 登录、注册、验证、OIDC 授权和 Passkey 登录统一接入 Turnstile 操作环境检测。
权限与越权防护
- 强化管理员权限校验,普通管理员只能执行已授权操作。
- 普通管理员不能创建管理员或超级管理员。
- 普通管理员不能越权修改角色、权限、管理范围和账号状态。
- 部门树保存和成员部门分配均按权限与管理范围校验。
- 修复成员创建、成员修改、部门管理等权限与后端校验不一致的问题。
Passkey 安全
- 新增 WebAuthn sign_count 校验,用于检测认证器克隆风险。
- 当认证器返回非零计数器时,新计数必须大于数据库旧计数,否则拒绝登录。
- 修复 Passkey 缺少克隆检测的问题。
OIDC 安全
- OIDC 客户端密钥仅保存哈希,不保存明文。
- 客户端密钥仅在创建或重置后显示一次。
- OIDC 授权码具备过期时间并限制一次性使用。
- OIDC 访问令牌仅保存哈希。
- 删除认证应用时自动清理相关授权码、访问令牌和登录记录。
- 修复 OIDC 公开地址访问异常的问题。
- 修复 OIDC 授权范围选择显示异常的问题。
数据库与兼容性
- 优化数据库初始化顺序,先创建基础表再执行字段迁移。
- 修复空数据库冷启动时因表不存在导致迁移失败的问题。
- 修复旧数据库缺少字段时无法自动升级的问题。
- 保留历史字段并通过自动迁移平滑升级。
- 优化日志和事件数据结构,支持部门路径、事件标记和创建人记录。
稳定性与体验修复
- 修复 Turnstile 自动验证码异常导致无法正常登录的问题。
- 修复中文页面、网站标题和邮件发件人乱码问题。
- 修复移动端注销按钮错位问题。
- 修复登录成功后显示多余成功提示的问题。
- 修复修改密码缺少二次确认的问题。
- 修复登录失败后清空账号和密码的问题。
- 优化 PHP 与 Python 配置隔离,降低误配置和信息泄露风险。
发表回复