jwt验证期间Asp.net core缓存jwk

The*_*hod 5 asp.net jwt asp.net-core

我对 .NET 还比较陌生。我正在使用 ASP.NET Core 2.1。我正在使用 JWT 进行身份验证。作为 jwt 验证的一部分,我向发行者发出请求并获取他们的公钥来检查我的令牌完整性。所以我这样做:

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(o =>
    {
        o.Authority = Configuration["Jwt:Authority"];
        o.TokenValidationParameters = new TokenValidationParameters
        {
            ValidateIssuer = true,
            ValidateAudience = true,
            ValidateIssuerSigningKey = true,
            ValidIssuer = Configuration["Jwt:Issuer"],
            ValidAudience = Configuration["Jwt:Audience"],
            NameClaimType = ClaimTypes.NameIdentifier,
        };
    });
Run Code Online (Sandbox Code Playgroud)

这符合我的预期,但它似乎会针对每个请求发送到发出服务器。我想要的是缓存我返回的 jwk,并且仅在验证失败时才尝试访问权限(例如,这可能是因为密钥轮换)。奇怪的是我没有看到在配置中定义缓存策略的明显方法。我觉得这是一个非常标准的用例,我可能会遗漏一些东西,但我没有运气浏览文档。有人可以在这里为我建议一种方法吗?我是否必须推出自己的 IConfigurationManager 才能强制执行此操作?任何意见,将不胜感激。非常感谢!