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

如何修改Swashbuckle的JWT认证头从Bearer改为Token?

问题描述

我正在实现Conduit规范,该规范要求JWT认证头格式为:

Authorization: Token jwt.token.here

使用Microsoft.AspNetCore.Authentication.JwtBearer时,默认认证头是Authorization: Bearer {token goes here},我已经通过添加OnMessageReceived事件,将后端的默认标识替换为Token,后端现在可以正确识别Token前缀的认证头。

但在配置Swashbuckle的安全方案时,始终无法修改SwaggerUI生成的请求头标识为Token,目前只能暂时用Postman调试API,希望能在Swashbuckle/OpenAPI/SwaggerUI中正常使用符合规范的认证方式。

我想知道是否有配置项可以覆盖默认的Bearer标识,还是这个标识是硬编码的,需要新增特性支持?以下是我尝试过的无效配置——修改Scheme字段为Token会直接导致运行时错误:

builder.Services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new OpenApiInfo { Title = "Your API", Version = "v1" });

    // 配置JWT认证
    var securityScheme = new OpenApiSecurityScheme
    {
        Name = "Authorization",
        Description = "JWT Authorization header using the Bearer scheme",
        In = ParameterLocation.Header,
        Type = SecuritySchemeType.Http,
        Scheme = "Bearer",
        BearerFormat = "JWT"
    };

    c.AddSecurityDefinition("Token", securityScheme);
    c.AddSecurityRequirement(new OpenApiSecurityRequirement
    {
        {
            new OpenApiSecurityScheme
            {
                Reference = new OpenApiReference
                {
                    Type = ReferenceType.SecurityScheme,
                    Id = "Token"
                }
            },
            Array.Empty<string>()
        }
    });
});

更新情况

点击Swagger UI的“Authorize🔓”按钮后,弹窗标题显示“Token”(应该来自AddSecurityDefinition或AddSecurityRequirement的配置),但输入框的提示文字依然是“Bearer {token}”;输入Token值完成授权后,发送请求时实际生成的请求头仍然是Authorization: Bearer {token值},并没有替换成规范要求的Token前缀。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 09:47:58