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

Blazor WASM+Web API+Microsoft Graph的Azure租户选型:Entra ID还是Azure AD B2C?

方案选型与Azure租户配置指南

你这个场景直接选**Entra ID(原Azure AD)**就对了,完全没必要用Azure AD B2C,原因和具体配置步骤、交付建议给你理清楚:

一、为什么不选Azure AD B2C?

  • 你的用户都是同一组织内部的,Entra ID是专为企业内部身份管理设计的,适配性远高于面向外部消费者的B2C
  • B2C的核心定位是支持外部用户注册/自定义登录流程,它的用户池和组织Entra ID租户是隔离的,天生对Microsoft Graph的委派权限支持有限——这就是你之前遇到API无法调用Graph拿邮件权限的根本原因
  • Entra ID自带完善的企业级身份治理、权限管控能力,组织后续自行维护起来更顺畅

二、Entra ID租户具体配置步骤

1. 注册Blazor WASM前端应用

  • 在Entra ID中创建**单页应用(SPA)**类型的应用注册
    • 重定向URI设置为你的Blazor WASM认证回调地址,比如https://your-ui-domain/authentication/login-callback
    • 启用ID令牌和访问令牌支持(MSAL依赖这两种令牌完成登录和API调用)
    • 配置API权限:添加对后端.NET API的委派权限(后续需要在后端API的应用注册中定义权限范围)

2. 注册后端.NET API应用

  • 在Entra ID中创建Web API类型的应用注册
    • 设置API范围,比如api://your-api-client-id/access_as_user,这个范围会被前端请求访问令牌时指定
    • 配置API权限:添加Microsoft Graph的委派权限(比如Mail.Read,这是获取邮件数据必需的),然后点击授予管理员同意(组织内部应用只需一次管理员同意,所有用户即可使用)
    • 可选:启用应用角色,实现基于角色的权限管控

3. 代码层适配配置

  • Blazor WASM前端:使用Microsoft.Authentication.WebAssembly.Msal包,在配置文件中指定Entra ID租户ID、前端应用客户端ID、后端API的权限范围,实现登录和令牌自动携带
  • 后端API:使用Microsoft.Identity.Web包,验证前端传递的访问令牌,再通过GraphServiceClient调用Microsoft Graph,示例代码如下:
    services.AddMicrosoftIdentityWebApiAuthentication(Configuration)
            .EnableTokenAcquisitionToCallDownstreamApi()
            .AddMicrosoftGraph(options =>
            {
                options.Scopes = new[] { "Mail.Read" };
            })
            .AddInMemoryTokenCaches();
    

三、便于组织自行管理的交付建议

  • 整理清晰的配置清单:列出需要创建的应用注册、权限范围、管理员同意步骤,用 step-by-step 的方式让组织管理员能自行操作
  • 打包基础设施代码:用ARM模板或Bicep将应用注册、权限配置等内容写成代码,组织可以一键部署到自己的Entra ID租户
  • 提供参数修改指南:明确告诉组织需要替换配置文件中的租户ID、客户端ID等参数,适配他们自己的环境

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 15:02:41