becomer fc90e21920
ci/woodpecker/tag/build Pipeline was successful
hfnu 登录补齐缺失步骤:验证码预校验、密码 base64、lt 固定值
用真实待适配账号(2606221072)测试发现,原实现虽已实现验证码 OCR,
但提交方式与页面 JS 的真实流程不符,导致服务端静默退回登录页
且不给任何错误提示——正确密码与错误密码表现完全一致,无从排查。

从登录页 JS 中发现真实流程是三段式:
  1. AJAX POST /sso/code/validationCode.jsp {validateCode}
     仅当返回 {"success":true} 才继续提交;
  2. 密码经 base64 编码后填入 password 字段(base.encode(password));
  3. lt 替换为页面固定值 keys="e1s1",而非登录页上的 lt。

改动:
- 新增第 1 步:带 ;jsessionid 与 X-Requested-With 调用 validationCode.jsp,
  失败即明确提示"验证码识别结果不被接受",不再发出注定失败的提交
- 密码改为 base64 编码提交
- lt 改用固定常量 hfnuLtKey="e1s1"
- 验证码 OCR 结果只保留数字并截取前 4 位(该校为 4 位纯数字;
  实测 OCR 偶发返回 5 位,会被 validationCode.jsp 判为错误)
- 登录失败时记录响应体片段,便于后续排查

验证效果:修复后正确密码与错误密码可被明确区分——
正确密码认证通过并返回 COMSYSUIATGC=TGT-...,错误密码返回
"用户名或密码输入错误"。

遗留:认证通过后仍卡在校方 amp-auth-adapter 单点跳转拒绝
("你不具有该URL的访问权限,系统拒绝单点登录跳转")。
已实测 10+ 个候选 service:仅 http://ehall.hfnu.edu.cn/amp-auth-adapter/loginSuccess
为"已注册"状态,其余(含 https 版本、campusphere 各入口)均为"未注册";
换另一账号(2510421079)结果相同,判断为校方侧全局限制,
非本服务代码可解决。
2026-10-19 18:53:21 +08:00
S
Description
No description provided
6.6 MiB
Languages
Go 58.2%
Vue 35.3%
TypeScript 4.1%
CSS 1.5%
JavaScript 0.6%
Other 0.2%