【问题标题】:How can I grant my application full access to the AAD Graph API for my tenant? [duplicate]如何授予我的应用程序对租户的 AAD Graph API 的完全访问权限? [复制]
【发布时间】:2017-03-02 16:17:45
【问题描述】:

我已经在我的租户/目录中注册了一个 AAD 应用程序,并且我想在 App Only 上下文中调用 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 公开的权限不支持这些权限。

【问题讨论】:

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


    【解决方案1】:

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

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

    如果这有帮助,请告诉我!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-11
      • 2012-05-15
      • 1970-01-01
      • 2019-07-15
      • 1970-01-01
      • 2021-01-01
      • 1970-01-01
      • 2018-02-06
      相关资源
      最近更新 更多