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

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

我已在租户/目录中注册了 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

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

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

请告诉我这是否有帮助!

关于powershell - 如何为我的租户授予我的应用程序对 AAD Graph API 的完全访问权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42550070/

相关文章:

azure - 无效的请求。请求格式错误或无效。从 Azure 获取访问 token 时

powershell - 如何使用 Powershell 连接到 Twitter API 并遵循参数

powershell - 从PowerShell调用Windows运行时类

powershell - 避免模​​ block 中的变量被调用者覆盖,反之亦然

azure - 如何通过Graph API仅获取User所有属性的List

microsoft-graph-api - 使用 MS Graph API 是否可以仅列出电子邮件附件而不下载其内容?

windows - powershell:get-psdrive 和 where-object

Azure AD 与 Azure DevOps 同步

azure-active-directory - 使用应用程序 token 通过 REST API 调用 Microsoft Graph

azure - Azure AD 中 guest 用户的图形 API 请求