具有全局管理员权限的Azure AD应用程序

具有全局管理员权限的Azure AD应用程序,azure,azure-active-directory,azure-ad-b2c,azure-ad-graph-api,Azure,Azure Active Directory,Azure Ad B2c,Azure Ad Graph Api,因此,我正在尝试在azure广告上设置一个应用程序,该应用程序可以删除用户 我已注册应用程序,并使用客户端id和secert获取访问令牌 我能够授予应用程序创建用户的权限,这很好,但是当我通过graph API进行删除时,我得到403个权限,没有足够的权限来完成操作 我正在通过graph rest API尝试这一点。我试图删除的用户也是通过rest调用创建的。用户与应用程序位于同一租户中,因此我不会尝试从多个租户中删除用户 似乎我需要做的是给予应用程序全局管理员或公司管理员权限,但我正在研究在哪

因此,我正在尝试在azure广告上设置一个应用程序,该应用程序可以删除用户

我已注册应用程序,并使用客户端id和secert获取访问令牌

我能够授予应用程序创建用户的权限,这很好,但是当我通过graph API进行删除时,我得到403个权限,没有足够的权限来完成操作

我正在通过graph rest API尝试这一点。我试图删除的用户也是通过rest调用创建的。用户与应用程序位于同一租户中,因此我不会尝试从多个租户中删除用户

似乎我需要做的是给予应用程序全局管理员或公司管理员权限,但我正在研究在哪里以及如何做到这一点

任何帮助都将不胜感激

看看我的答案

您可以提高应用程序在租户中的访问级别 通过将该应用程序的服务主体添加到公司管理员目录角色。这将使应用程序具有相同的性能 权限级别为公司管理员,谁可以做 任何东西您可以按照这些相同的说明进行任何类型的操作 目录角色,具体取决于要授予的访问级别 这个应用程序

请注意,这只会影响应用程序在租户中的访问权限

此外,您必须已经是租户的公司管理员,才能遵守这些说明

为了进行更改,您需要安装

安装模块后,请使用向租户进行身份验证 您的管理员帐户:

Connect-MSOLService
然后,我们需要获取服务主体的对象ID 希望提升租户的公司管理员角色

按应用ID GUID搜索服务主体:

$sp = Get-MsolServicePrincipal -AppPrincipalId <App ID GUID>
现在我们可以使用addmsolrolemember命令将此角色添加到 服务负责人

Add-MsolRoleMember -RoleObjectId $role.ObjectId -RoleMemberType ServicePrincipal -RoleMemberObjectId $sp.ObjectId
为了检查一切是否正常,让我们把团队的所有成员都找回来 公司管理员角色:

Get-MsolRoleMember -RoleObjectId $role.ObjectId
您应该在该列表中看到您的应用程序,其中RoleMemberType 是ServicePrincipal,DisplayName是您的 应用程序

现在,您的应用程序应该能够执行任何图形API调用 公司管理员可以做的,所有这些都不需要用户登录, 使用客户端凭据流

让我知道这是否有帮助

看看我的答案

您可以提高应用程序在租户中的访问级别 通过将该应用程序的服务主体添加到公司管理员目录角色。这将使应用程序具有相同的性能 权限级别为公司管理员,谁可以做 任何东西您可以按照这些相同的说明进行任何类型的操作 目录角色,具体取决于要授予的访问级别 这个应用程序

请注意,这只会影响应用程序在租户中的访问权限

此外,您必须已经是租户的公司管理员,才能遵守这些说明

为了进行更改,您需要安装

安装模块后,请使用向租户进行身份验证 您的管理员帐户:

Connect-MSOLService
然后,我们需要获取服务主体的对象ID 希望提升租户的公司管理员角色

按应用ID GUID搜索服务主体:

$sp = Get-MsolServicePrincipal -AppPrincipalId <App ID GUID>
现在我们可以使用addmsolrolemember命令将此角色添加到 服务负责人

Add-MsolRoleMember -RoleObjectId $role.ObjectId -RoleMemberType ServicePrincipal -RoleMemberObjectId $sp.ObjectId
为了检查一切是否正常,让我们把团队的所有成员都找回来 公司管理员角色:

