Получите «Разрешения API» для приложения Azure AD через PowerShell - PullRequest
1 голос
/ 20 марта 2020

Для целей отчетности и мониторинга мне нравится получать информацию, отображаемую на портале Azure для приложения (Регистрация приложения) для "Полномочий API".

Я пробовал следующий код

$app = Get-AzureADApplication -ObjectId 'aa7e174d-2639-4ac7-9b11-6799466c3c9b'
$app.Oauth2Permissions

Но это дает только следующую информацию:

AdminConsentDescription : Allow the application to access foobar_HVV on behalf of the signed-in user.
AdminConsentDisplayName : Access foobar_HVV
Id                      : h1285f9d5-b00d-4bdb-979d-c4d6487fa000
IsEnabled               : True
Type                    : User
UserConsentDescription  : Allow the application to access foobar_HVV on your behalf.
UserConsentDisplayName  : Access foobar_HVV
Value                   : user_impersonation

Но «Разрешения API» для приложения «foobar_HVV» показывают совершенно разные разрешения. Особенно «Тип» (Делегат, Приложение) и «Статус» для разрешения необходимы для моего отчета.

1 Ответ

1 голос
/ 23 марта 2020

Если вы хотите получить API permissions, вам нужно использовать следующую команду:

$app = Get-AzureADApplication -ObjectId '<object-id of the App Registration>'
$app.requiredResourceAccess | ConvertTo-Json -Depth 3

enter image description here

ResourceAppId - это Application ID субъекта службы API, например Microsoft Graph, ResourceAccess включает разрешения, добавленные в приложение, Scope означает Delegated permission, Role означает Application permission.

Мои разрешения API:

enter image description here

Чтобы проверить подробности разрешений API, вам необходимо воспользоваться приведенной ниже командой. Например, мы хотим узнать подробности разрешения, для которого Id равно 5b567255-7703-4780-807c-7be8301ae99b на скриншоте, Type равно Role, поэтому нам нужно использовать $sp.AppRoles.

$sp = Get-AzureADServicePrincipal -All $true | Where-Object {$_.AppId -eq '00000003-0000-0000-c000-000000000000'}
$sp.AppRoles | Where-Object {$_.Id -eq '5b567255-7703-4780-807c-7be8301ae99b'}
* 1034. *enter image description here

Если вы хотите получить Delegated permission (Type is Scope), нам нужно использовать:

$sp = Get-AzureADServicePrincipal -All $true | Where-Object {$_.AppId -eq '00000003-0000-0000-c000-000000000000'}
$sp.Oauth2Permissions | Where-Object {$_.Id -eq 'e1fe6dd8-ba31-4d61-89e7-88639da4683d'}

enter image description here

Для проверки Status прямого пути нет, вам нужно проверить, что разрешения, предоставленные администратором субъекта службы, соответствуют приложению AD в вашем клиенте AAD.

Сначала получите принципала обслуживания $appsp:

$app = Get-AzureADApplication -ObjectId '<object-id of the App Registration>'
$appsp = Get-AzureADServicePrincipal -All $true | Where-Object {$_.AppId -eq $app.AppId}

Получите Delegated permissions, который был предоставлен (Status is Granted):

Get-AzureADServicePrincipalOAuth2PermissionGrant -ObjectId $appsp.ObjectId -All $true | ConvertTo-Json

enter image description here

* ResourceId - это Object Id субъекта службы API:

enter image description here

Получите Application permissions, который был предоставлен (Status is Granted):

Get-AzureADServiceAppRoleAssignedTo -ObjectId $appsp.ObjectId | ConvertTo-Json

Id - это Id в ResourceAccess в первый снимок экрана.

enter image description here

Если разрешение не было предоставлено (Status равно * 10 95 *), вы не получите разрешение с помощью приведенной выше команды.

Например, я добавляю новый Application permission в портал, затем снова запускаю команду, мы все еще можем получить разрешение, которое было предоставлено.

enter image description here

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...