关津 · 接手简报

2026-11-02 | 团队已建、环境已通、基线已读完 | 等你两件确认 + 三件拍板

一句话

把「登录」的复杂度从 100 个业务系统各做一遍,收拢到平台做一遍;平台只查验身份,不做授权。greenfield,只借鉴旧 SpIAM 的设计、不继承代码。

100目标接入业务系统
千万级C 端用户 / 开放自注册
200 QPS峰值并发登录
三级+密评合规目标

边界(不做什么)

三条主干

1 登录 + 阶梯补步

/authorize → Flow Descriptor → 挑战/校验 → /authorize/submit;档位不够时返回 ACR_INSUFFICIENT + 待补步骤,只补缺、不重输。

2 注册 / 绑定 / 找回

注册即登录;标识符绑定与换绑;找回成功即撤销全部会话并通知所有标识符。

3 管理面 + Agent 面

管理面按三员(系统/安全/审计员)鉴权;Agent 面用每系统独立 secret 的 HMAC-SM3;数据面转发带 SM2 签名的 X-GuanJin-Assertion,SDK 验签后必须剥离。

7 席分工

最容易被误解的 3 处

读基线挖出的 9 处文档自相矛盾 会直接卡住开发

1 HMAC 签名规范对不上 阻断 SDK

索引 §4.2-26 与接口 §5.3.1 的 canonical 串不一致(有无 sorted_query、顺序不同、还用 SHA256 与全链路国密冲突);path 含不含 base-url、GET 空 body、nonce 形态都没定 → SDK 与平台互验必失败。

2 枚举取值三轨 写库即被拒

challenges.purpose:DDL 写 login|bind|recover|stepup,接口写 login|step_up|enroll|recover|verify_identifier,页面又写 register/enroll。

3 口径双轨

分页 limit+cursor vs page/page_size;错误码两套;端点 66 vs 65;失败计数权威源写 Redis,接口又写 challenges 表。

4 存储 / 密钥 / 审计链

DEFAULT uuidv7() vs 禁默认值;主密钥直接做 HMAC key vs 强制 HKDF 派生;audit_logs 没分区却要求按月 DROP PARTITION,哈希链整段删除后无锚点却要展示「完整性状态」;agent_hmac_secret、is_confidential 两列在 clients 表不存在。

5 阶梯认证的中间态无处存

14 张表没有 flows 表,而要求多副本无状态、Redis 只许放限流 → 已达成 amr / flow_id / 过期时间没地方落。

6 SDK 配置项

契约里编号缺 #7/#16/#17、实际 29 行却声称 32 项;jwks-uri 默认指向不存在的端点(应为标准路径);enabled=false 实为「跳过验签」暗开关 —— 而基线明令不存在这种开关。

7 前端渲染

FlowStep 没有 challenge_id / purpose / 可贡献档位;所需因子全被禁用时只有「未满足」、没有不可达终态 → 页面会死循环重渲染。

8 验收与合规口径

基线没有验收/测试文档;密评等级三方打架(索引「上限二级」/ 数据模型引三级条款 / 移交文档列为待裁决),且「不启用国密 TLS 就过不了」与「v1 只预留」对立。

9 三章缺失

被引用的「数据模型 §6」「页面规格 §7」「接口清单 §6」都不存在 → 分页、签名算法等关键处「见 §x」全部断链。

要你拍板的

A 这 9 处矛盾怎么处置 最要紧

二选一:① 逐条由你裁定;② 授权团队按「索引 §2 优先 + 端点契约优先」的既定裁决原则自行收口,只把裁定结果报你(推荐②,否则每条都要等你)。

B 迁移脚本怎么跑

基线要「发布流程里一次性 Job 跑」,你既有规范是「应用启动自动跑」。团队暂按基线(不写自动迁移)。

C 密码产品路径

纯软件国密库能不能被密评采信?若要密码机/密码卡,部署形态和成本都会变。

D 新仓名与旧仓归宿

新仓用现成的 GuanJin(目前空仓)还是要改名?旧 SpIAM 继续维护还是冻结归档?另:12 份基线文档要不要入库。