Skip to content

auth-token-simulation ​

1. 实验目标 ​

用纯 Java CLI 仿真 Token 鉴权核心机制(对应 docs/06-backend-data/06):

  • JWT 三段式结构:Header / Payload 只是 Base64(防篡改不防读取)
  • 双 Token:access_token 短命 + refresh_token 长命
  • 并发 401 排队:多个请求同时 401 只刷新一次,其余复用新 token 重放

2. 工程要点 ​

  • 手写 Base64.getUrlEncoder() 构造真实 JWT,运行时可解码看 Payload 明文
  • 并发 401 模拟:synchronized + Double-Check,10 并发只触发 1 次刷新
  • 无外部依赖,javac + java 直接跑

3. 运行方式 ​

bash
cd labs/java/backend-data/auth-token-simulation
javac -d out src/AuthTokenSimulation.java
java -cp out AuthTokenSimulation

4. 预期现象 ​

  • 输出的 JWT 可解码:Header {"alg":"HS256",...}、Payload {"sub":"user_10086","name":"alex",...}
  • 10 个并发 401 → 实际触发刷新次数 = 1

5. 常见误区 ​

误区实际情况
JWT 是加密的只有签名段是密文;Header/Payload 是明文 Base64,任何人可解码
Payload 可放敏感信息放手机号/密码 = 泄露;只放 sub/role/exp 等非敏感标识
并发 401 各自刷新会造成刷新风暴;必须串行化(Authenticator / 锁),只刷新一次

6. 对应知识库文档 ​

7. 完整源码 ​

站点构建时间:2026/8/24 23:43:17