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

Asp.net Core携带Bearer Token访问受保护接口返回401未授权问题

碰到这种401授权失败的问题确实头疼,我帮你梳理几个最常见的排查方向,你可以逐一核对:

一、先确认Token生成的核心配置
  • 检查你生成Token时是否正确指定了有效签名密钥(SigningKey),ASP.NET Core的JWT验证要求生成和验证环节使用完全一致的密钥,比如用SymmetricSecurityKey时,两边的字节数组编码方式(UTF8/ASCII)必须统一,不能出现差异。
  • 确认Token的**受众(Audience)和颁发者(Issuer)**是否匹配,生成Token时设置的Audience和Issuer,必须和验证配置(Program.cs/Startup.cs)里的完全一致,否则验证会直接失败。
  • 用jwt.io解析你生成的Token,检查**过期时间(Expires)**是否已经失效,这是很容易忽略的小问题。
二、验证授权中间件的配置是否正确
  • 确保已在Program.cs/Startup.cs中正确添加JWT验证服务,示例代码如下:
    builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
        .AddJwtBearer(options =>
        {
            options.TokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuer = true,
                ValidateAudience = true,
                ValidateLifetime = true,
                ValidateIssuerSigningKey = true,
                ValidIssuer = "你的颁发者标识",
                ValidAudience = "你的受众标识",
                IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("你的签名密钥"))
            };
        });
    
  • 注意中间件的顺序:必须先添加app.UseAuthentication();,再添加app.UseAuthorization();,如果顺序搞反,授权逻辑会在Token验证前执行,直接返回401。
三、Postman请求头的格式是否合规

结合你提到的请求头截图,重点核对这几点:

  • 确保请求头的键是Authorization,值的格式是Bearer 你的Token内容,Bearer后面必须有一个空格,很多人会漏掉这个空格导致验证失败。
  • 确认你粘贴的是纯Token字符串,不要包含响应JSON里的其他字段(比如"access_token": "xxx"里的引号和键名)。
  • 检查是否有代理或网关修改了请求头,导致Authorization字段被覆盖或丢失。
四、额外排查点
  • 如果API部署在IIS上,需要禁用IIS的非匿名身份验证(比如Windows身份验证),否则IIS会优先处理自身的验证逻辑,导致ASP.NET Core的JWT验证不生效。
  • 检查[Authorize]特性是否指定了正确的验证方案,如果你的验证方案不是默认的JwtBearerDefaults.AuthenticationScheme,需要显式指定:[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
  • 添加验证日志排查具体错误,在JwtBearer配置中加入事件监听:
    options.Events = new JwtBearerEvents
    {
        OnAuthenticationFailed = context =>
        {
            Console.WriteLine("Token验证失败原因:" + context.Exception.Message);
            return Task.CompletedTask;
        }
    };
    
    这样能直接看到是签名错误、受众不匹配还是过期等具体问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:28:43