You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8 Blazor Web App添加Azure Entra认证失败求助

Blazor Web App(WASM交互式渲染)关联Azure Entra认证问题解决

这个场景完全支持,不少开发者已经成功实现,你遇到的问题大概率是VS连接服务工具的适配问题,而非场景本身不支持。以下是正确配置路径和排查要点:

正确配置姿势(别单独操作Client/Server子项目)

直接从根Blazor Web App项目入手配置,不要单独给Client或Server子项目用「连接服务」:

  • 右键根项目 → 「添加」→「身份验证」
  • 选择「Microsoft Identity Platform」,下一步选「单页应用(SPA)」(对应WASM认证模式)
  • 关联你的Azure Entra租户和已创建的应用注册,完成配置后,系统会自动搞定所有必要设置:包括Client项目的appsettings.json认证配置、Program.cs的认证服务注入,还有共享组件的登录逻辑完善

你之前操作失败的原因

  • 单独给Client项目用「连接服务」:目前VS的连接服务工具对Blazor Web App的WASM子项目支持不完善,只能生成基础的登录组件,没法自动完成Program.cs的服务注入和appsettings.json的核心配置,导致流程中断
  • 给Server项目配置:Server项目默认是Cookie认证模式,和WASM需要的OAuth2/OpenID Connect模式不匹配,完全满足不了你的需求

手动补全配置(若不想重新走流程)

要是已经试过连接服务但没配全,可以手动补以下关键内容:

  1. 在Client项目的Program.cs中添加认证服务:
    builder.Services.AddMsalAuthentication(options =>
    {
        builder.Configuration.Bind("AzureAd", options.ProviderOptions.Authentication);
        // 按需添加你需要的API权限范围
        options.ProviderOptions.DefaultAccessTokenScopes.Add("https://{你的租户ID}.onmicrosoft.com/{你的API范围}/api/user_impersonation");
    });
    
  2. 在Client项目的appsettings.json中添加Azure Entra配置:
    {
      "AzureAd": {
        "Authority": "https://login.microsoftonline.com/{你的租户ID}",
        "ClientId": "{你的客户端ID}",
        "ValidateAuthority": true
      }
    }
    
  3. 在Client项目的Routes.razor里,用<CascadingAuthenticationState>包裹所有路由内容,同时引入<AuthorizeRouteView>和<RedirectToLogin>组件,确保认证状态能全局传递

总结

这个场景是官方支持的,你遇到的只是工具适配问题,按照上面的正确流程配置就能成功实现WASM模式下的Azure Entra认证。

内容的提问来源于stack exchange,提问作者YMC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 20:33:12