我已在租户/目录中注册了 AAD 应用程序,并且我想在仅应用程序上下文中调用图形 API。 (使用客户端凭据流程)
在进行某些 AAD Graph API 调用时,我收到错误:
"odata.error":{
"code":"Authorization_RequestDenied",
"message":{
"lang":"en","value":"Insufficient privileges to complete the operation."
}
}
我想在我的租户上下文中授予此应用程序对 Graph API 的完全访问权限。
或者
我想向我的租户授予此应用程序权限,但 AAD Graph API 公开的权限目前不支持这些权限。
最佳答案
您可以通过将应用程序的服务主体添加到公司管理员
目录角色来提升应用程序在租户中的访问级别。这将为应用程序提供与公司管理员相同级别的权限,后者可以执行任何操作。对于任何类型的目录角色,您都可以按照这些相同的说明进行操作,具体取决于您要授予此应用程序的访问级别。
请注意,这只会影响您的应用在租户中的访问权限。
此外,您必须已经是租户的公司管理员才能遵循这些说明。
为了进行更改,您需要安装 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
是您的应用程序的名称。
现在,您的应用程序应该能够使用客户端凭据流程执行公司管理员可以执行的任何图形 API 调用,而无需用户登录。
请告诉我这是否有帮助!
关于powershell - 如何为我的租户授予我的应用程序对 AAD Graph API 的完全访问权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42550070/