编号:B-12 严重级:medium 工作线:broker(internal/broker) + 身份、群、在线与认证基础(internal/app/identity、group、presence、internal/auth) 来源:审查 I-11 依赖:无 被依赖:无
采用审查 I-11 的方案,并吸收审查 P-22 第三点:
OnConnect
cl.Closed()
internal/broker/hooks.go、authn.go;internal/auth/pool.go、phc.go。
internal/broker/hooks.go
authn.go
internal/auth/pool.go
phc.go
internal/auth/locks.go
以下是本次复审各区审查报告的原文段落。A、M、I、P、S 开头的是原始发现编号(A 管理后台与网页、M 消息核心、I 身份认证群在线、P 传输平台部署、S SDK)。解决方案以本 issue 上方的"结论与统一方案"为准;原文里的方案与之不一致时,按上方执行。
context.Background()
decodePHC
broker/hooks.go:70
auth/pool.go:59-75
broker/authn.go:198-215
auth/phc.go:61-90
broker/hooks.go
broker/authn.go
auth/pool.go
auth/phc.go
复审基线:main 4059a15(2026-09-30)。编号说明、各工作线的合并顺序、共享文件归属见总览 #7。
4059a15
已合入 origin/main 0c9b459。落地提交 91e887b fix: 完成 broker 复审 B-03 至 B-12 (#19)。
0c9b459
91e887b
No dependencies set.
The note is not visible to the blocked user.
编号:B-12 严重级:medium 工作线:broker(internal/broker) + 身份、群、在线与认证基础(internal/app/identity、group、presence、internal/auth) 来源:审查 I-11
依赖:无 被依赖:无
结论与统一方案
采用审查 I-11 的方案,并吸收审查 P-22 第三点:
OnConnect的认证用 30 秒超时的 ctx,超时按内部故障处理(不回 CONNACK,客户端按网络故障重连);校验通过后若cl.Closed()已断开就不轮换令牌。改动文件
internal/broker/hooks.go、authn.go;internal/auth/pool.go、phc.go。与其他问题的交互 / 冲突说明
internal/auth/locks.go由 U-03、U-04 修改,本条不碰。OnConnect与 B-01、B-05 相邻,按 broker 线顺序合入。验收与测试
问题明细(各区审查原文,证据含文件与行号)
[I-11] argon2 池排队无上限、MQTT 登录无超时;并发尝试能绕过锁定;PHC 参数写死
context.Background()做认证,排队中的校验永远不会取消。SDK 30 秒后已经放弃重连,服务器还在为它算 argon2,校验成功后甚至会轮换令牌。认证中的连接数不受任何限制。decodePHC要求 m/t/p 必须等于当前常量。以后一旦调高参数,所有旧哈希都会被当作内部故障,客户端无限重连。DEVELOPMENT 12 要求参数随哈希一起存,校验成功后重新哈希。broker/hooks.go:70;auth/pool.go:59-75;broker/authn.go:198-215;auth/phc.go:61-90。cl.Closed(),已断开就不轮换令牌。broker/hooks.go、broker/authn.go、auth/pool.go、auth/phc.go。复审基线:main
4059a15(2026-09-30)。编号说明、各工作线的合并顺序、共享文件归属见总览 #7。已合入 origin/main
0c9b459。落地提交91e887bfix: 完成 broker 复审 B-03 至 B-12 (#19)。