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

如何在带Identity Server的ASP.NET Core Web API中配置Swagger支持认证访问

解决Swagger访问认证端点及集成Identity凭证输入的方案

一、让Swagger支持身份认证(访问需授权的端点)

要访问带[Authorize]属性的端点,需要给Swagger配置认证方案,让它能接收并携带凭证请求接口。

  1. 配置Swagger生成器的安全规则
    在服务注册阶段(builder.Services.AddSwaggerGen)添加认证定义和全局安全要求:
builder.Services.AddSwaggerGen(c =>
{
    // 定义JWT认证方案(如果用JWT的话)
    c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
    {
        Description = "请输入格式为 `Bearer {Token}` 的认证信息",
        Name = "Authorization",
        In = ParameterLocation.Header,
        Type = SecuritySchemeType.Http,
        Scheme = "Bearer"
    });

    // 给所有接口默认添加认证要求
    c.AddSecurityRequirement(new OpenApiSecurityRequirement
    {
        {
            new OpenApiSecurityScheme
            {
                Reference = new OpenApiReference
                {
                    Type = ReferenceType.SecurityScheme,
                    Id = "Bearer"
                }
            },
            Array.Empty<string>()
        }
    });

    // 可选:添加XML注释,让Swagger显示更详细的接口说明(包括Identity端点)
    var xmlFileName = $"{System.Reflection.Assembly.GetExecutingAssembly().GetName().Name}.xml";
    c.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, xmlFileName), includeControllerXmlComments: true);
});
  1. 配置SwaggerUI启用认证入口
    修改UseSwaggerUI的配置,让界面显示"Authorize"按钮,方便输入凭证:
application.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "你的API V1版本");
    // Swagger会自动识别上面定义的Bearer方案,显示Authorize按钮,无需额外配置即可输入Token
});

二、暴露Identity端点并在Swagger中使用

可以通过ASP.NET Core的Identity API端点功能,快速生成注册、登录等接口,并在Swagger中直接测试获取凭证。

  1. 启用Identity API端点
    在服务注册和中间件配置中添加Identity端点支持:
// 服务注册
builder.Services.AddDbContext<ApplicationDbContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));

// 启用Identity的REST API端点
builder.Services.AddIdentityApiEndpoints<IdentityUser>()
    .AddEntityFrameworkStores<ApplicationDbContext>();

// 中间件配置(放在UseRouting之后,UseAuthorization之前)
app.MapIdentityApi<IdentityUser>();
  1. 在Swagger中获取并使用Identity凭证
  • 启动项目后,打开SwaggerUI,找到/login端点,发送POST请求(传入用户名和密码),获取返回的token。
  • 点击SwaggerUI顶部的"Authorize"按钮,输入Bearer {获取到的token},点击"Authorize"完成认证。
  • 此时再访问带[Authorize]属性的端点,Swagger会自动携带认证头,即可正常访问。

注意事项

  • 如果你的API使用Cookie认证而非JWT,只需将Swagger的安全定义改成对应Scheme(比如"Cookie")即可。
  • 确保控制器或接口上的[Authorize]属性配置正确,Swagger会自动识别并标记需要认证的接口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 20:43:20