.net core 为什么TokenValidationParameters中的SigningKey总是空的
我正在尝试使用AddJwtBearer来授权我的API。 我在Startup.cs中使用这个.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
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承载令牌签名