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

基于ASP.NET Core 8的应用无法通过Swagger登录Azure AD

解决Swagger UI登录Azure AD时redirect_uri无效的问题

1. 配置SwaggerUI的OAuth回调地址

你的启动代码仅配置了SwaggerGen的安全定义,但SwaggerUI本身必须指定认证后的回调URI,该地址需与Azure应用注册中的重定向URI完全匹配。

修改UseSwaggerUI的配置,补充OAuth相关设置:

app.UseSwaggerUI(c => 
{
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "Commerce.API v1");
    
    // 添加OAuth核心配置
    c.OAuthClientId(builder.Configuration["AzureAd:ClientId"]);
    c.OAuthAppName("Commerce.API Swagger");
    // 关键:替换为你的API实际HTTPS地址(比如localhost:7045)
    c.OAuthRedirectUrl("https://localhost:xxxx/swagger/oauth2-redirect.html");
    c.OAuthUseImplicitFlow();
});

2. 在Azure应用注册中添加对应重定向URI

登录Azure门户操作:

  • 找到你的应用注册,进入「身份验证」页面
  • 添加**单页应用(SPA)**类型的重定向URI:https://localhost:xxxx/swagger/oauth2-redirect.html(与上面SwaggerUI配置的地址完全一致)
  • 同时确认已包含API自身的OIDC回调地址/signin-oidc(对应appsettings里的CallbackPath)
  • 保存更改

3. 修正SwaggerGen中的OAuth端点配置

当前代码里的TokenUrl存在路径错误,且AuthorizationUrl/TokenUrl应与appsettings里的指定租户统一,避免冲突:

AuthorizationUrl = new Uri($"https://login.microsoftonline.com/{builder.Configuration["AzureAd:TenantId"]}/oauth2/v2.0/authorize"),
TokenUrl = new Uri($"https://login.microsoftonline.com/{builder.Configuration["AzureAd:TenantId"]}/oauth2/v2.0/token"),

4. 验证权限范围一致性

确保Azure应用注册中已暴露access_as_user这个API权限,且Swagger配置的Scopes与该权限名称完全匹配。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 01:17:24