返回 Bug 清单
BUG-0366project-29中已修复config
PKCE 校验对 confidential client 一刀切 hard fail —— 老客户端全部被挡
发现:2026-10-01验证:2026-10-27置信度:90%
症状
升级 PKCE 强制后,存量未改造的 confidential 客户端登录全部失败——服务端升级一次性打挂所有未同步升级的调用方。
根因
PKCE 对 public client 是安全必需,对 confidential client 是可选增强;一刀切强制没有考虑存量客户端的迁移窗口。
修复方案
1) 分级策略:public client 强制 PKCE(缺失即拒);confidential client 缺 code_verifier 时记 warning 放行,设迁移截止期;
2) 服务端每次放宽都要有日志计数——迁移进度可观测,截止期到再翻转为强制;
3) 安全策略变更先查『存量调用方画像』再定生效方式。
检测命令
token endpoint 日志统计 code_verifier 缺失率与 client 类型分布错误签名
token endpoint 强制校验 code_verifier;confidential client(有 client_secret)不带 PKCE 时授权链路直接失败技术信息
来源项目
project-29
标签
oauth2, pkce, backward-compatibility, migration-window, public-client