如何让Entra外部租户的客户账户访问内部租户Web API?
解决外部客户账户访问内部租户Web API的问题
问题原因
AADSTS500207错误是因为Entra External ID for Customers的客户账户属于专属租户的外部用户类型,默认无法直接访问其他租户(内部租户A)的资源,必须显式配置跨租户信任关系。
解决方案步骤
1. 在内部租户A中配置对外部租户B的信任
- 登录租户A的Entra管理门户,进入企业应用程序,点击新建应用,选择从库中添加,搜索外部租户B中SPA应用的名称,将该应用添加到租户A的企业应用列表。
- 或者直接进入租户A的Web API应用注册页面,在已授权的客户端应用中,添加租户B的SPA应用的
clientId,并勾选对应的API权限范围。
2. 配置租户A的跨租户访问规则
- 在租户A的Entra门户中,进入跨租户访问设置 -> 组织设置,添加外部租户B的租户ID,将其访问权限设置为允许访问。
- 确认针对用户和应用的访问规则中,没有阻止来自租户B的客户类型账户访问。
3. 完善应用权限配置
- 在租户B的SPA应用注册页面,进入API权限,点击添加权限,选择我的组织使用的API,搜索内部租户A的Web API,添加所需权限,并完成管理员同意(如果API要求管理员级别的同意)。
- 确认租户A的Web API应用注册的
signInAudience已设置为AzureADandPersonalMicrosoftAccount,且公开API中已正确定义权限范围。
4. 调整MSAL调用逻辑
- 保持MSAL的
authority为租户B的CIAM地址(https://xxxx.ciamlogin.com),确保外部客户能正常登录。 - 调用
acquireTokenSilent时,指定租户A Web API的完整权限范围,示例代码:acquireTokenSilent({ scopes: ["api://<租户A Web API的clientId>/<权限范围名称>"], account: currentAccount })
关键注意事项
- 不能切换到
organizations或common权威,因为这两个权威仅支持工作/学校账户或个人Microsoft账户,无法兼容Entra External ID的客户账户登录。 - 所有跨租户的权限配置必须完成管理员同意,否则用户端会出现权限不足的错误。
内容的提问来源于stack exchange,提问作者Jenny Pettersson
相关产品推荐
相关产品推荐

