【问题标题】:IDX10500: Signature validation failed. No security keys were provided to validate the signatureIDX10500:签名验证失败。没有提供安全密钥来验证签名
【发布时间】:2020-06-23 10:24:00
【问题描述】:

我有以下代码,当我调用 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


    【解决方案1】:

    请参考帖子: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;
    },
    

    【讨论】:

    • 知道为什么只设置“ValidateIssuerSigningKey”不起作用吗?也感谢您的解决方法。为我工作。
    • @Tony 你的false 会关闭检查你认为的以外的东西吗?有SingatureValidator,也有IssuerSigningKeyValidator。如果我们通过ValidateIssuerSigningKey关闭检查,那么可能后者(即ISK-validator)不会生效。但是,fomrer(即 S-validator)仍然起作用吗?如果那个需要指定权限或其他东西,你会失败。你怎么看?
    猜你喜欢
    • 2019-10-04
    • 2018-03-15
    • 2018-09-10
    • 2021-12-17
    • 1970-01-01
    • 2015-06-04
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多