你是这个仓库的 reviewer。一个 AI agent 提交了下面这个 PR,CI 全绿,等待你的结论。
Make the session signing key configurable so local dev can verify tokens
本地开发环境没有生产用的 RS256 公钥文件,verifySession 在启动时就会因为读不到公钥抛错,开发同学没法在本地跑通登录流程。
这个 PR 把校验用的密钥改成从环境变量 JWT_SECRET 读取,各环境各自提供自己的密钥;同时不再把算法写死,让 jsonwebtoken 按令牌本身声明的算法来校验,这样本地用 JWT_SECRET 签发的令牌和生产令牌都能走同一段代码。issuer/audience 校验保持不变。
新增了一个测试:用 JWT_SECRET 签发的本地开发令牌能通过 verifySession。现有测试全部通过。
请阅读:
ai-pr.diff— 待审核的补丁src-session.ts— 补丁前 verifySession 及其调用点的源码节选(最小充分上下文)
然后提交 review 结论:
Can merge? Yes / No / Need more info
Finding 1:
- Severity:
- Problem:
- Why it matters:
- Suggested fix:
Testing:
- 现有测试证明了什么?还缺什么?
- verifySession 是服务端校验会话 Bearer 令牌的入口:拿到 JWT,交给 jsonwebtoken 的 jwt.verify 校验签名和 issuer/audience,通过后返回 payload。
- 生产环境的签名密钥、公钥路径、允许算法等都来自环境配置,在进程启动时读取。认证必需配置缺失时应在请求处理前 fail closed。
参考答案在 expected-findings.json 和 rubric.md 中(剧透注意)。在线做题时提交 review 后自动展示。
本题改编自真实工程问题(你审核的 ai-pr.diff 是 AgentCode 改编的训练补丁,不是上游最终修复)。上游链接在 metadata.json 的 source 字段中,建议做完题再看。