从graph Rest api获取应用程序权限

问题描述 投票:0回答:1

我注册了一个应用程序,允许(或不允许)在用户中执行 CRUD 操作。我想知道该应用程序在 azure 中是否具有这些权限。

我尝试使用多个端点(应用程序、服务主体等),我获得了信息,但没有获得 API 权限。

我想看看我的应用程序是否具有 User.ReadWrite.All 权限。

我怎样才能得到它?我应该使用什么休息端点?要获取它,是否需要任何额外的许可?

提前非常感谢。

我尝试使用多个端点:

但我从来没有得到这些信息。

azure azure-active-directory azure-rest-api
1个回答
0
投票

我注册了一个 Azure AD 应用程序并授予了 API 权限,如下所示:

enter image description here

首先,获取此服务主体的对象 ID,该对象 ID 可以在 企业应用程序 中找到,具有相同的名称:

enter image description here

现在,您可以运行下面的图形 API 调用,使用 appRoleId 检索 Application 权限,如下所示:

GET https://graph.microsoft.com/v1.0/servicePrincipals/spObjID/appRoleAssignments

回复:

enter image description here

要了解这些 Application 权限的名称,您需要使用不同的 API 调用来获取带有

appRoles
数据的 MS Graph 服务主体:

GET https://graph.microsoft.com/v1.0/servicePrincipals(appId='00000003-0000-0000-c000-000000000000')?$select=appRoles

回复:

enter image description here

或者,您可以运行下面的 Microsoft Graph PowerShell 脚本,该脚本给出 Application 权限名称作为响应,如下所示:

Connect-MgGraph -Scope "Application.Read.All"

$spObjId = "spObjectId"
$servicePrincipal = Get-MgServicePrincipal -Filter "appId eq '00000003-0000-0000-c000-000000000000'" -Property "appRoles"
$appRoleAssignments = Get-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $spObjId
$permissions = @()

# Map AppRoleId to permission names
foreach ($assignment in $appRoleAssignments) {
    $appRoleId = $assignment.AppRoleId
    $matchedAppRole = $servicePrincipal.AppRoles | Where-Object { $_.Id -eq $appRoleId }
    if ($matchedAppRole) {
        $permissions += $matchedAppRole.Value
    }
}

Write-Host -ForegroundColor Yellow "`nMS Graph permissions of 'Application' type granted to application are :"
foreach ($permission in $permissions) {
    Write-Host -ForegroundColor Green "- $permission"
}

回复:

enter image description here

参考: 列出授予服务主体的 appRoleAssignments - Microsoft Graph

© www.soinside.com 2019 - 2024. All rights reserved.