【问题标题】:ASP.NET JWT authorization returns NotFoundASP.NET JWT 授权返回 NotFound
【发布时间】:2021-10-23 05:48:31
【问题描述】:

我正在开发一个 api 项目并且需要使用 jwt,我已经在启动时对其进行了配置,但是每当我在操作上使用 [Authorize] 时都会收到 404 Notfound 响应。我还注意到,如果我使用 [Authorize(AuthenticationSchemes = "Bearer")],它将正常工作。而且我不想使用那个长语句。请问可能是什么原因?下面是我在启动时的 jwt 配置。

services.AddAuthentication(options =>
        {
            options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
            options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
        }).AddJwtBearer(options =>
        {
            options.TokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuerSigningKey = true,
                IssuerSigningKey = new SymmetricSecurityKey(System.Text.Encoding.UTF8.GetBytes(Configuration.GetSection("JWTConfigurations:SecretKey").Value)),
                ValidateIssuer = true,
                ValidIssuer = Configuration.GetSection("JWTConfigurations:Issuer").Value,
                ValidateAudience = true,
                ValidAudience = Configuration.GetSection("JWTConfigurations:Audience").Value,
            };
        });

【问题讨论】:

    标签: asp.net asp.net-core jwt asp.net-apicontroller


    【解决方案1】:

    试试这个:-

    services.AddAuthentication(options => {
                    options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                    options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
                    options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;  //add this to your code
    })
     .AddJwtBearer(...);
    
    

    或者您可以像这样在整个应用程序中验证策略:-

      services.AddControllers(opt => {
                var policy = new AuthorizationPolicyBuilder("Bearer").RequireAuthenticatedUser().Build();
                opt.Filters.Add(new AuthorizeFilter(policy));
            })
    

    因此,不需要将[Authorize(AuthenticationSchemes = "Bearer")] 放在方法上。

    【讨论】:

      猜你喜欢
      • 2018-11-05
      • 2018-01-09
      • 2021-10-05
      • 2019-08-29
      • 2018-08-19
      • 2018-05-19
      • 2018-01-01
      • 1970-01-01
      • 2019-04-23
      相关资源
      最近更新 更多