我已经撞墙好几天了。我有一个设置,其中有一个 CSP/CPV/MSP 租户(我们称之为租户 A),它通过合作伙伴中心管理 3 个租户 B、C 和 D。 (GDAP 设置已完成,所有 3 个租户均具有向 AdminAgents 安全组提供的全局管理员权限) 我希望能够自动化管理 3 个托管租户的资源。
我已经在开发人员租户(我们称之为租户 X)中注册了一个具有相当多的 Graph API 权限和合作伙伴中心 API 的 user_impersonation 权限的应用程序,以及用于身份验证的客户端密钥。我同意使用 CSP 租户(租户 A)的管理员用户帐户,并且在 CSP 租户中创建注册应用程序的服务主体,没有任何麻烦(授权代码流)。
接下来,我使用 CSP 同意 URL(此处)在托管租户 B 中为应用程序创建一个服务主体。这也是成功的,但这只能让我为生成的服务主体提供委派权限。我向租户 B 中的服务主体提供以下委派权限。
"Directory.ReadWrite.All", // Read and write directory data (e.g., users, groups)
"AppRoleAssignment.ReadWrite.All", // Read and write app role assignments
但是,对于我的用例,我需要在托管租户(租户 B)中提供此服务主体,并具有相当多的应用程序权限。所以我的问题实际上非常简单,如何使用我的应用程序必须在具有应用程序权限(例如 User.ReadWrite.All、Directory.ReadWrite.All 等)的托管租户租户 B 内提供其服务主体的这些委派权限。我不想同意使用托管租户的管理员帐户,因为这确实违背了自动化的目的。
还有一个常见问题,客户端凭证流用于生成访问令牌,其范围是使用应用程序拥有的应用程序权限。我应该如何生成范围为使用应用程序的委托权限的访问令牌(当然不需要用户交互)?
在这方面的任何帮助将不胜感激。
注意:如果您想在自动化中使用这些权限,您将需要获得每个托管租户(B、C、D)中应用程序权限的管理员同意。不幸的是,在维护 Microsoft Entra ID 安全模型的同时,无法绕过此要求。
未经创建服务主体的租户的管理员同意,无法授予应用程序权限。这意味着未经管理员同意,您无法使用委派权限向租户 B 中的服务主体授予应用程序权限。
即使您正在自动化该过程,您仍然需要管理员同意才能允许应用程序跨租户使用这些权限。这是通过
adminconsent
URL 完成的:
https://login.microsoftonline.com/TenantBTenantID/adminconsent?client_id=ClientID
否则,使用多租户应用程序并通过合作伙伴中心在您管理的所有租户(租户 B、C、D)之间动态请求权限。
用于委派权限的访问令牌(无需用户交互)