You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 7 Web API JWT授权失败排查求助

ASP.NET Core 7 Web API授权失败排查方向

在ASP.NET Core 7 Web API中,仅给特定端点添加[Authorize]特性后,请求时返回错误:

authorization failed. These requirements were not met: DenyAnonymousAuthorizationRequirement: Requires an authenticated user

已尝试Swagger携带令牌、外部应用手动添加Authorization头(Bearer 令牌)但问题仍存在,可从以下方向排查:

  • 验证中间件顺序与自定义中间件干扰
    当前Startup中UseAuthentication()、UseRouting()、UseAuthorization()的顺序是正确的,但需排查自定义中间件(如ErrorHandlerMiddleware)是否在认证流程前拦截请求、修改请求头,可临时注释该中间件测试是否恢复正常。

  • 校验JWT令牌的核心参数
    用JWT解码工具解析生成的令牌,确认:

    • iss(签发者)、aud(受众)与配置中ValidIssuer、ValidAudience完全一致(大小写敏感)
    • 令牌exp字段时间晚于当前时间,未过期
    • 签名算法匹配:生成时使用SecurityAlgorithms.HmacSha256,可在TokenValidationParameters中显式添加ValidAlgorithms = new[] { SecurityAlgorithms.HmacSha256 }强制校验算法
    • 生成令牌时读取的jwtSettings与认证配置中的参数完全一致,无拼写错误
  • 确认Authorization头格式与传递完整性

    • 确保请求头为Authorization: Bearer <token>,Bearer后必须有一个空格,令牌无多余空格或换行
    • 若使用反向代理(IIS、Nginx等),需确认代理未修改或移除Authorization头:
      • IIS需在web.config中配置允许传递该头
      • Nginx需添加proxy_set_header Authorization $http_authorization;配置
  • 启用认证日志查看详细错误
    在appsettings.Development.json中添加日志配置:

    {
      "Logging": {
        "LogLevel": {
          "Microsoft.AspNetCore.Authentication": "Debug",
          "Microsoft.AspNetCore.Authorization": "Debug"
        }
      }
    }
    

    运行后查看控制台日志,会输出令牌验证失败的具体原因(如签名无效、iss不匹配等)

  • 显式指定认证Scheme
    尽管配置了默认认证Scheme,可尝试在[Authorize]特性中显式指定:

    [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
    

    确保端点使用JWT认证处理请求

  • 验证用户身份标识Claims
    生成令牌时仅添加了Name Claim,可尝试补充用户标识Claim:

    var claims = new List<Claim>
    {
        new Claim(JwtRegisteredClaimNames.Name, loginDto.Username),
        new Claim(ClaimTypes.NameIdentifier, loginDto.Username)
    };
    

    同时可在非授权端点或自定义中间件中检查User.Identity.IsAuthenticated的值,确认认证流程是否正确执行


内容的提问来源于stack exchange,提问作者schh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 22:17:08