Blazor服务端应用部署Azure App Service后Azure B2C认证重定向到localhost问题
Azure B2C 认证 Blazor 服务端应用部署后重定向异常问题解决方案
1 重定向到 localhost 问题修复
- 首先更新 Azure AD B2C 应用注册的重定向 URI:新增你的 Azure App Service 公网域名拼接
/signin-oidc的地址(例如https://<你的应用名>.azurewebsites.net/signin-oidc),平台类型选择 Web,删除不必要的 localhost 测试重定向地址避免优先级冲突。 - 禁止在代码中硬编码重定向地址:不要在 OIDC 配置中写死
RedirectUri为 localhost 值,统一从配置文件/App Service 应用参数中读取该配置。 - 配置反向代理转发头:Blazor 服务端运行在 App Service 反向代理后,默认无法识别公网域名和 HTTPS 协议,需要做两处配置:
在Program.cs中添加转发头配置,注意要放在app.UseAuthentication()之前生效:
在 Azure App Service 的「配置」-「应用程序设置」中新增参数builder.Services.Configure<ForwardedHeadersOptions>(options => { options.ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto; options.KnownNetworks.Clear(); options.KnownProxies.Clear(); }); // 放在中间件管道最前端,至少在身份认证中间件之前 app.UseForwardedHeaders();ASPNETCORE_FORWARDEDHEADERS_ENABLED,值设为true,保存后会自动重启应用。
2 「无法对 Azure AD B2C 进行身份验证」警告修复
该警告本质是认证配置错误,使用了普通 Azure AD 的认证逻辑而非 B2C 专属逻辑:
- 确认依赖包正确:项目引用的是
Microsoft.Identity.Web.UINuGet 包,不要使用旧版的Microsoft.AspNetCore.Authentication.AzureAD.UI包,后者仅支持普通 Azure AD 不支持 B2C。 - 确认配置结构正确:
appsettings.json中的认证配置需包含 B2C 专属的实例、域、用户流参数,示例如下:"AzureAdB2C": { "Instance": "https://mycompanyb2c.b2clogin.com/", "ClientId": "你的B2C应用客户端ID", "Domain": "mycompanyb2c.onmicrosoft.com", "SignUpSignInPolicyId": "b2c_1_myapp_signin", "CallbackPath": "/signin-oidc" } - 确认认证注入逻辑正确:
Program.cs中使用 B2C 专属的注入方法,不要使用普通 AAD 的注入逻辑:builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureAdB2C")); - 排查应用注册属性:确认该应用注册的「颁发者URL」配置为带用户流的 B2C 地址,而非普通 Azure AD 的地址。
3 生效验证
所有配置修改完成后,重启 Azure App Service,清空浏览器缓存后重新访问应用即可正常跳转至 B2C 登录页,登录后回调到 App Service 公网地址。
内容的提问来源于stack exchange,提问作者David Shochet
相关产品推荐
相关产品推荐

