返回 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