部署Blazor客户端与服务端到Azure后,Azure B2C跳转localhost登录问题
Blazor Server + Azure B2C 部署后认证跳转异常问题解决
问题根源总结
- 部署到Azure Web App后仍跳转localhost:应用未正确读取生产环境站点URL,或未处理Azure反向代理的HTTPS请求,导致生成HTTP回调地址
redirect_uri_mismatch错误:自动创建的两个应用注册(服务端/客户端)的重定向URL配置不匹配,或Azure B2C缓存未更新- 修改配置后仍跳旧地址:Azure B2C应用注册配置存在缓存,需强制刷新
具体解决步骤
1. 修正生产环境认证配置
- 检查生产环境的
appsettings.json或Azure Web App的应用程序设置,确保AzureAdB2C节点的RedirectUri为生产环境的HTTPS地址:"AzureAdB2C": { "Instance": "https://<你的B2C租户名>.b2clogin.com/", "Domain": "<你的B2C域名>", "ClientId": "<服务端应用注册ID>", "ClientSecret": "<服务端应用密钥>", "SignUpSignInPolicyId": "<你的用户流ID>", "RedirectUri": "https://<你的Web App域名>/signin-oidc" } - 在Azure Web App的应用程序设置中添加
ASPNETCORE_FORWARDEDHEADERS_ENABLED = true,确保应用识别Azure反向代理传递的HTTPS请求,避免生成HTTP回调地址。
2. 正确配置两个应用注册的重定向URL
Azure自动创建的两个应用注册分工明确,需分别配置对应环境的重定向URL:
- 服务端应用注册:重定向URL设置为
https://<你的Web App域名>/signin-oidc(本地测试可追加https://localhost:<端口>/signin-oidc) - 客户端应用注册:重定向URL设置为
https://<你的Web App域名>/authentication/login-callback(本地测试可追加https://localhost:<端口>/authentication/login-callback) - 清理两个注册中多余的localhost条目,只保留当前环境需要的地址。
3. 清除Azure B2C与本地缓存
- 强制刷新B2C配置缓存:进入Azure B2C门户的对应应用注册→认证页面,临时添加一个无效重定向URL(比如
https://temp.com),保存后再删除并重新保存,等待5-10分钟让缓存生效。 - 清除本地浏览器缓存:删除Cookie、本地存储和会话存储,避免残留旧认证会话导致跳转旧地址。
- 重启Azure Web App:确保应用加载最新配置,而非启动时缓存的旧参数。
4. 排查配置加载问题
- 确认发布时未将本地的
launchsettings.json配置带入生产环境,生产环境应使用独立的appsettings.Production.json或Azure应用程序设置。 - 开启Azure Web App的诊断日志,查看应用启动时的认证配置加载日志,验证
RedirectUri是否正确读取了生产地址。
内容的提问来源于stack exchange,提问作者iCollect.it Ltd
相关产品推荐
相关产品推荐