Get-MsolRoleMember -RoleObjectId $role.ObjectId
您应该在该列表中看到您的应用程序,其中RoleMemberType 是ServicePrincipal,DisplayName是您的 应用程序

现在,您的应用程序应该能够执行任何图形API调用 公司管理员可以做的,所有这些都不需要用户登录, 使用客户端凭据流

让我知道这是否有帮助

更新:

以上答案已更新为使用

如果尚未安装AzureAD模块,则需要安装它。有关该模块的更多信息,请参阅,或直接运行:

安装模块后,使用管理员帐户向租户进行身份验证:

Connect-MSOLService
然后我们需要获得我们想要提升的服务主体,以及租户的公司管理员角色

现在,我们可以使用addazureaddirectoryrolember命令将此角色添加到服务主体

Add-MsolRoleMember -RoleObjectId $role.ObjectId -RoleMemberType ServicePrincipal -RoleMemberObjectId $sp.ObjectId
要检查一切是否正常,请返回公司管理员角色的所有成员:

Get-MsolRoleMember -RoleObjectId $role.ObjectId
您应该在该列表中看到您的应用程序,其中DisplayName是您的应用程序的名称

现在,您的应用程序应该能够执行由 公司管理员可以使用客户端凭据流执行所有操作,无需用户登录。

更新:

以上答案已更新为使用

如果尚未安装AzureAD模块,则需要安装它。有关该模块的更多信息,请参阅,或直接运行:

安装模块后,使用管理员帐户向租户进行身份验证:

Connect-MSOLService
然后我们需要获得我们想要提升的服务主体,以及租户的公司管理员角色

现在,我们可以使用addazureaddirectoryrolember命令将此角色添加到服务主体

Add-MsolRoleMember -RoleObjectId $role.ObjectId -RoleMemberType ServicePrincipal -RoleMemberObjectId $sp.ObjectId
要检查一切是否正常,请返回公司管理员角色的所有成员:

Get-MsolRoleMember -RoleObjectId $role.ObjectId
您应该在该列表中看到您的应用程序,其中DisplayName是您的应用程序的名称


现在,您的应用程序应该能够使用客户端凭据流执行公司管理员可以执行的任何图形API调用,所有这些调用都不需要用户登录。

不过,要小心这一点,公司管理员基本上是AAD中的最高角色,允许应用程序做任何它想做的事情。您也可以使用新的AAD cmdlet来执行此操作,无需使用旧的。我认为这会起作用,但似乎我无法保持打开的会话。我运行了connectazuread命令,但随后它关闭了会话。当我能想到这一点时,我会更新,但这看起来很有希望。尝试使用旧的MSOL cmdlet。我发现它们更为一致。这与网络有关,但一旦我离开我们的私人网络,我就能够听从你的命令。我使用了azureAD cmdlet的2.0版本,但您的步骤使其正常工作。我将编辑您的响应,以便为可能遇到此问题的其他人提供更新版本的命令。谢谢你的帮助!!不过要小心,公司管理员基本上是AAD中的最高角色,允许应用程序做任何它想做的事情。您也可以使用新的AAD cmdlet来执行此操作,无需使用旧的。我认为这会起作用,但似乎我无法保持打开的会话。我运行了connectazuread命令,但随后它关闭了会话。当我能想到这一点时,我会更新,但这看起来很有希望。尝试使用旧的MSOL cmdlet。我发现它们更为一致。这与网络有关,但一旦我离开我们的私人网络,我就能够听从你的命令。我使用了azureAD cmdlet的2.0版本,但您的步骤使其正常工作。我将编辑您的响应,以便为可能遇到此问题的其他人提供更新版本的命令。谢谢你的帮助!!在本例中,我必须将$sp.Id更改为$sp.ObjectId,如下所示:添加AzureAddirectoryMember-ObjectId$role.ObjectId-ReObjectId$sp.ObjectId在本例中,我必须将$sp.Id更改为$sp.ObjectId,如下所示:添加AzureAddirectoryMember-ObjectId$role.ObjectId-ReObjectId$sp.ObjectId