← 中文资源

简体中文版本

排查 OAuth 令牌时钟偏移

对比令牌的签发、生效与过期时间与各主机时钟,证明偶发 401 来自时间漂移而非令牌本身。

阅读英文原文

目标

某集群偶发拒绝刚签发的令牌并返回 401,其他集群却正常,怀疑时钟不同步。本配方对比各主机与签发方的时间,检查 NTP 同步状态,并解析令牌的 nbf 与 exp 声明,判断是否因主机时钟偏快而在生效时间之前就被拒绝,从而修正时间同步或校验宽限。

步骤要点

  1. 对比主机时间与签发方时间,检查 NTP 同步状态。
  2. 解析令牌 nbf/exp/iat 声明,计算与当前时间的偏移。
  3. 对漂移主机修复 NTP,而不是一味放大校验宽限。
  4. 验证修复后新鲜令牌的 401 率归零。
date -u +%s
# issuer reported time
curl -s https://issuer.example.com/.well-known/openid-configuration >/dev/null
echo "compare with NTP: $(timedatectl show -p NTPSynchronized --value)"

排错提示

  • 放大宽限只能掩盖漂移,不能修复。
  • 漂移通常按主机发生,只需检查出问题的实例。
  • 签发方与校验方需使用同一时间单位。

适用边界

  • 不处理重放或签名问题。
  • 需要在不泄露密钥的前提下检查声明。