Skip to content

12.5 JWT 认证:验证 IDE 连接合法性

路径docs/part12-bridge/05-jwt-auth.md
系列:Claude Code 完全指南 V2 · 第 12 篇


学习目标

完成本节学习后,你应该能够:

  1. 说明 Bridge 使用 JWT 的目的:声明式凭证无会话服务器(视架构)下的 快速验签
  2. 列举 必须校验的字段:expnbfissaud、签名算法 禁止 none
  3. 区分 对称(HS256)非对称(RS256) 在本机 Bridge 中的取舍。
  4. 描述 密钥轮换时钟偏移 对认证稳定性的影响。

生活类比:游乐园手带

JWT 像 一次性手带:门口盖章(签名)后,园内各摊位(bridgeMain 各方法只看手带不必再问你身份证——但手带 有过期时间,而且 伪造要成本


JWT 在 Bridge 中的位置


Claims 教学表

Claim含义校验
iss签发者白名单
aud受众固定 claude-bridge
sub主体用户或设备 id
exp过期必须
nbf生效时间可选
jti令牌 id防重放(若配合存储)

源码片段:验签伪代码

typescript
import { createRemoteJWKSet, jwtVerify } from 'jose';

type VerifyResult = { ok: true; claims: Claims } | { ok: false; reason: string };

async function verifyJwt(token: string, expectedAud: string): Promise<VerifyResult> {
  try {
    const { payload } = await jwtVerify(token, jwksOrSecret, {
      audience: expectedAud,
      issuer: ALLOWED_ISS,
      algorithms: ['RS256', 'ES256'],
    });
    return { ok: true, claims: payload as Claims };
  } catch (e) {
    return { ok: false, reason: String(e) };
  }
}

禁止接受 alg: none 或未声明算法的 kid 混淆 攻击面——使用成熟库并 固定算法白名单


对称 vs 非对称

方案场景备注
HS256本机共享密钥轮换需 同步两端
RS256/ES256IDE 只持公钥私钥集中在签发服务

本机 stdio Bridge 可能用 短期 HS256 简化;企业部署倾向 非对称 + JWKS


密钥轮换

实践说明
kid选择正确公钥
重叠窗口旧 JWT 仍可验证
紧急吊销黑名单极短 TTL

时钟偏移

问题缓解
IDE 快 5 分钟nbf 误判
NTP 未同步运维层面修

与传输安全关系

传输JWT 是否足够
TLS防窃听;JWT 防 伪造
明文 TCP必须 TLS;否则 JWT 泄露即被盗用
本机 UDS依赖 OS 权限 + JWT 纵深防御

错误映射到 RPC

失败codemessage
过期40101token expired
签名校验失败40102invalid signature
aud 不匹配40103invalid audience

小结

JWT 让 Bridge 在 多客户端多会话 场景下仍能 快速拒绝非法连接。正确性来自 严格验签 + claims + 轮换 + 传输层配合。下一节 12.6 sessionRunner


自测

  1. 为何 仅 Base64 解码 payload 不够
  2. jti 在无服务器状态下如何实现吊销?

威胁建模简表

威胁缓解
令牌窃取短 TTL、绑定机器指纹(可选)
重放jti + 短期缓存拒绝
算法降级固定 algorithms

术语

英文中文
claim声明/载荷字段
JWKSJSON Web Key Set

与 IDE 集成

扩展启动时向 本地服务 换 JWT,或 用户登录 OAuth 后注入——见 12.8


实战题

设计 开发模式 CLAUDE_BRIDGE_INSECURE=1 的风险与 编译期剔除 策略。


伪代码:clockTolerance

typescript
await jwtVerify(token, key, {
  audience: AUD,
  clockTolerance: '60s',
});

日志纪律

永不 console.log(token);出错只打印 jti 前缀hash


合规注意

若 JWT 含 PII,日志与崩溃上报需 脱敏


结语

JWT 不是「万能钥匙」,而是 时间盒凭证:短、可验、可轮换,才配得上 Bridge 这种高频通道

本项目仅用于教育学习目的。Claude Code 源码版权归 Anthropic, PBC 所有。