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

如何为.NET 5 Web API配置Swagger通过用户名密码生成Bearer令牌

解决方案说明

你当前使用的SecuritySchemeType.ApiKey类型的安全定义仅支持手动填写已生成的JWT令牌,无法触发用户名、密码输入弹窗。要实现输入账号密码自动获取Azure AD颁发的Bearer令牌,需要将Swagger安全配置调整为OAuth2 资源所有者密码凭证(ROPC)流模式,具体修改步骤如下:

步骤1:修改Program.cs/Startup.cs中的SwaggerGen配置

替换你原来的AddSwaggerGen代码为以下配置,注意替换配置中的Azure AD相关参数为你自己的实际值:

services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v2", new OpenApiInfo { Title = "APIs", Version = "v2" });
    
    // 替换为OAuth2密码流安全定义
    c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
    {
        Type = SecuritySchemeType.OAuth2,
        Flows = new OpenApiOAuthFlows
        {
            Password = new OpenApiOAuthFlow
            {
                // 替换{你的AAD租户ID}为实际租户ID
                TokenUrl = new Uri("https://login.microsoftonline.com/{你的AAD租户ID}/oauth2/v2.0/token"),
                // 替换为你API暴露的scope,例如:api://xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx/Access.All
                Scopes = new Dictionary<string, string>
                {
                    { "你的API自定义Scope", "访问API的权限" }
                }
            }
        },
        Description = "使用Azure AD账号密码获取Bearer令牌进行身份校验",
        Name = "Authorization",
        In = ParameterLocation.Header
    });

    c.AddSecurityRequirement(new OpenApiSecurityRequirement
    {
        {
            new OpenApiSecurityScheme
            {
                Reference = new OpenApiReference
                {
                    Id = "Bearer",
                    Type = ReferenceType.SecurityScheme
                }
            }, 
            // 这里要和上面定义的Scope保持一致
            new List<string> { "你的API自定义Scope" }
        }
    });
});

步骤2:配置Swagger UI的OAuth参数

在HTTP请求管道配置的UseSwaggerUI部分添加OAuth相关配置:

app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("/swagger/v2/swagger.json", "APIs v2");
    // 替换为你AAD应用注册的客户端ID
    c.OAuthClientId("你的AAD应用客户端ID");
    // 如果你的AAD应用是机密客户端,填写客户端密钥,公开客户端可省略
    c.OAuthClientSecret("你的AAD应用客户端密钥(可选)");
    c.OAuthUseBasicAuthenticationWithAccessCodeGrant();
    c.OAuthScopeSeparator(" ");
});

步骤3:确认Azure AD应用注册配置

要确保ROPC流能正常工作,需要在Azure门户的应用注册中做如下配置:

  • 进入「身份验证」选项卡,在「高级设置」中开启「允许公共客户端流」
  • 进入「API权限」选项卡,添加你自己暴露的API权限并授予管理员同意
  • 确保你用于测试的用户账号没有启用MFA(多因素认证),否则ROPC流会校验失败

注意事项

  • 资源所有者密码凭证(ROPC)流仅建议在开发测试环境使用,生产环境请使用更安全的OAuth2授权码流
  • 配置完成后启动项目,点击Swagger页面右上角的Authorize按钮即可看到用户名、密码输入框,填写完成后会自动获取令牌并附加到后续接口请求的Header中

内容的提问来源于stack exchange,提问作者K.Z

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:06:03