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

如何为Azure部署的Swagger设置正确的Azure AD B2C重定向URL?

解决Swagger在Azure部署环境下的重定向URL问题

核心原因

Swagger UI 默认会使用启动时的主机地址作为OAuth2重定向URL,部署到Azure后未自动切换为云环境的URL,导致认证流程仍指向localhost。

解决方案步骤

1. 确认Azure AD B2C应用注册的重定向URL配置

在Azure AD B2C的应用注册中,必须添加部署后的Swagger重定向地址,格式为:
https://<你的Azure网站域名>/swagger/oauth2-redirect.html
示例:若你的网站域名为myapp.azurewebsites.net,则重定向URL为https://myapp.azurewebsites.net/swagger/oauth2-redirect.html

2. 配置SwaggerUI使用正确的重定向URL

有两种常用方式解决动态环境的重定向URL问题:

方式一:动态获取当前环境的基础URL

先注册IHttpContextAccessor服务,再通过它获取当前请求的Scheme和Host,拼接出正确的重定向地址:

// 注册IHttpContextAccessor
builder.Services.AddHttpContextAccessor();

// 配置SwaggerUI
app.UseSwaggerUI(c => {
    c.OAuthClientId(builder.Configuration["AzureAdB2C:SwaggerClientId"]);
    c.OAuthScopes(builder.Configuration["AzureAdB2C:Scope"]);
    c.OAuthUsePkce();
    
    // 获取当前环境的基础URL并拼接重定向路径
    var httpContext = app.Services.GetRequiredService<IHttpContextAccessor>().HttpContext;
    var baseUrl = $"{httpContext.Request.Scheme}://{httpContext.Request.Host}";
    c.OAuthRedirectUrl($"{baseUrl}/swagger/oauth2-redirect.html");
});

方式二:通过环境配置文件区分

分别在本地和生产环境的配置文件中指定对应重定向URL:

  • 本地appsettings.json:
{
  "AzureAdB2C": {
    "SwaggerRedirectUrl": "http://localhost:5078/swagger/oauth2-redirect.html"
  }
}
  • 生产环境appsettings.Production.json:
{
  "AzureAdB2C": {
    "SwaggerRedirectUrl": "https://<你的Azure网站域名>/swagger/oauth2-redirect.html"
  }
}

然后在代码中读取配置值:

app.UseSwaggerUI(c => {
    c.OAuthClientId(builder.Configuration["AzureAdB2C:SwaggerClientId"]);
    c.OAuthScopes(builder.Configuration["AzureAdB2C:Scope"]);
    c.OAuthUsePkce();
    c.OAuthRedirectUrl(builder.Configuration["AzureAdB2C:SwaggerRedirectUrl"]);
});

3. 验证配置效果

部署到Azure后,访问Swagger页面并点击认证按钮,检查地址栏的重定向地址是否已切换为Azure网站域名,确认认证流程能正常跳转回Swagger页面。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:21:06