v0.2.0
里程碑发布:项目更名为 dsh-auth-gateway,并落地认证流程升级、安全评审修复与两处重构。
包含 @adra2n 更新的 OTP 功能。
改名(全量)
- 包 / 插件注册名 / bundle id /
cordis.patch.yml→dsh-auth-gateway - bin 命令:
dsh-auth-gateway-reset/dsh-auth-gateway-uninstall - GitHub 仓库同步改名:
xbzbing/dsh-auth-gateway(旧 URL 自动重定向)
认证流程(替代旧 setup 页面,/login/setup 已彻底移除)
- 首次部署自动生成初始密码(控制台打印、一次性)→ 强制引导设置个人密码 → 重新登录
- 未完成引导的会话:页面 302
/onboarding、API 401onboarding-required、WebSocket 拒绝
安全修复(评审六项 Required 全部落实)
- WebSocket 升级补上 onboarding 门禁(原可绕过读取事件流)
- 丢失认证器可用备份代码登录(登录页切换按钮 +
/login/auth服务端支持;单次使用、共享限流与锁定) otpVerifyPage的${digits}字面量插值修复;客户端禁用 OTP 位数动态化- 失败计数 / OTP 窗口 Map 过期清理(
#pruneRateState) otp.json损坏 fail-loud(不再静默降级 2FA)/login/change错误旧密码计入共享锁定
重构
lib/gateway-otp.js:OTP 路由 handler 自lib/gateway.js拆分(1124 → 828 行)lib/page-shell.js:login / onboarding / otp 三页面的 CSS、HTML 骨架、脚本头去重(渲染结构逐字节等价)
文档与测试
- README 默认中文 +
README.en.md英文版;SECURITY / DEPLOYMENT / TESTING / DEVELOPMENT 重写;docs/PROPOSAL.md移除;截图 6 张重新生成 - 测试 93/93(新增 onboarding 门禁、备份码登录、fail-loud、Map 清理、改密锁定回归)
- 实机验证:verify.sh 17/17、e2e 14/14、备份码登录链路(登录 200 → 重放 401)