execution-log.md 7.1 KB

执行日志 — 客户端凭据与公共客户端协议加固

时间线

时间 阶段 事件 备注
2026-07-27 Research 复核细化整改清单和当前源码 确认浏览器 Secret、数据库明文比较和弱种子仍存在;未输出值
2026-07-27 Proposal/HARD-GATE 创建 Spec、Tasks、Test Spec 和执行日志 用户已明确授权按分阶段思路继续实施
2026-07-27 Baseline System 插件现有测试 8 条在 Mockito agent 和未安装 crypto Core 类处失败,未进入业务断言
2026-07-27 Red/Green 新增 Codec、Policy、Service 条件升级测试 Red 为 Codec 不存在;Green 10 条通过
2026-07-27 Backend System Reactor package JDK 17,25 模块全部成功,测试按增量矩阵单独执行
2026-07-27 Frontend Admin UI production build Node 20.19.0,8725 模块,1分28秒;仅既有警告
2026-07-27 Static XML/SQL/Secret/Wrapper 扫描 Mapper XML 合法;弱种子、浏览器 Secret、SysClient Controller Wrapper、Flyway placeholder 均为零
2026-07-27 Review/阶段二 独立代码质量复审 首次 FAIL:迁移会覆盖已关闭 legacy-read,缺少 CAS 更新失败测试和最新证据
2026-07-27 Fix 修复两项阶段二阻塞 JSON 属性仅缺失时补默认值;新增条件升级返回 0 时不清缓存测试
2026-07-27 Retest System 4 个目标测试类 20 条通过,0 失败、0 错误、0 跳过;BUILD SUCCESS
2026-07-27 Review/阶段二终审 独立 Reviewer 基于最新工作树复审 FAIL:1 Critical、1 Important、2 Minor;登录操作日志和缓存旧值回填为阻塞
2026-07-27 Final fix 硬排除凭据入口日志;认证配置数据库直读;删除全部浏览器 Secret 环境声明;补合同测试 不改变浏览器会话密钥协议,不连接数据库或 Redis
2026-07-27 Final retest System 5 个目标测试类、System Reactor、Admin UI build 24/24;Reactor 退出码 0;8727 modules 构建成功
2026-07-27 Review/阶段二第三次 独立 Reviewer 基于最新工作树复审 FAIL:2 Critical、2 Important、2 Minor;Secret 并发恢复、Token 日志和 Mapper JSON 映射为阻塞
2026-07-27 Review fix 3 空 Secret 零写、Secret CAS、Token 日志/广播清理、在线下线日志硬排除、Mapper resultMap completed
2026-07-27 Review fix 3 retest System 5 个目标测试类、System Reactor、XML/静态扫描 26/26;25 模块构建成功;扫描无命中
2026-07-27 Review fix 4 修复 2 Critical + 2 Important /auth/online/** 强制登录/显式权限/租户边界;删除 /test;响应改会话 ID;客户端单 SQL 双旧值 CAS;删除 Token 原文日志
2026-07-27 Review fix 4 retest 7 个目标测试类及目标静态检查 36/36,0 failure/error/skip;Vue ESLint、Mapper XML、Flyway、环境/Token/响应/格式扫描通过
2026-07-27 Latest Code Quality Review 独立 Reviewer 复核在线会话边界 FAIL:1 Critical

技术决策

决策 选择 放弃的方案 原因
浏览器客户端 client_auth_method=none 在浏览器继续保存固定 Secret 分发式客户端无法保密
机密客户端存储 {bcrypt} 摘要 可逆加密、裸 SHA-256 不需要取回原文,BCrypt 抵抗弱值枚举
存量兼容 成功验证后条件升级 启动即批量改写、永久明文双读 避免无凭据迁移和并发覆盖
查询实现 Mapper XML Service/Controller Wrapper 满足 DataScope 和项目 SQL 规范

踩坑记录

问题 原因 解决方案 沉淀?
待执行

验证记录

时间 范围 命令 结果 警告/跳过
2026-07-27 Review fix 格式/迁移合同 git diff --check;扫描 JSON_CONTAINS_PATH 门禁 通过 未执行真实 Flyway/MySQL
2026-07-27 System 目标测试 mvn -pl forge-framework/forge-plugin-parent/forge-plugin-system test -Dforge.compiler.skip=false -Dforge.tests.skip=false -Dforge.test.groups= -Dtest=ClientSecretCodecTest,ClientCredentialPolicyTest,ClientServiceImplCredentialTest,SystemAuthServiceImplClientCredentialTest 20 条通过,BUILD SUCCESS 首次 Reactor 运行被 forge-starter-datascope 缺少 JUnit 依赖阻断;模块定向测试成功
2026-07-27 阶段二最终修复测试 compiler:testCompile 后执行 5 个目标类 surefire:test 24 条通过,0 failure/error/skip 单模块首次受 .m2 旧 core 快照阻断;先执行 System -am package -DskipTests 后有效运行
2026-07-27 阶段二第三次修复测试 System -am package -DskipTests;5 个目标类模块测试;xmllint 和 Token/环境静态扫描 25 模块构建成功;26 条通过;XML 合法且扫描无命中 真实 MySQL、Redis 和登录/轮换 E2E 保留为部署门禁
2026-07-27 本轮首次目标测试 System 单模块目标测试 未进入测试 默认 JDK 8 不支持 Java 17;切换本机 JDK 17
2026-07-27 本轮依赖对齐 Core 单模块 install -DskipTests;Core+System Reactor Core 编译成功;安装被沙箱禁止写 ~/.m2,Core+System 被共享 Excel 新常量阻断 改为只选 Core、Excel、System 三模块,不执行 install 或全量构建
2026-07-27 本轮目标测试首次执行 Core、Excel、System 三模块;7 个目标测试类 32 条通过,3 条在线服务测试因 Mockito agent 无法自附加报环境错误 将新增测试改用 JDK 动态代理,不降低断言
2026-07-27 本轮目标测试最终执行 mvn -pl forge-starter-core,forge-starter-excel,forge-plugin-system test,限定 7 个测试类 36 条通过,0 failure/error/skip,BUILD SUCCESS Reactor 仅 3 个模块;有既有 deprecated/commons-logging 警告
2026-07-27 在线 SQL 合同加固复测 同一三模块 Reactor,限定 OnlineUserSecurityContractTest 5 条通过,0 failure/error/skip,BUILD SUCCESS 列集合显式断言不含 token_value
2026-07-27 本轮目标静态检查 Vue 单文件 ESLint、两份 Mapper XML、Flyway 唯一版本/placeholder、环境 Secret、Token 日志/响应、尾随空白和 diff check 全部通过 未启动任何服务

Spec-Code 偏差记录

偏差点 Spec 预期 实际情况 处理方式
待执行

代码质量备忘

  • 任何扫描只能报告文件、行号和是否命中,禁止打印 Secret 值。
  • 当前 crypto 变更未提交;后续验证需区分既有 crypto 改动与本变更证据。