导读:本期聚焦于小伙伴创作的《C#怎么实现Swagger认证配置 C#如何在Swagger UI中添加JWT Bearer Token认证输入框》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《C#怎么实现Swagger认证配置 C#如何在Swagger UI中添加JWT Bearer Token认证输入框》有用,将其分享出去将是对创作者最好的鼓励。

在C#开发的Web API项目中,为Swagger添加JWT Bearer Token认证配置,可以让开发者在Swagger UI界面直接输入Token,测试需要鉴权的接口,避免手动拼接请求头的繁琐操作。以下是在.NET 6及以上框架中的完整实现步骤。

C#怎么实现Swagger认证配置 C#如何在Swagger UI中添加JWT Bearer Token认证输入框

前置准备

首先确保项目中已经安装了Swagger相关的NuGet包,以及JWT认证相关的依赖。需要安装的包如下:

  • Swashbuckle.AspNetCore
  • Microsoft.AspNetCore.Authentication.JwtBearer

配置JWT认证服务

先在Program.cs中添加JWT Bearer认证的服务配置,定义Token的验证规则,示例代码如下:

// 添加JWT认证服务
builder.Services.AddAuthentication(options =>
{
    options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
    options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
    options.TokenValidationParameters = new TokenValidationParameters
    {
        // 是否验证发行者
        ValidateIssuer = true,
        // 发行者地址
        ValidIssuer = builder.Configuration["Jwt:Issuer"],
        // 是否验证受众
        ValidateAudience = true,
        // 受众地址
        ValidAudience = builder.Configuration["Jwt:Audience"],
        // 是否验证密钥
        ValidateIssuerSigningKey = true,
        // 签名密钥
        IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"])),
        // 是否验证过期时间
        ValidateLifetime = true,
        // 过期时间偏移量
        ClockSkew = TimeSpan.Zero
    };
});

配置Swagger服务支持认证

接下来需要修改Swagger的服务配置,添加安全定义和安全要求,让Swagger UI显示Token输入框。在Program.cs的Swagger配置部分添加如下代码:

// 添加Swagger服务
builder.Services.AddSwaggerGen(options =>
{
    // 添加安全定义,指定认证类型为Bearer Token
    options.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
    {
        // 描述信息
        Description = "JWT Authorization header using the Bearer scheme. Example: "Authorization: Bearer {token}"",
        // 认证类型
        Type = SecuritySchemeType.Http,
        // 认证方案
        Scheme = "bearer",
        // 承载格式
        BearerFormat = "JWT",
        // 认证位置
        In = ParameterLocation.Header,
        // 认证名称
        Name = "Authorization"
    });

    // 添加安全要求,指定哪些接口需要认证
    options.AddSecurityRequirement(new OpenApiSecurityRequirement
    {
        {
            new OpenApiSecurityScheme
            {
                // 引用上面定义的安全定义
                Reference = new OpenApiReference
                {
                    Type = ReferenceType.SecurityScheme,
                    Id = "Bearer"
                }
            },
            // 空数组表示所有接口都需要该认证
            new string[] {}
        }
    });
});

启用认证中间件

配置完成后,需要确保在请求管道中启用了认证和授权中间件,顺序不能错误,认证中间件要在授权中间件之前,示例代码如下:

// 启用Swagger中间件
app.UseSwagger();
app.UseSwaggerUI();

// 启用认证中间件
app.UseAuthentication();
// 启用授权中间件
app.UseAuthorization();

// 映射控制器
app.MapControllers();

测试认证配置

启动项目后访问Swagger UI页面,右上角会出现一个Authorize按钮,点击后会弹出Token输入框,输入Bearer {你的Token}(注意Bearer后面有空格),点击授权后,再调用需要鉴权的接口,Swagger会自动在请求头中添加Authorization: Bearer {token}的信息,无需手动拼接。

常见问题说明

  • 如果点击授权后接口仍然返回401,检查Token是否过期,或者JWT配置的发行者、受众、密钥是否和生成Token时的配置一致。
  • 如果Swagger UI没有显示Authorize按钮,检查AddSecurityDefinitionAddSecurityRequirement的配置是否正确,是否遗漏了相关代码。
  • 如果需要部分接口不需要认证,可以在对应的控制器或接口方法上添加[AllowAnonymous]特性。

C#SwaggerSwagger_UIJWT_Bearer_Token认证配置修改时间:2026-07-12 10:03:22

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。