Blazor WebAssembly独立应用部署Azure静态Web应用后认证失败
解决Azure静态Web应用中Blazor WASM AAD B2C认证404问题
问题根源
Blazor WebAssembly属于单页应用(SPA),所有路由逻辑由前端处理,但Azure静态Web应用默认仅会响应存在对应静态文件的路径请求。当AAD B2C认证完成后跳转至/login-callback时,由于该路径没有对应的静态文件,就会触发404错误。
必须配置的项
1. 添加SPA路由回退配置文件
在项目根目录创建staticwebapp.config.json文件,写入以下规则,让所有非静态资源的请求都转发到index.html:
{ "routes": [ { "route": "/*", "serve": "/index.html", "statusCode": 200 } ], "navigationFallback": { "rewrite": "/index.html", "exclude": ["/images/*.{png,jpg,gif}", "/css/*", "/js/*"] } }
这个配置会让Azure静态Web应用将包括/login-callback在内的所有前端路由请求,都交给Blazor应用处理,确保认证回调逻辑能正常执行。
2. 核对AAD B2C应用注册的URI配置
确认AAD B2C中你的应用注册里,重定向URI和注销URI已添加部署后的静态Web应用域名地址:
- 重定向URI:
https://<你的静态Web应用域名>/authentication/login-callback - 注销URI:
https://<你的静态Web应用域名>/authentication/logout-callback
注意保留本地测试用的URI(如https://localhost:5001/...),同时新增生产环境的地址,两者都需要配置。
3. 检查Azure静态Web应用的身份验证设置
进入Azure门户的静态Web应用资源,在身份验证菜单中:
- 确认已正确关联你的AAD B2C租户和对应的用户流
- 验证回调路径设置为
/authentication/login-callback,需与Blazor应用中认证组件的配置完全一致
4. 清理浏览器缓存
部署后浏览器可能缓存了旧的路由规则或配置,按Ctrl+Shift+R强制刷新页面后,再测试登录流程。
额外检查项
- 确认
appsettings.json中的B2C配置参数(Authority、ClientId、RedirectUri等)已更新为生产环境的值,而非本地测试地址 - 若使用自定义域名,需确保域名已正确绑定到静态Web应用,且SSL证书状态正常
内容的提问来源于stack exchange,提问作者Chris Arnold
相关产品推荐
相关产品推荐

