IDX10500:签名验证失败。没有提供安全密钥来验证签名

问题描述 投票:0回答:3

我有以下代码,当我调用 api 端点时,出现错误

Bearer was not authenticated. Failure message: IDX10500: Signature validation failed. No security keys were provided to validate the signature.

services.AddAuthentication(options =>
{
    options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
    options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
    options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(cfg =>
{
    cfg.RequireHttpsMetadata = false;
    cfg.TokenValidationParameters = new TokenValidationParameters
    {
        ValidateAudience = false,
        ValidateIssuer = false,
        ValidateIssuerSigningKey = false
    };
});

如果我设置

ValidateIssuerSigningKey=false
,为什么会发生这种情况?

c# .net asp.net-core jwt
3个回答
37
投票

请参阅帖子:https://github.com/aspnet/Security/issues/1741

您可以将委托 TokenValidationParameters.SignatureValidator 设置为仅返回 JwtSecurityToken。

目前您不能仅将

ValidateIssuerSigningKey
设置为 false 来跳过签名验证。作为解决方法,您可以将委托 TokenValidationParameters.SignatureValidator 设置为仅返回 JwtSecurityToken :

ValidateIssuerSigningKey = false,
SignatureValidator = delegate (string token, TokenValidationParameters parameters)
{
    var jwt = new JwtSecurityToken(token);

    return jwt;
},

0
投票

仅当您确定 jwks 配置正确时才检查此项。

请注意,如果您同时引用了

Microsoft.IdentityModel.Tokens
System.IdentityModel.Tokens.Jwt

,也可能会发生这种情况

删除对 System.IdentityModel.Tokens.Jwt 的所有引用,清理您的解决方案(手动删除 bin/obj 文件夹)

重试。

从 .NET 6 升级到 .NET 8 后我们遇到了这个问题


0
投票

我从 .NET 6 升级到 .NET 8 后遇到了这个问题。原来是由于

Microsoft.IdentityModel.Tokens
/
Microsoft.IdentityModel.JsonWebTokens
Microsoft.IdentityModel.Protocols.OpenIdConnect
之间的版本不兼容造成的。

我引用了

Microsoft.AspNetCore.Authentication.JwtBearer
版本8.0.4,它传递了
Microsoft.IdentityModel.Protocols.OpenIdConnect
的7.1.2版本,同时我引用了
Microsoft.IdentityModel.JsonWebTokens
的7.5.1版本。这些版本彼此不兼容 - 具体来说,这导致一个包中的某些 JSON 解析器代码与另一个包中的某些 JSON 解析器帮助程序之间不兼容,进而导致
jwks_uri
从 OIDC 配置文档中“丢失”被解析时。

要解决此问题,请确保所有

Microsoft.IdentityModel.
软件包使用相同版本。

© www.soinside.com 2019 - 2024. All rights reserved.