关于Entra External ID及资源部署的技术咨询
针对Entra External ID + Blazor WASM + 自研API场景的问题解答
核心问题逐一拆解
1. 客户租户部署资源提示无订阅,是否该在此部署?
客户租户(Entra External ID专属租户)仅用于身份管理,本身不关联Azure订阅——你之前在mainTenant订阅里做的“关联外部标识”,只是指定该订阅用于支付External Identities的服务费用,不是给客户租户分配资源部署权限。
正确做法:所有基础设施(Azure静态Web App、App Service)都部署在mainTenant的订阅下,客户租户里只需要维护身份配置(应用注册、用户数据),不需要部署任何云资源。
2. mainTenant的资源能否引用客户租户的应用注册?
完全可以,关键是配置时要明确指向客户租户的身份服务:
- Blazor WASM的认证配置:指定客户租户的租户ID或租户域名(而非mainTenant的),同时确保客户租户里的Blazor应用注册已配置正确的重定向URI(指向静态Web App的域名)。
- App Service托管的API:在身份验证设置中,选择“Microsoft Entra ID”作为身份提供者,并指定客户租户的租户ID;同时在客户租户的API应用注册里,将mainTenant的App Service服务主体添加为授权访问对象(或配置允许的受众为API的应用ID URI)。
- 验证逻辑:API收到的令牌发行者(iss)应为客户租户的Entra ID端点,确保令牌有效性。
3. API用托管身份调用Graph编辑客户租户用户数据?
默认情况下,mainTenant的托管身份仅能访问mainTenant的资源,要访问客户租户的Graph API,需按以下步骤配置:
- 在客户租户中创建一个专用的应用注册(或复用现有API的应用注册),添加Graph API的应用权限(如
User.ReadWrite.All),并完成客户租户全局管理员的权限同意。 - 在客户租户中,将mainTenant的App Service托管身份的服务主体添加为该应用注册的权限使用者(或在应用注册的“API权限”里添加托管身份的访问权限)。
- API调用Graph时,指定客户租户的Graph端点(例如使用
https://graph.microsoft.com/v1.0/tenants/{客户租户ID}/users路径,或在获取令牌时指定客户租户ID作为租户参数),确保获取的令牌是针对客户租户的。
4. 个人Outlook账户看不到客户租户?
客户租户是用mainTenant的admin@mainTenant账号创建的,个人Outlook账户默认不在客户租户的用户列表中,需手动添加:
- 用
admin@mainTenant账号登录客户租户的Entra门户。 - 进入“外部标识”→“来宾用户”,添加你的个人Outlook账户为来宾用户。
- 给该来宾用户分配合适的角色(如“租户读取者”或“全局管理员”),之后就能在Azure门户和Entra门户中切换到客户租户。
整体协作逻辑梳理
- mainTenant:托管所有云基础设施(静态Web App、App Service),承担所有费用(包括基础设施和External Identities服务)。
- 客户租户:专属身份管理容器,存放外部用户数据、Blazor/API的应用注册,负责处理用户认证流程。
- 流程链路:Blazor WASM引导用户到客户租户Entra ID登录→获取客户租户颁发的令牌→调用mainTenant的API→API验证令牌有效性→通过配置好的权限调用客户租户的Graph API编辑用户数据。
内容的提问来源于stack exchange,提问作者baouss
相关产品推荐
相关产品推荐

