.net core 为什么TokenValidationParameters中的SigningKey总是空的

.net core 为什么TokenValidationParameters中的SigningKey总是空的,.net-core,jwt,bearer-token,.net Core,Jwt,Bearer Token,我正在尝试使用AddJwtBearer来授权我的API。 我在Startup.cs中使用这个 services.AddControllers(); AddJwtBearer(options => { options.IncludeErrorDetails = true; options.MetadataAddress = Configuration["Issuer:uri"] + Configuration["Issuer:well-know

我正在尝试使用AddJwtBearer来授权我的API。 我在Startup.cs中使用这个

services.AddControllers();

AddJwtBearer(options =>
{
    options.IncludeErrorDetails = true;
    options.MetadataAddress = Configuration["Issuer:uri"] + Configuration["Issuer:well-known"];
    options.Authority = Configuration["Issuer:uri"];

    options.TokenValidationParameters = new TokenValidationParameters
        {
            ValidIssuer = Configuration["Issuer:uri"],
            ValidateIssuer = true,
            ValidateIssuerSigningKey = true,
            ValidateAudience = false,
        };
    options.Events = new JwtBearerEvents
        {
            OnAuthenticationFailed = context =>
            {
                if (context.Exception.GetType() == typeof(SecurityTokenExpiredException))
                {
                    context.Response.Headers.Add("Token-Expired", "true");
                }
                return Task.CompletedTask;
            }
        };
    });

但我总是遇到错误:
IDX10501:签名验证失败。无法匹配密钥:\nkid:'[PII被隐藏。有关详细信息,请参阅https://aka.ms/IdentityModel/PII.]“
因为
issueSigningKeys
TokenValidationParameters
中始终为空。是否有一种方法可以从提供的元数据url加载颁发者签名密钥,而无需为此编写特定代码


谢谢

谢谢你的快速回复,但我想明白了。我有两个问题,1)我指定了
.well-known/openid-configuration/jwks
端点,而不是
。well-known/openid-configuration
,这本身就正确地实例化了我的ConfigurationManager;2) 我必须添加
app.UseAuthentication()
app.UseAuthorization()之前现在我的代码正在根据正确的身份服务器正确验证JWT承载令牌签名