Azure Front Door后Blazor Server的App Service BaseUri错误及认证问题求助
解决Azure Front Door后Blazor Server App Service的域名识别问题
你的问题核心是App Service未正确识别Front Door转发的原始自定义域名,导致认证重定向地址错误、NavigationManager指向异常。按以下步骤修复:
1. 配置App Service的Front Door相关应用设置
直接在App Service的「配置」→「应用设置」中添加以下项:
WEBSITE_LOAD_BALANCER=AzureFrontDoor:告知App Service流量来自Front Door,信任其传递的转发头ForwardedHeaders_Enabled=true:启用转发头处理功能ForwardedHeaders_TrustedProxies=*(生产环境建议替换为Front Door官方IP段,提升安全性):信任代理传递的头信息
2. 在Blazor Server中配置转发头中间件
打开Program.cs,在服务配置和中间件注册部分添加代码,确保应用能读取Front Door传来的原始请求信息:
var builder = WebApplication.CreateBuilder(args); // 配置转发头选项 builder.Services.Configure<ForwardedHeadersOptions>(options => { options.ForwardedHeaders = Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.XForwardedFor | Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.XForwardedProto; // 生产环境替换为Front Door的实际IP地址,测试环境可临时用* options.KnownProxies.Add(IPAddress.Parse("FrontDoor的IP地址")); }); // 其他服务注册代码... var app = builder.Build(); // 必须在UseAuthentication之前注册该中间件 app.UseForwardedHeaders(); app.UseAuthentication(); app.UseAuthorization(); // 其他中间件配置...
3. 更新Azure AD B2C的重定向URI
登录Azure门户找到你的AD B2C租户,进入「应用注册」找到对应的Blazor应用,在「身份验证」模块中:
- 添加新的重定向URI:
https://myapp.mydomain.com/signin-oidc(根据你的实际认证回调路径调整) - 删除旧的
https://myapp.azurewebsites.net/signin-oidc(若不再需要)
4. 验证修复效果
完成上述配置后,NavigationManager.BaseUri会自动指向自定义域名。若仍有异常,可在组件中打印NavigationManager.Uri查看当前请求的完整URL,确认转发头是否生效。
内容的提问来源于stack exchange,提问作者Niek Jannink
相关产品推荐
相关产品推荐

