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

未通过CLI创建的Blazor WebAssembly托管应用接入Azure AD认证咨询

问题答复

两个方案都可以实现,优先推荐半自动导入的方式,出错概率更低。

方案1:半自动导入(推荐)

  • 先用CLI创建一个和你现有项目结构完全匹配的带Azure AD认证的参考项目,执行命令:dotnet new blazorwasm --hosted -au SingleOrg -o BlazorAuthDemo,参数里的租户、客户端ID可以先随便填,后续替换成你自己的即可。
  • 生成参考项目后,分别对比客户端、服务端、共享项目的文件结构,把你现有项目缺失的文件(比如客户端的Authentication.razor、LoginDisplay.razor,服务端的认证相关配置、登录回调处理逻辑)直接复制到你现有项目的对应路径。
  • 对比两个项目的Program.cs代码、NuGet依赖项、appsettings.json配置节点,逐一补齐差异即可。

方案2:手动补全

完全手动补全也可以正常运行,需要分别处理服务端和客户端的内容:

服务端项目修改

  • 先安装必备NuGet包:Microsoft.AspNetCore.Authentication.JwtBearer、Microsoft.Identity.Web
  • 在appsettings.json中添加Azure AD配置节,填写你已经注册好的服务端应用的TenantId、ClientId、Instance等参数
  • 在Program.cs中添加认证服务注册和中间件配置,在控制器注册逻辑后添加JWT承载认证的相关代码,后续按顺序启用app.UseAuthentication()和app.UseAuthorization()中间件
  • 按需添加登录、登出相关的接口实现即可

客户端项目修改

  • 安装必备NuGet包:Microsoft.AspNetCore.Components.WebAssembly.Authentication、Microsoft.Authentication.WebAssembly.Msal
  • 在wwwroot/appsettings.json中添加MSAL配置节,填写你注册好的客户端应用的ClientId、Authority等参数
  • 在Program.cs中注册MSAL认证服务,配置业务HttpClient自动附加访问令牌的逻辑
  • 新增Authentication.razor页面,处理登录、登出、Azure AD回调的路由逻辑
  • 在MainLayout.razor中引入LoginDisplay组件,展示当前登录用户信息和登录/登出入口
  • 在App.razor中将默认的RouteView替换为AuthorizeRouteView,添加未授权用户的跳转逻辑

注意:修改完成后需要检查原有业务接口的[Authorize]标签配置,避免原有接口的访问逻辑受影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:06:04