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

时间:2017-03-02 08:17:45

标签: powershell azure-active-directory azure-ad-graph-api

我已在我的租户/目录中注册了AAD应用程序,并且我想在仅应用程序上下文中调用Graph API。 (使用客户端凭据流程)

在进行某些AAD Graph API调用时,我收到错误:

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

我想在此租户的上下文中为此应用程序提供对Graph API的完全访问权限。

或者

我想向我的租户授予此应用程序权限,这些权限目前不受AAD Graph API公开的权限支持。

1 个答案:

答案 0 :(得分:3)

您可以通过将该应用程序的服务主体添加到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

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

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

请告诉我这是否有帮助!