Я бы предпочел скорее использовать новые командлеты Azure AD v2: https://docs.microsoft.com/en-us/powershell/azuread/v2/azureactivedirectory.
Они более универсальны, чем ARM, и позволяют вам легче задавать такие элементы, как ключи, URL-адреса ответов.
Например, чтобы добавить ответные URL-адреса:
Set-AzureADApplication -ObjectId 1048db5f-f5ff-419b-8103-1ce26f15db31 -ReplyUrls @("https://localhost:8080","https://localhost:8081")
Для добавления необходимого разрешения, вы должны выяснить пару вещей. Принцип обслуживания, на котором определены разрешения, вам понадобится его appId. (Я нашел принципала API Graph Graph от моего арендатора). Затем вам нужно найти appRole или oauth2Permission, который вы хотите потребовать. Вам понадобится его идентификатор.
Затем добавить делегированного разрешение:
$req = New-Object -TypeName "Microsoft.Open.AzureAD.Model.RequiredResourceAccess"
$acc1 = New-Object -TypeName "Microsoft.Open.AzureAD.Model.ResourceAccess" -ArgumentList "e1fe6dd8-ba31-4d61-89e7-88639da4683d","Scope"
$acc2 = New-Object -TypeName "Microsoft.Open.AzureAD.Model.ResourceAccess" -ArgumentList "798ee544-9d2d-430c-a058-570e29e34338","Role"
$req.ResourceAccess = $acc1,$acc2
$req.ResourceAppId = "00000003-0000-0000-c000-000000000000"
Set-AzureADApplication -ObjectId 1048db5f-f5ff-419b-8103-1ce26f15db31 -RequiredResourceAccess $req
ResourceAppId является APPID сервисного принципала для API Microsoft Graph. Объект ResourceAccess в этом случае содержит два требования. Первый содержит идентификатор требуемого мной oauth2Permission, а также указание, что это делегированное разрешение. Второй содержит разрешение приложения, id - это идентификатор объекта appRole.
Scope = делегировано полномочие
Роль = разрешение Применение
Чтобы найти услуги принципала вам нужно, вы можете запустить:
Get-AzureADServicePrincipal
ObjectId AppId DisplayName
-------- ----- -----------
f004dde9-b40f-4259-91be-e257009a444a 00000003-0000-0000-c000-000000000000 Microsoft Graph
Тогда получите принципала и перечислить делегированные полномочия:
$msGraph = Get-AzureADServicePrincipal -ObjectId f004dde9-b40f-4259-91be-e257009a444a
$msGraph.Oauth2Permissions | select Id,AdminConsentDisplayName,Value
Id AdminConsentDisplayName Value
-- ----------------------- -----
e1fe6dd8-ba31-4d61-89e7-88639da4683d Sign in and read user profile User.Read
Или если вам необходимо разрешение для приложения:
$msGraph.AppRoles | select Id,DisplayName,Value
Id DisplayName Value
-- ----------- -----
798ee544-9d2d-430c-a058-570e29e34338 Read calendars in all mailboxes Calendars.Read
Идентификатор является важным.
Для сценариев приятно, что идентификатор приложения для служб MS всегда одинаковый. Идентификаторы разрешений также одинаковы для всех арендаторов.Так, например:
- Microsoft Graph API
- AppId: 00000003-0000-0000-c000-000000000000
- Azure AD Graph API
- AppId: 00000002-0000- 0000-c000-000000000000
спасибо, что ответили. Не могли бы вы предоставить дополнительную информацию о линии, где вы сказали: «Тогда вам нужно найти appRole или oauth2Permissions, которые вы хотите требовать» *? – jdave
См. Мое редактирование. Я добавил некоторые примеры команд, которые я использовал для получения разрешений Microsoft Graph API. – juunas
@junnas - ах спасибо! Что делать, если я создаю совершенно новое приложение и нет принципа обслуживания, на котором определены разрешения? Если бы я хотел создать новые разрешения для приложения - есть ли другой поток? – jdave