Review 007:会话令牌校验:让签名密钥支持按环境配置

July 9, 2026 · View on GitHub

你是这个仓库的 reviewer。一个 AI agent 提交了下面这个 PR,CI 全绿,等待你的结论。

PR 描述(作者提供)

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.jsonrubric.md 中(剧透注意)。在线做题时提交 review 后自动展示。

题目来源

本题改编自真实工程问题(你审核的 ai-pr.diff 是 AgentCode 改编的训练补丁,不是上游最终修复)。上游链接在 metadata.jsonsource 字段中,建议做完题再看。