You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core未存储JWT Token时,服务器如何验证其有效性?

为什么不存储JWT就能验证有效性?

JWT的核心特性是自包含(Self-contained),服务器不需要存储已签发的Token就能完成验证,核心逻辑基于签名和令牌本身携带的信息:

验证的核心流程

  • 签名校验:服务器生成Token时,会用自己独占的密钥(就是代码中JWT:Key配置项),通过HMAC-SHA256算法对Token的头部和载荷进行签名,签名结果会附加在Token末尾。当服务器收到请求中的Token时,会用同一个密钥重新计算头部+载荷的签名,和Token里的签名做对比:
    • 如果一致,说明Token未被篡改,确实是服务器自己签发的;
    • 如果不一致,直接判定Token无效。
  • 有效期校验:Token的载荷里包含exp(过期时间)字段(对应代码中Expires = DateTime.UtcNow.AddMinutes(10)),代码中配置了ValidateLifetime = true,ASP.NET Core的JWT中间件会自动检查当前时间是否在Token的有效期内,过期的Token直接被拒绝。
  • 可选字段校验:代码中关闭了Issuer(签发者)和Audience(受众)的验证(ValidateIssuer = false、ValidateAudience = false),如果开启的话,服务器会校验Token里的iss、aud字段是否和配置的ValidIssuer、ValidAudience一致。

结合你的代码说明

  • 在Authenticate方法中,生成Token时通过SigningCredentials绑定了密钥和签名算法,确保签发的Token带有合法签名;
  • AddJwtBearer配置里的TokenValidationParameters指定了签名密钥和校验规则,ASP.NET Core的认证中间件会自动完成所有验证步骤,完全不需要存储任何已签发的Token。

补充说明

这种无状态的特性是JWT的优势,能减轻服务器存储压力,适合分布式系统部署。但它也有局限性:一旦Token被盗,在过期前服务器无法主动作废它,如果需要实现主动失效,就得额外引入Token黑名单机制(这时候才需要存储Token或其唯一标识)。

内容的提问来源于stack exchange,提问作者Abhishek Singh Rana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 16:35:05