所以我试图在azure AD上设置一个应用程序,除其他外可以删除用户。
我已经注册了应用程序并使用客户端ID和secert来获取访问令牌。
我能够授予应用程序创建用户的权限,并且工作正常,但是当我通过图形API删除时,我获得了403不足的权限来完成操作。
我在图形休息API上尝试这个。我试图删除的用户也是通过其余调用完成的。用户与应用程序位于同一租户中,因此我不会尝试从多个租户中删除用户。
似乎我需要做的是给应用程序全局管理员或公司管理员权限,但我在哪里和/或如何做到这一点。
任何帮助将不胜感激。
答案 0 :(得分:4)
看看我的回答here。
您可以提升应用程序在租户中的访问级别 通过将该应用程序的服务主体添加到
Company Administrator
目录角色。这将使应用程序相同 作为公司管理员的权限级别,谁可以做到 任何东西。您可以按照任何类型的相同说明进行操作 目录角色取决于您要提供的访问级别 这个应用程序。请注意,这只会影响您的应用在您的租户中的访问权限。
此外,您必须已经是租户的公司管理员才能遵循这些说明。
要进行更改,您需要安装Azure Active Directory PowerShell Module。
安装模块后,请向租户进行身份验证 您的管理员帐户:
Connect-MSOLService
然后我们需要获取服务主体的对象ID 想要提升,并为您的租户提供公司管理员角色。
按应用ID GUID搜索服务主体:
$sp = Get-MsolServicePrincipal -AppPrincipalId <App ID GUID>
按名称搜索目录角色
$role = Get-MsolRole -RoleName "Company Administrator"
现在我们可以使用
Add-MsolRoleMember
命令将此角色添加到 服务负责人。Add-MsolRoleMember -RoleObjectId $role.ObjectId -RoleMemberType ServicePrincipal -RoleMemberObjectId $sp.ObjectId
要检查一切是否正常,请让我们回复所有成员 公司管理员角色:
Get-MsolRoleMember -RoleObjectId $role.ObjectId
您应该在该列表中看到您的应用,其中
RoleMemberType
是ServicePrincipal
,DisplayName
是您的名字 应用现在您的应用程序应该能够执行任何Graph API调用 公司管理员可以做的,所有这些都没有用户登录, 使用客户端凭据流程。
请告诉我这是否有帮助!
答案 1 :(得分:2)
更新:
以上答案已更新为使用Azure Active Directory V2 PowerShell
如果尚未安装
AzureAD
模块,则需要安装它。有关该模块的更多信息,请参见Azure Active Directory PowerShell Module Version for Graph for Azure AD administrative tasks或直接运行:
Install-Module AzureAD
一旦安装了模块,请使用管理员帐户向租户进行身份验证:
Connect-AzureAD
然后,我们需要获取我们要提升的服务主体,以及您的租户的公司管理员角色。
$sp = Get-AzureRmADServicePrincipal | Where DisplayName -eq '<service-principal-name>'
按名称搜索目录角色
$role = Get-AzureADDirectoryRole | Where DisplayName -eq 'Company Administrator'
现在,我们可以使用
Add-AzureADDirectoryRoleMember
命令将此角色添加到服务主体中。
Add-AzureADDirectoryRoleMember -ObjectId $role.ObjectId -RefObjectId $sp.Id
要检查一切是否正常,请找回公司管理员角色的所有成员:
Get-AzureADDirectoryRoleMember -ObjectId $role.ObjectId
您应该在该列表中看到您的应用程序,其中DisplayName是您的应用程序名称。
现在,您的应用程序应该能够使用客户端凭据流执行公司管理员可以执行的所有Graph API调用,而无需用户登录。