返回 Bug 清单
BUG-0369project-29中已修复backend-logic
OAuth state 参数被丢弃 —— 多产品共用回调后永远跳默认站点
发现:2026-10-01验证:2026-10-09置信度:90%
症状
多产品统一登录后,从产品 B 发起登录却被送回产品 A——state 在授权请求里明明带上了,回调侧没人读。
根因
OAuth state 的标准职责是 CSRF 防护,本项目还承担『回跳意图』;发起侧写了 state,回调侧解析逻辑缺失——参数链路一端写一端丢,且两端分属不同提交,没有端到端测试兜住。
修复方案
1) 回调侧解析 state 中的 intent 并按它决定跳转目标,缺失时才用默认值;
2) state 结构化(base64 JSON:csrf + intent),签名或存服务端会话防篡改;
3) 每个产品发起端 × 回调端做参数回传的端到端用例,一条都不能少。
检测命令
grep -rn 'state' <发起端与回调端> 核对写入/读取是否成对;日志记录回调收到的 state 原文错误签名
回调处理器忽略 state 携带的 intent → 无论从哪个产品发起登录都跳 /cognx技术信息
来源项目
project-29
标签
oauth-state, csrf, intent-routing, parameter-pipeline, e2e