如何授予我的应用程序对我的租户的 AAD 图 API 的完全访问权限?

How can I grant my application full access to the AAD Graph API for my tenant?

我已经在我的 Tenant/Directory 中注册了一个 AAD 应用程序,我想在 App Only 上下文中调用图形 API。 (使用客户端凭证流程)

在进行某些 AAD Graph API 调用时,出现错误:

"odata.error":{
    "code":"Authorization_RequestDenied",
    "message":{
        "lang":"en","value":"Insufficient privileges to complete the operation."
    }
}

我想在我的租户上下文中授予此应用程序对图表 API 的完全访问权限。

我想将此应用程序权限授予我的租户,但 AAD Graph API 公开的权限目前不支持该权限。

您可以通过将应用程序的服务主体添加到 Company Administrator 目录角色来提升该应用程序在租户中的访问级别。这将为应用程序提供与公司管理员相同级别的权限,公司管理员可以执行任何操作。对于任何类型的目录角色,您都可以按照这些相同的说明进行操作,具体取决于您要授予此应用程序的访问级别。

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

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

为了进行更改,您需要安装 Azure Active Directory PowerShell Module

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

Connect-MSOLService

然后我们需要获取我们要提升的服务主体的对象 ID,以及您租户的公司管理员角色。

按 App 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

您应该会在该列表中看到您的应用程序,其中 RoleMemberTypeServicePrincipalDisplayName 是您的应用程序的名称。

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

如果有帮助请告诉我!