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

.NET 5 Web API配Azure AD后Swagger授权仍报未授权问题求解

解决Swagger对接Azure AD授权报错问题

1. 修复Scope缺失报错

你遇到的「请求必须包含Scope参数」错误,是因为当前Swagger的OAuth2配置未指定授权所需的Scope,按如下步骤修改:

  • 首先在Azure AD应用注册界面为你的Web API暴露自定义Scope,示例格式为api://<你的API应用Client ID>/access_as_user
  • 修改AddSwaggerGen中的安全定义配置,给Implicit流添加Scopes属性,同时新增安全要求配置,让Swagger在请求受保护接口时自动携带Bearer token:
services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new OpenApiInfo { Title = "MyProject", Version = "v1.0.0" });

    c.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme
    {
        Type = SecuritySchemeType.OAuth2,
        Flows = new OpenApiOAuthFlows()
        {
            Implicit = new OpenApiOAuthFlow()
            {
                AuthorizationUrl = new Uri($"https://login.microsoftonline.com/{Configuration["TenantId"]}/oauth2/v2.0/authorize"),
                TokenUrl = new Uri($"https://login.microsoftonline.com/{Configuration["TenantId"]}/oauth2/v2.0/token"),
                // 新增Scope配置,key为你暴露的Scope地址,value为Scope的描述文本
                Scopes = new Dictionary<string, string>
                {
                    { "api://<你的API应用Client ID>/access_as_user", "访问Web API" }
                }
            }
        }
    });

    // 新增安全要求,绑定OAuth2安全方案
    c.AddSecurityRequirement(new OpenApiSecurityRequirement
    {
        {
            new OpenApiSecurityScheme
            {
                Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "oauth2" }
            },
            new[] { "api://<你的API应用Client ID>/access_as_user" }
        }
    });
});

2. 预配置Client ID避免手动输入

你可以在Configure方法的Swagger UI配置中预先填入Client ID,无需每次授权手动输入,配置示例如下:

app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "MyProject v1");
    // 新增OAuth配置,预填Client ID,也可直接从配置文件读取
    c.OAuthClientId(Configuration["SwaggerClientId"]);
    // 可选:预填默认选中的Scope,授权时无需手动勾选
    c.OAuthScopes("api://<你的API应用Client ID>/access_as_user");
});

3. 额外Azure AD配置检查

确保你Azure AD中用于Swagger授权的客户端应用配置符合要求:

  • 「身份验证」页开启隐式流,勾选「访问令牌」「ID令牌」选项
  • 重定向URI添加https://<你的站点域名>/swagger/oauth2-redirect.html
  • 已给该客户端应用授予你Web API暴露的Scope的访问权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 18:15:01