Blazor WASM中Entra ID认证后code处理的404问题排查
问题排查与解决建议
可能原因及对应解决步骤
1. Azure静态Web应用缺少SPA fallback路由配置
Blazor WASM是单页应用,所有路由请求都需要指向index.html,否则非根路径的回调URL会返回404。
- 在项目根目录创建
staticwebapp.config.json文件,添加以下配置:
{ "routes": [ { "route": "/*", "serve": "/index.html", "statusCode": 200 } ] }
- 确保该文件被包含在部署包中,重新部署到Azure静态Web应用。
2. 代码中MSAL配置与Entra ID应用注册不匹配
- 检查
appsettings.json中的AzureAd配置:RedirectUri必须和Entra ID应用注册里的回调URL完全一致(包括https、域名、路径,无多余斜杠)Authority格式应为https://login.microsoftonline.com/{你的租户ID}/v2.0,确认租户ID正确且使用v2.0端点
- 验证Program.cs中的MSAL初始化代码,确保绑定了正确的配置:
builder.Services.AddMsalAuthentication(options => { builder.Configuration.Bind("AzureAd", options.ProviderOptions.Authentication); // 按需添加所需的访问令牌范围 options.ProviderOptions.DefaultAccessTokenScopes.Add("https://graph.microsoft.com/User.Read"); });
3. Entra ID应用注册平台类型错误
- 登录Entra ID管理中心,进入应用注册的"平台配置"页面:
- 确认添加的是SPA平台,而非Web或其他类型
- 删除其他无关的平台配置,避免流程冲突
4. 浏览器缓存或会话干扰
- 使用浏览器隐私窗口重新测试认证流程,排除旧的AD B2C缓存或会话数据影响
- 若问题依旧,清除浏览器的所有缓存和Cookie后重试
5. MSAL包版本或.NET 10兼容性问题
- 确认
Microsoft.Authentication.WebAssembly.Msal包版本为10.0.2,且项目中所有相关的Microsoft身份认证包版本一致 - 尝试清理项目的NuGet缓存,重新安装依赖后部署
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

