我正在尝试使用Graph Api删除Azure AD上的用户,但每次我尝试时都遇到错误说
没有足够的权限来完成操作。
在对found进行一些研究之后,我们必须将应用程序添加到Azure上的“公司管理员”角色,以便删除用户工作。 当我尝试添加角色时,我会遇到错误。
Add-MsolRoleMember:此角色不存在。检查名称,然后重试。 在行:1个字符:1 + Add-MsolRoleMember -RoleName“公司管理员”-RoleMemberType ServicePrin ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:OperationStopped:(:) [Add-MsolRoleMember],MicrosoftOnlineException + FullyQualifiedErrorId:Microsoft.Online.Administration.Automation.RoleNotFoundException,Microsoft.Online.Admini stration.Automation.AddRoleMember
答案 0 :(得分:0)
我相信您应该可以使用RoleObjectId
中的Add-MsolRoleMember
参数轻松解决此问题。
我在blog post here中使用MSOL PowerShell模块完全覆盖了如何执行此操作,并使用几个步骤首先获取Company Administrator
角色的对象ID,然后将其分配给服务负责人。
请注意,这只会影响您的应用在您的租户中的访问权限。
此外,您必须已经是租户的公司管理员才能遵循这些说明。
要进行更改,您需要安装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 :(得分:0)
Shawn Tabrize的解决方案之外。我们可以获取令牌,该令牌包含调用Graph API的相应权限。例如,如果您要求使用Microsoft Graph REST,请Directory.AccessAsUser.All
(请参阅)。在这种情况下,您需要使用该租户的管理员来获取此访问令牌。
要检查令牌是否包含正确的权限,我们可以从here解码它。