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

Visual Studio中设置Authorization头后.http文件请求仍返回401错误

排查Visual Studio .http客户端调用Bearer保护API返回401的问题

1. 验证令牌有效性

  • 用Jwt.IO解析令牌,重点检查:
    • exp字段是否未过期(时间晚于当前时间)
    • aud(受众)是否和API配置的Audience完全匹配
    • iss(签发者)是否和API配置的Issuer一致
    • 令牌是否包含API授权策略要求的scope或role字段

2. 检查.http文件配置

  • 确认变量替换生效:发送请求后查看Visual Studio请求输出,确保{{BearerToken}}被替换成完整令牌,无多余空格或字符
  • 核对Authorization头格式:必须是Bearer +令牌(注意Bearer后有一个英文空格)
  • 临时写死令牌测试:直接将Authorization: Bearer <实际令牌>写入请求,排除变量替换问题

3. 检查API认证授权配置

  • 确认Minimal API的中间件顺序正确:UseAuthentication()必须在UseAuthorization()之前
  • 核对JWT验证参数配置,示例代码:
    builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
        .AddJwtBearer(options =>
        {
            options.TokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuer = true,
                ValidIssuer = builder.Configuration["Jwt:Issuer"],
                ValidateAudience = true,
                ValidAudience = builder.Configuration["Jwt:Audience"],
                ValidateLifetime = true,
                IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"]))
            };
        });
    
    app.UseAuthentication();
    app.UseAuthorization();
    
  • 确保目标端点添加了授权要求:
    app.MapGet("/api/v1/categories", () => Results.Ok())
       .RequireAuthorization();
    

4. 排查请求发送细节

  • 查看Visual Studio请求日志,确认Authorization头确实被发送,未被代理或工具篡改
  • 用Postman等工具测试同一令牌和端点:若Postman能成功,问题出在Visual Studio .http客户端;若也返回401,问题在令牌或API配置

5. 确认令牌类型

  • 确保使用的是访问令牌(access_token),而非ID令牌(id_token),ID令牌通常不用于API授权

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 16:04:53