小编iEn*_*con的帖子

在策略上使用多个身份验证方案会导致签名验证失败

我有两个不同的 jwt auth 令牌来自我的 api 接受的两个不同的提供者,设置如下:

    services.AddAuthentication()
    .AddJwtBearer("auth provider1", options =>
    {
        options.Audience = authSettings.Audience1;
        options.Authority = authSettings.Authority1;
        options.ClaimsIssuer = authSettings.Issuer1;
    })
    .AddJwtBearer("auth provider2", options =>
    {
        options.TokenValidationParameters = new TokenValidationParameters
        {
            ClockSkew = TimeSpan.FromMinutes(5),
            IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(authSettings.SymmetricKey)),
            RequireSignedTokens = true,
            RequireExpirationTime = true,
            ValidateLifetime = true,
            ValidateAudience = true,
            ValidAudience = authSettings.Audience2,
            ValidateIssuer = true,
            ValidIssuer = authSettings.Issuer2
        };
    });
Run Code Online (Sandbox Code Playgroud)

这些身份验证提供程序可以访问不同的 API,因此当访问令牌尝试访问 API 时,不允许我抛出 403。我通过以下策略设置来完成此操作

    services.AddAuthorization(options =>
    {
        // Blocks auth provider 2 tokens by returning 403 because …
Run Code Online (Sandbox Code Playgroud)

c# authentication bearer-token asp.net-core-mvc asp.net-core-webapi

5
推荐指数
1
解决办法
303
查看次数