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

如何配置ASP.NET Core 9 Web API使Swagger测试时发送客户端密钥请求头

问题分析与解决方案

1. 请求未携带客户端密钥的原因

你仅在OpenAPI文档中定义了安全方案(SecurityScheme),但未添加安全要求(Security Requirement),Swagger UI无法得知需要将该密钥附加到接口请求中。只有当接口被标记需要安全验证时,Swagger UI才会自动把用户输入的密钥带入请求头。

2. Scheme设置错误的问题

你的客户端密钥是纯字符串,不需要bearer前缀,因此SecuritySchemeType.Http+Scheme = "bearer"的配置完全错误。正确的类型应该是SecuritySchemeType.ApiKey,该类型专门用于自定义API密钥头,不会为密钥添加任何额外前缀。

修正后的完整代码

var builder = WebApplication.CreateBuilder(args);

// ... 其他服务配置

builder.Services.AddOpenApi(o =>
{
    o.AddDocumentTransformer((document, context, cancellationToken) =>
    {
        document.Components ??= new OpenApiComponents();
        // 定义ApiKey类型的安全方案
        document.Components.SecuritySchemes["Client-Secret-1"] = new OpenApiSecurityScheme
        {
            Type = SecuritySchemeType.ApiKey,
            Name = "Client-Secret-1", // 请求头的名称
            In = ParameterLocation.Header,
            Description = "请输入客户端密钥"
        };

        // 添加全局安全要求:所有接口都需要携带该密钥
        document.Security ??= new List<OpenApiSecurityRequirement>();
        document.Security.Add(new OpenApiSecurityRequirement
        {
            {
                new OpenApiSecurityScheme
                {
                    Reference = new OpenApiReference
                    {
                        Type = ReferenceType.SecurityScheme,
                        Id = "Client-Secret-1"
                    }
                },
                new string[] {}
            }
        });

        return Task.CompletedTask;
    });
});

var app = builder.Build();

// ... 中间件配置

if (app.Environment.IsDevelopment())
{
    app.MapOpenApi();
    app.UseSwaggerUI(c =>
    {
        c.SwaggerEndpoint("/openapi/v1.json", "MyProjectName");
    });
}

// ... 路由配置

app.Run();

额外说明

  • 若不需要全局应用密钥验证,仅针对特定接口生效,可以在控制器或Action上添加[Authorize]属性,或者手动为目标接口的OpenAPI元数据单独添加安全要求。
  • 修正后,Swagger UI顶部会出现「Authorize」按钮,用户输入密钥后,所有请求都会自动带上Client-Secret-1请求头,且值为用户输入的纯字符串,不会附加任何前缀。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 19:44:58