要解决这个问题,您可以使用IdentityServer提供的JWT验证中间件来验证令牌,而不是存储密钥。下面是一个使用Microsoft.AspNetCore.Authentication.JwtBearer包的示例代码:
public void ConfigureServices(IServiceCollection services)
{
    // 添加IdentityServer验证
    services.AddAuthentication("Bearer")
        .AddJwtBearer("Bearer", options =>
        {
            options.Authority = "https://identityserver.example.com"; // 您的IdentityServer地址
            options.Audience = "api"; // API的标识符
            options.TokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuer = true,
                ValidateAudience = true,
                ValidateLifetime = true,
                ValidateIssuerSigningKey = true
            };
        });
    // 其他配置...
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // 使用身份验证中间件
    app.UseAuthentication();
    // 其他配置...
}
此代码将使用JWT验证中间件来验证传入请求的令牌。其中,Authority属性指定了IdentityServer的URL,Audience属性指定了API的标识符。TokenValidationParameters属性可以用于进一步配置验证选项,例如验证签发者、受众、令牌有效期等。
然后,您可以将身份验证中间件添加到应用程序的中间件管道中,以便在处理请求之前进行令牌验证。
请注意,这只是一个示例,您需要根据自己的实际情况进行适当的调整和配置。